Анализ использования ЦП и проверка ошибок потоков не могут быть в одном инструменте. Чтобы найти ошибки многопоточности, необходим огромный анализ обращений к памяти. Я могу назвать 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) формат файла