C 如何分析线程负载平衡?
我需要了解我的多线程程序的负载平衡特性。是否有任何工具可以为我提供信息,例如绘制此图?我需要一些简单的东西,例如,可以给我每个内核的信息,但不是英特尔VTune之类的。。。那太臃肿了,连看都会痛。看一看,你也可以使用C 如何分析线程负载平衡?,c,linux,multithreading,profiling,multicore,C,Linux,Multithreading,Profiling,Multicore,我需要了解我的多线程程序的负载平衡特性。是否有任何工具可以为我提供信息,例如绘制此图?我需要一些简单的东西,例如,可以给我每个内核的信息,但不是英特尔VTune之类的。。。那太臃肿了,连看都会痛。看一看,你也可以使用Gnu gprof它不性感,但能起作用:) 编辑: 您可以在线程化环境中使用gprof: EDIT2:可能也有帮助您也可以使用Linux内核中支持性能计数器的官方实现。除了读取性能计数器外,它还允许访问一些其他指标,如上下文切换、CPU迁移、页面错误等 不幸的是,官方维基没有包含太多
Gnu gprof
它不性感,但能起作用:)
编辑:
您可以在线程化环境中使用gprof
:
EDIT2:可能也有帮助您也可以使用Linux内核中支持性能计数器的官方实现。除了读取性能计数器外,它还允许访问一些其他指标,如上下文切换、CPU迁移、页面错误等
不幸的是,官方维基没有包含太多的信息。但是您可以查看有关如何使用perf中包含的不同工具的更多信息。对于研究主题,我使用了以下命令: ps-AL-o lwp、fname、psr | grep ammp 正在研究的应用程序是ammp,它使用的线程数与内核数相同。该命令返回每个线程所在的核心。多次执行此命令,您将看到给定线程如何在内核中移动,以及负载平衡算法如何工作
我希望你觉得有用 我只对AMD的CodeAnalyst的功能进行了初步的了解,但到目前为止我发现的是令人印象深刻的,尤其是所有的性能计数器,并将它们融入到详细的画面中。至于按线程评测,我主要编写在专用内核上长时间运行的大规模并行应用程序,这可能不适用于您的东西 它似乎对自己的CPU需求相当吝啬。我不知道它是否会在英特尔CPU上配置。有一个Linux版本
转一转 我对VTune有很好的体验,并且有一个免费的个人使用版本。为什么会觉得臃肿?它的使用非常简单。您使用的是哪种线程?
ps-L-o lwp、fname、psr
会更好,因为它只显示您感兴趣的进程的信息,所以无需grep(创建附加进程)我在英特尔机器上:(但我只听说过CA的好消息。谢谢。你确定它在英特尔CPU上不起作用吗?我知道一些英特尔ICC运行时库会检测非英特尔机器并启用较慢的代码。我发现这篇文章声称某些CA技术确实在英特尔上起作用。