Performance 如何访问英特尔CPU计数器

Performance 如何访问英特尔CPU计数器,performance,cpu,Performance,Cpu,有没有什么小工具可以让我访问Intel CPU计数器收集的数据(比如一级/二级缓存未命中、分支预测失败……你知道,在现代Core2 CPU上有上百个) 它必须在Windows上工作(同时能够在Solaris、FreeBSD、Linux和MacOSX上使用它当然很好)。您没有写过您正在寻找的应用程序或库 对于Windows,有“英特尔VTune”。但这并不是一个很小的工具。对于linux,我使用了oprofile,它可以在没有内核补丁的情况下工作。在OSX上,Shark允许您从PMCs获取数据。除

有没有什么小工具可以让我访问Intel CPU计数器收集的数据(比如一级/二级缓存未命中、分支预测失败……你知道,在现代Core2 CPU上有上百个)


它必须在Windows上工作(同时能够在Solaris、FreeBSD、Linux和MacOSX上使用它当然很好)。

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


对于Windows,有“英特尔VTune”。但这并不是一个很小的工具。对于linux,我使用了oprofile,它可以在没有内核补丁的情况下工作。

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

试试这个
它是一个完整的库,允许您读取任何CPU计数器数据,可在Windows和Linux[以及其他操作系统]上运行。

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

在windows前端,Visual Studio 2010 Premium附带了performance explorer。如果在检测模式下运行任何项目或二进制文件,则可以访问硬件事件,例如失效的指令

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


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

这个线程似乎有点旧,但如果您仍然感兴趣,我最近在Linux中使用rdmsr和wrmsr编写了一篇关于这个主题的文章。它只处理Intel uncore for Westmile上的性能计数器,但我描述的过程可能会帮助您了解您需要什么,如果您还没有。我确信Windows对RDMSR和WRMSR有一些等效的程序或函数调用。问题是您需要使用0(内核模式)才能读取MSR。我不知道如何在Windows中做到这一点。我将无法帮助您回答任何Windows问题,但如果您有任何问题,我可以回答一些与MSR相关的问题。但我决不是专家。

这条线看起来很旧。但是,上面提到的所有计数器都可以在上找到。这些计数器可以用作Microsoft Perfmon插件或命令提示符界面。“英特尔PCM”提供二级和三级缓存命中率、缓存未命中率等信息。

请查看“英特尔PCM(性能计数器监视器)”工具,该工具正是您想要执行的操作

链接:


英特尔PCM提供了丰富的API,允许您插入代码。此外,到目前为止,PCM也是读取非核心事件的唯一工具

好的,同时我找到了PAPI图书馆。但这或多或少只是一个Linux版本(仅在Sparc上支持Solaris),需要一些Linux内核补丁-是的,我知道Linus说性能监控是两个真正的弱点之一。我发现perfmon2和rabbit(一个死项目)也是Linux专用的。到目前为止,windows还没有成功。我正在寻找一个库,因为我想编写一个检测分析器,记录指令失效事件,而不是百万秒。是的,也许还有其他一些东西,所以你可以把它看作是我想自己编写的一个类似VTune的小工具。我认为没有库。性能监视器寄存器通过rdmsr和wrmsr指令访问。首先,您可以阅读“英特尔64和IA-32体系结构软件开发人员手册”(谷歌最新版本)第3B卷,第18.11ff章。这里精确地描述了访问性能计数器所需的操作。谢谢,但我自己从事开发和销售IDE的业务。所以这显然对我没有帮助。