【问题标题】:Tool to plot thread context switch绘制线程上下文切换的工具
【发布时间】:2012-05-14 13:54:31
【问题描述】:

我正在寻找一种用于性能分析和调试的工具,它可以绘制线程上下文切换,也许还有信号量状态、事件,...... 我在嵌入式世界中使用过类似的工具,但我现在正在 Windows 或 Linux 平台上寻找相同的工具。 我要分析的应用程序是一个 c++ 多线程应用程序。 有没有人为此推荐一个工具?

【问题讨论】:

  • 你看过intel vtune吗?
  • 你和Hristo都提到了,所以我试了一下。谢谢。

标签: c++ multithreading profiling


【解决方案1】:

对于 Linux 和 Solaris,Oracle Solaris Studio 中的 Oracle 线程分析器(尽管它的名字也可以在 Linux 上运行)可以深入了解多线程应用程序的性能问题。此外,Oracle Solaris Studio 仍然免费

Intel VTune Amplifier XE(以前称为 Intel Thread Analyzer)可在 Linux 和 Windows 上使用。

【讨论】:

  • 我看到其他帖子提到了 VTune,但认为它不擅长绘图。它实际上非常好。特别是“锁定和等待分析”。我使用它并完成了工作。感谢您确认它是首选工具。
  • 英特尔 VTune Amplifier XE 不会绘制上下文切换(至少我在时间线上没有看到它们,没有打开它的选项,文档也没有说明此功能)。它的作用是检测上下文切换,但它只是为了显示更准确的线程执行时间。 绘制在时间线上的是同步所有权流。
【解决方案2】:

在 Windows 上,您可以使用 xperf 工具来收集和绘制上下文切换。这是一个免费工具,是Windows Performance Analysis Developer Center 的一部分。对我来说效果很好,请参见屏幕截图。

【讨论】:

    【解决方案3】:

    Windows 性能监视器?

    perfmon.exe

    我认为它是大多数 Windows 平台的标准配置,并提供有关上下文切换的信息等等。

    恐怕只有 Windows。

    【讨论】:

      【解决方案4】:

      这可能不是您考虑的工具,但它简单、快速且有用。

      使用 GDB 时,可以输入:

      info threads
      

      查看有关正在运行的线程的信息。接下来,您可以切换到所选线程并打印回溯以查看它的位置:

      thread <thread-id>
      bt
      

      【讨论】:

      • 如何用它来检测上下文切换?
      猜你喜欢
      • 2011-07-23
      • 1970-01-01
      • 2017-09-09
      • 2011-07-27
      • 2018-09-22
      • 1970-01-01
      • 2012-01-12
      • 1970-01-01
      相关资源
      最近更新 更多