Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何分析线程负载平衡?_C_Linux_Multithreading_Profiling_Multicore - Fatal编程技术网

C 如何分析线程负载平衡?

C 如何分析线程负载平衡?,c,linux,multithreading,profiling,multicore,C,Linux,Multithreading,Profiling,Multicore,我需要了解我的多线程程序的负载平衡特性。是否有任何工具可以为我提供信息,例如绘制此图?我需要一些简单的东西,例如,可以给我每个内核的信息,但不是英特尔VTune之类的。。。那太臃肿了,连看都会痛。看一看,你也可以使用Gnu gprof它不性感,但能起作用:) 编辑: 您可以在线程化环境中使用gprof: EDIT2:可能也有帮助您也可以使用Linux内核中支持性能计数器的官方实现。除了读取性能计数器外,它还允许访问一些其他指标,如上下文切换、CPU迁移、页面错误等 不幸的是,官方维基没有包含太多

我需要了解我的多线程程序的负载平衡特性。是否有任何工具可以为我提供信息,例如绘制此图?我需要一些简单的东西,例如,可以给我每个内核的信息,但不是英特尔VTune之类的。。。那太臃肿了,连看都会痛。

看一看,你也可以使用
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技术确实在英特尔上起作用。