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

Using Hardware Performance Counters in Linux

本文关键字:硬件 性能计数器 Linux      更新时间:2023-10-16

我想使用Intel和AMD x86_64多核处理器自带的Hardware Performance Counters来计算程序中已退役的store的数量。我希望每个线程分别计算其退休存储。这能做到吗?如果是这样,如何在C/c++ ?

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

Perfctr快速入门:http://www.ale.csce.kyushu-u.ac.jp/~satoshi/how_to_use_perfctr.htm

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

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

如果您可以在外部执行此操作,那么在现代Linux中有一个perf命令。

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

最好的方法是像osgx提到的那样在linux中使用perf,因为它是linux内核的一部分。但它也可以在C/c++代码中调用,并且不需要外部性能状态调用。

请下载内核源代码并查看它。或者也可以看看这个库,我想通过谷歌:

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

是perfmon2项目的一部分,但被设计为与perf一起工作。看一下perf_examples目录,您就会明白了。这就是我如何从我的C代码内处理性能调用。

AMD的官方应用程序名为CodeAnalyst

检查过oprofile了吗?

http://oprofile.sourceforge.net/