在Linux下使用硬件性能计数器
Using Hardware Performance Counters in Linux
我想使用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
了吗?
相关文章:
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- 查询性能计数器限制/加快幻灯片速度
- 在Windows上读取性能数据计数器是否需要任何特殊的安全权限
- 如何以编程方式访问c/c++a-la-rdtsc中的性能计数器
- PDH性能计数器实例名称
- 查询性能计数器函数在在线判断中的使用
- 性能计数器C++的窗口时序漂移
- 错误的计数器路径,pdhAddCounter;窗口中的性能监视器
- 测试操作系统性能时,硬件开销和软件开销有什么区别
- C中ubuntu上的性能计数器库
- 不带lodctr的c++中的性能计数器
- 是否可以使用查询性能计数器(Win32,C)获取时间戳
- 从C++公开的 Windows 性能计数器始终在 perfmon 中产生"Can't load counters".exe
- Visual c++中的函数性能计数器
- 需要对"High definition time-stamps"进行一些澄清(win32,direct3d,性能计数器)
- 在Linux下使用硬件性能计数器
- 卤化物的性能计数器
- 使用性能计数器获取正常运行时间的权限问题
- 如何在C++中读取性能计数器
- 以与语言无关的方式检索性能计数器值