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

时间:2011-08-18 13:01:53

标签: c++ c linux multithreading multicore

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

4 个答案:

答案 0 :(得分:10)

如果要在内部计算程序某些部分的硬件事件(不启动任何第三方工具),则可以使用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好文档:http://perfsuite.ncsa.illinois.edu/publications/LJ135/x27.html

如果您可以在外部执行此操作,则可以使用现代Linux的perf命令。

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

答案 1 :(得分:3)

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

只需下载内核源代码并查看它。或者,或者通过google看看这个库:

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

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

答案 2 :(得分:2)

AMD的官方申请名为CodeAnalyst

答案 3 :(得分:0)

已检出oprofile

http://oprofile.sourceforge.net/