【问题标题】:How to profile thread load balancing?如何分析线程负载平衡?
【发布时间】:2012-08-28 14:28:27
【问题描述】:

我需要查看我的多线程程序的负载平衡特性。是否有任何工具可以为我提供信息,例如策划这个?例如,我需要一些简单的东西,可以为我提供每个内核的信息,但不是英特尔 VTune 之类的......

【问题讨论】:

  • 我对 VTune 有很好的体验,并且有一个免费供个人使用的版本。为什么会有胀气的感觉?使用起来相当简单。
  • 你用的是什么线程?

标签: c linux multithreading profiling multicore


【解决方案1】:

看看Linux Trace Toolkit - next generation,你也可以使用Gnu gprof,它并不性感,但它可以工作:)

编辑: 您可以在线程环境中使用gprofUsing gprof with pthreads

EDIT2:Oprofile 也可能有帮助

【讨论】:

    【解决方案2】:

    您也可以使用perf,这是在 Linux 内核中支持性能计数器的官方实现。除了读取性能计数器之外,它还允许访问其他一些指标,例如上下文切换、CPU 迁移、页面错误等。

    很遗憾,官方 wiki 并没有包含太多信息。但是您可以查看this page,了解有关如何使用 perf 中包含的不同工具的更多信息。

    【讨论】:

      【解决方案3】:

      为了研究主题,我使用了以下命令:

      ps -AL -o lwp,fname,psr | grep 安普

      正在研究的应用程序是 ammp,它使用的线程数与内核数相同。该命令返回每个线程所在的核心。多次执行此命令,您将看到给定线程如何通过内核以及负载平衡算法如何工作。

      我希望你觉得有用。

      【讨论】:

      • ps -L -o lwp,fname,psr <pid> 会更好,因为它只会显示您感兴趣的进程的信息,因此无需 grep(创建额外的进程)
      【解决方案4】:

      我只触及了 AMD 的 CodeAnalyst 功能的皮毛,但到目前为止我发现的东西令人印象深刻,尤其是所有性能计数器,并将它们纳入详细的图片中。至于每线程分析,我主要编写在专用内核上长时间运行的大规模并行应用程序,这可能不适用于您的东西。

      就其自身的 CPU 需求而言,它显得相当吝啬。我不知道它是否会在英特尔 CPU 上进行配置。有Linux版本。

      试一试!

      【讨论】:

      • 我在 Intel 机器上。 :( 但我只听说过关于 CA 的好消息。谢谢。
      • 你确定它不能在英特尔 CPU 上工作吗?我知道一些英特尔 ICC 运行时库会检测非英特尔机器并启用较慢的代码。我发现这篇帖子 virtualdub.org/blog/pivot/entry.php?id=288 声称某些 CA 技术确实适用于英特尔。
      猜你喜欢
      • 2017-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-01
      • 2017-09-21
      • 1970-01-01
      • 2012-07-22
      • 2022-01-10
      相关资源
      最近更新 更多