6

最近我正在挖掘性能计数器周围的东西。我用谷歌搜索了 perfmon2 和 libpfm4 http://perfmon2.sourceforge.net/,还找到了 perf 命令https://perf.wiki.kernel.org/index.php/Main_Page并附带了 linux 的内核源代码。 perf 源代码链接我玩过 libpfm4 和 perf 命令,而 libpfm4 似乎只能提供 cpu 的周期数或指令数。

我找不到任何示例代码或可运行示例来说明如何检索 L1-dcache-loads 之类的信息,这些信息似乎可以通过使用 perf 获得,我在 stackoverflow 上查找了它并找到了讨论 perf 命令和 libpfm4 之间关系的文章:使用硬件性能Linux 中的计数器 人们说 libpfm4 的作者对 perf 命令的贡献者之一 Ingo 很生气,但后来他实际上帮助审查了 perf 的代码。

那么有人可以用 perf 命令解释 perfmon2 或 libpfm4 之间的关系。我可以像使用 perf 命令一样使用 libpfm4 检索 L1-dcache 之类的信息吗?非常感谢!

4

1 回答 1

7

perf 命令提供要测量的常见性能计数器事件的子集,例如处理器时钟周期、指令计数和缓存事件度量。但是,大多数处理器提供许多其他实现特定的硬件事件,例如浮点操作和微体系结构事件(例如由于硬件资源限制而导致的停顿)。要访问那些特定于实现的事件,需要使用 perf (http://lxr.linux.no/#linux+v3.6/tools/perf/Documentation/perf-record.txt#L33) 中的原始事件,它可以乏味。libpfm4 提供了一种映射机制来按名称引用那些特定于实现的硬件事件。papi 使用 libpfm。你可以看看 papi 如何使用 libpfm 来访问那些特定于实现的事件 (http://icl.cs.utk.edu/projects/papi/)

于 2012-10-02T18:26:52.980 回答