在Linux中使用硬件性能计数器

我想使用Intel和AMD x86_64多核处理器附带的硬件性能计数器来计算程序退役的商店数量。 我希望每个线程分别计算退休的商店。 可以这样做吗? 如果是这样,如何在C / C ++?

如果要在内部计算某些程序部分的硬件事件(无需启动任何第三方工具),则可以使用Perfctr或PAPI。

Perfctr quickstart: http : //www.ale.csce.kyushu-u.ac.jp/~satoshi/how_to_use_perfctr.htm

PAPI主页: http : //icl.cs.utk.edu/papi/

PerfSuite好doc: http ://perfsuite.ncsa.illinois.edu/publications/LJ135/x27.html

如果你能从外部做到这一点,那么现代Linux就有一个perf命令。

perf wiki: https : //perf.wiki.kernel.org/index.php/Main_Page

最好的办法是在linux中使用perf作为osgx提到的,因为它是linux内核的一部分。 但它也可以在C / C ++代码中调用,并且不需要它作为外部perf stat调用。

只要下载内核源代码,并看看它。 或者,也可以看看这个库,我认为谷歌:

http://perfmon2.sourceforge.net/docs_v4.html

它是perfmon2项目的一部分,但设计用于perf。 看看perf_examples目录,你会明白的。 这就是我从我的C代码中处理perf调用的方式。

AMD的官方应用程序名为CodeAnalyst

检出了oprofile呢?

http://oprofile.sourceforge.net/