CPU utilization analysis and thread error checking may not be in one tool. To find streaming errors, a huge memory access analysis is needed. I can call valngrind helgrind http://valgrind.org/docs/manual/hg-manual.html and google threadSanitizer, tsan (based on helgrind) http://code.google.com/p/data-race-test/ wiki / ThreadSanitizer . Both tools perform temporary code checks using the valgrind libVEX dynamic code modification scheme. This leads to a significant slowdown, for example. for Helgrind (from hg-manual):
Performance can be very low. Slowdowns of the order of 100: 1 are not unusual. Limitations to improve performance are limited.
To use the CPU, you must use a profiler, which affects the performance of the application only slightly (up to 5-10%), for example. oprofile or linux perf https://perf.wiki.kernel.org/index.php/Main_Page
If threads in an application are added using OpenMP, there are solutions for analyzing OMP thread balancing, for example. The Intel openMP implementation may record some information, as shown here .gvs (GuideView openmp file format)
osgx
source share