2012-10-02 109 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

相關問題