【发布时间】:2015-12-29 08:11:24
【问题描述】:
我正在使用 perf 分析一些奇怪的程序运行时行为,并在 IRC 上提供了一些帮助。默认情况下perf stat 只列出几个计数器,而不是那些感兴趣的计数器,所以有一个烦人的“在输出中包含这个计数器”的乒乓球,我将它添加到通过-e 传递的参数列表中并粘贴结果。
有没有办法让perf stat 简单地发出所有计数器,以便专家需要帮助我只需要一份报告?
【问题讨论】:
-
我猜这对stackoverflow.com/questions/14674463/… 也有帮助。
-
Give this a try. 事实上,您认为 CPU 事件计数器会告诉您任何有用的信息,这意味着您可能需要一种不同的方式来看待它。
-
因此,在名义上的报告之后,您得出的结论是这些事件并不有趣。你不能使用所有的计数器,但即使是这样,我认为你会被太多的信息淹没。您应该首先检查您的程序是否使用过多的 CPU,是否存在缓存或 TLB 相关问题,或者是否花费时间等待来自 IO 的信息(例如,它是否大量访问文件系统?)。它是否管理不好内存分配?不妨试试 valgrind 及其
massif工具。 -
Joachim Breitner,对于 Intel CPU,有来自 Intel 的 pmu-tools 开源项目,能够编码、列出和选择现代 CPU 的许多硬件事件(还有很好的 toplev.py 脚本,其中包含许多有用预定义集)。在
perfmon2/libpfm4项目中还有showevtinfo工具,它将列出多个 AMD/Intel CPU 的批次事件:bnikolic.co.uk/blog/hpc-prof-events.html“如何监控所有 CPU 性能事件”(“事件总数:2332 可用, 166 supported"),但你不应该将它们全部传递给 stat。