有没有办法可以为每个核心以编程方式访问(英特尔)硬件计数器? (也就是说,没有perf
,perfmon
或valgrind
,我应该添加“简单”,所以没有PAPI
,例如)我想知道(对于每个核心)有多少L1-LLC缓存命中/错过它(=在该核心上运行的某个程序)。这适用于Linux 3.2.0-32,C和使用GCC。
答案 0 :(得分:1)
处理器中的性能计数器无法从“用户模式”代码中读取,因此您需要某种内核模块来执行此操作。一旦你有了它,它并不是非常难,有许多MSR。
您也可以使用/ dev / cpu / core-number / msr在没有内核模块的情况下读取值。
描述你如何做到这一点的所有细节对于一个答案来说有点太多了(除非我复制'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''想要......)