有没有像Haskell的Threadscope那样对C / C ++有良好的线程跟踪器?

时间:2011-07-24 15:45:41

标签: c multithreading

是否有免费的开源工具,如Threadscope(并且比NPTL Trace tool更新)来分析CPU利用率/线程错误?

1 个答案:

答案 0 :(得分:1)

CPU利用率分析和线程错误检查程序不能在同一工具中。要找到线程错误,需要对内存访问进行大量分析。我可以命名为valngrind的helgrind http://valgrind.org/docs/manual/hg-manual.html和google threadSanitizer,tsan(基于helgrind)http://code.google.com/p/data-race-test/wiki/ThreadSanitizer。这两个工具都通过valgrind的libVEX动态代码修改框架执行代码的运行时检测。这会导致巨大的减速,例如:对于Helgrind(来自hg-manual):

  

表现可能很差。 100:1 顺序的减速并不罕见。性能改进的范围有限。

对于CPU利用率,您应该使用分析器,它只会影响应用程序的性能(最多5-10%),例如oprofile或linux的perf https://perf.wiki.kernel.org/index.php/Main_Page

如果使用OpenMP添加应用程序中的线程,则可以使用解决方案来分析OMP线程平衡,例如:英特尔的openMP实现可以记录一些信息,如.gvs (GuideView openmp statistics) file format

所示