有没有像Haskell的Threadscope那样适用于C/C++的好的线程追踪器?

8

你能具体说明一下你想如何分析CPU利用率吗(你想知道是否使用了所有CPU吗?),以及你感兴趣的线程错误类型是哪些吗? - osgx
1个回答

2
CPU利用率分析和线程错误检查器可能不在同一个工具中。要找到线程错误,需要进行大量的内存访问分析。我可以提到valgrind的helgrindhttp://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 线程平衡,例如 Intel 的 OpenMP 实现可以记录一些信息,如此处所示 .gvs (GuideView openmp statistics) file format

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接