有没有像Threadscope这样的免费开源工具(比NPTL Trace工具更新)来分析CPU利用率/线程错误?
CPU利用率分析和线程错误检查器可以不在同一个工具中。为了找到线程错误,需要对内存访问进行大量分析。我可以命名 valngrind 的 helgrind http://valgrind.org/docs/manual/hg-manual.html和 google threadSanitizer, tsan (基于 helgrind)http://code.google.com/p/data-race-test/维基/ThreadSanitizer。这两个工具都通过 valgrind 的 libVEX 动态代码修改框架对代码进行运行时检测。这会导致速度大幅下降,例如 Helgrind(来自 hg-manual):
性能可能会很差。100:1左右的减速并不罕见。性能改进的空间有限。
对于 CPU 利用率,您应该使用分析器,它对应用程序的性能影响很小(最多 5-10%),例如oprofilelinux 的性能https://perf.wiki.kernel.org/index.php/Main_Page
如果您的应用程序中的线程是使用OpenMP添加的,则有一些解决方案可以分析OMP线程平衡,例如Intel的openMP实现可以记录一些信息,如下所示.gvs(GuideView openmp统计数据)文件格式