最近我在性能计数器周围挖掘东西。我搜索了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的周期数或指令数。
我找不到任何示例代码或可运行的示例,如何检索像L1-dcache-load这样的信息,这些信息似乎可以通过使用perf获得,我在stackoverflow上查找了它,并找到了讨论perf命令和libpfm4之间关系的文章: Using Hardware Performance Counters in Linux人们说libpfm4的作者对perf命令的贡献者Ingo之一感到愤怒,但后来他实际上帮助查看了perf的代码。
有人可以用perf命令解释perfmon2或libpfm4之间的关系。我可以使用libpfm4检索像L1-dcache这样的信息,就像使用perf命令一样。非常感谢你!
答案 0 :(得分:5)
perf命令提供常用性能计数器事件的子集,以测量诸如处理器时钟周期,指令计数和缓存事件度量。但是,大多数处理器提供许多其他特定于实现的硬件事件,例如浮点运算和微体系结构事件(例如由于硬件资源限制而导致的停顿)。要访问那些特定于实现的事件,需要在perf中使用raw事件(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/)