есть хороший трассировщик потоков для C / C ++, как Threadscope Haskell? - PullRequest
7 голосов
/ 24 июля 2011

Существует ли бесплатный инструмент с открытым исходным кодом, такой как Threadscope (и более новый, чем Инструмент трассировки NPTL ), для анализа ошибок использования ЦП / многопоточности?

1 Ответ

1 голос
/ 25 июля 2011

Анализ использования ЦП и проверка ошибок потоков не могут быть в одном инструменте. Чтобы найти ошибки многопоточности, необходим огромный анализ обращений к памяти. Я могу назвать helgrind от valngrind http://valgrind.org/docs/manual/hg-manual.html и google threadSanitizer, tsan (на основе helgrind) http://code.google.com/p/data-race-test/wiki/ThreadSanitizer. Оба инструмента выполняют инструментарий кода во время выполнения с помощью среды динамического изменения кода libVEX от valgrind. Это приводит к огромному замедлению, например, для Хельгринда (из hg-manual):

Производительность может быть очень плохой. Замедления порядка 100: 1 не являются необычными . Возможности для улучшения производительности ограничены.

Для загрузки ЦП следует использовать профилировщик, который лишь незначительно влияет на производительность приложения (до 5-10%), например. oprofile или перфорация linux https://perf.wiki.kernel.org/index.php/Main_Page

Если потоки в вашем приложении добавляются с использованием OpenMP, существуют решения для анализа балансировки потоков OMP, например, Внедрение Intel openMP может записывать некоторую информацию, как показано здесь .gvs (GuideView статистика openmp) формат файла

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...