2012-10-02 74 views
3

最近我正在挖掘性能计数器的东西。我搜索了perfmon2和libpfm4 http://perfmon2.sourceforge.net/,并且我还发现了perf命令https://perf.wiki.kernel.org/index.php/Main_Page,并发布了linux的内核源代码。 the perf source code link我玩过libpfm4和perf命令,而libpfm4似乎只能提供cpu的周期数或指令数。perf命令和perfmon2或libpfm4之间的区别是什么

我找不到任何示例代码或可运行的示例如何检索似乎可以通过使用perf获得的L1-dcache-loads信息,我在stackoverflow上查找并找到了讨论perf命令和libpfm4之间关系的文章:Using Hardware Performance Counters in Linux人们说libpfm4的作者对perf命令的贡献者之一Ingo感到愤怒,但后来他实际上帮助检查了perf的代码。

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

回答

4

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/)

+0

有一个网页[link](http:// www.hpl.hp.com/research/linux/perfmon/perfmon.php4)给出了perfmon内核接口的概述。但它表示papi基于PerfCtr接口,并且这些接口都不是官方内核源代码树的一部分。所以我没有深入研究。我只是看着papi的主页,看起来papi已经改进了很多。然而,perf命令在官方的内核源码树下,它确实提供了强大的功能。在探索其源代码之后,似乎以某种方式提取特定功能非常复杂。谢啦! – dotcomXY

相关问题