如何访问英特尔CPU计数器

时间:2009-08-12 13:30:18

标签: performance cpu

是否有任何小工具可以让我访问英特尔CPU计数器收集的数据(例如L1 / L2缓存未命中,分支预测失败......你知道在现代Core2 CPU上存在它们的数据)。

它必须在Windows上运行(虽然能够在Solaris,FreeBSD,Linux,MacOSX上使用它当然会很好)。

7 个答案:

答案 0 :(得分:4)

这个帖子看起来有点老了但是如果你还有兴趣的话,我最近在这个主题上写了howto只使用了Linux中的rdmsr和wrmsr。它只涉及Westmere的Intel uncore上的性能计数器,但我描述的过程可能会帮助你找出你需要的东西,如果你还没有。我确定Windows对RDMSR和WRMSR有一些等效的程序或函数调用。问题是您需要响铃0(内核模式)才能读取MSR。我不知道如何在Windows中这样做。我将无法帮助解决任何Windows问题,但如果您有任何问题,我可以回答一些与MSR相关的问题。我不是专家。

答案 1 :(得分:4)

查看英特尔PCM(性能计数器监视器)工具,它完全符合您的要求。

链接:https://software.intel.com/en-us/articles/intel-performance-counter-monitor-a-better-way-to-measure-cpu-utilization

英特尔PCM提供了丰富的API,可让您检测代码。此外,迄今为止,PCM也是阅读非核心事件的唯一工具。

答案 2 :(得分:1)

PAPI是一个非常有前途的领导者,但是,我相信他们在几年前就停止了对Windows(以及.NET C#)的支持。

在Windows前端,Visual Studio 2010 Premium附带了性能浏览器。如果在检测模式下运行任何项目或二进制文件,则可以访问硬件事件,例如已停用的指令。

根据外部因素,结果可能会有些混乱和不一致,但它很好地与Visual Studio集成,您可以在每个方法/模块级别获得详细计数(平均值,最大值,总数)。

英特尔V-tune性能分析器本身也公开了这些。我还没有使用过这个工具,但它可能是比Visual Studio 2010公开的更灵活的API。

答案 3 :(得分:0)

您没有写过您正在寻找的应用程序或库。

对于Windows,有英特尔VTune。但这不是一个小工具。对于linux,我使用了oprofile,它没有内核补丁。

答案 4 :(得分:0)

在OS X上,Shark允许您从PMC获取数据。除了英特尔的工具(如drhirsch所提到的VTune),我不确定Windows上有什么可用。

答案 5 :(得分:0)

试试这个 http://icl.cs.utk.edu/papi/ 它是一个完整的库,允许您读取任何CPU计数器数据,适用于Windows和Linux [以及其他操作系统]

答案 6 :(得分:0)

这个帖子看起来很旧。但是,所有上述计数器都可以在Intel PCM获得。这些计数器可以用作Microsoft Perfmon插件或命令提示符界面。英特尔PCM提供L2和L3缓存命中率,缓存未命中等信息。