2009-08-12 29 views
6

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

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

+0

好的,在此期间我找到了PAPI库。但是这或多或少只是一个Linux(仅支持Sparc上的Solaris),并且需要一些Linux内核补丁 - 是的,我知道Linus说性能监控是两个真正的弱点之一。 而我发现perfmon2和兔子(一个死了的项目),这也只是Linux。 到目前为止没有一个窗口命中。 – Lothar 2009-08-12 14:27:49

回答

0

你没有写你正在寻找一个应用程序或图书馆。

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

+0

我正在寻找一个库,因为我想编写一个记录INSTRUCTION_RETIRED事件而不是毫秒的仪器分析器。 是的,也许还有一些其他的东西,所以你可以看到它像一个小VTune像我想写我自己的工具。 – Lothar 2009-08-13 17:34:45

+0

我不认为有一个图书馆。性能监视器寄存器可通过rdmsr和wrmsr指令访问。 首先,您可以查看“Intel 64和IA-32架构软件开发人员手册”(谷歌最新版本)第3B卷第18.11章。这里正好描述了你需要访问性能计数器的内容。 – hirschhornsalz 2009-08-13 22:12:14

0

在OS X上,鲨鱼,您可以从两局获得的数据。除了英特尔的工具之外,我不确定Windows上有什么可用(VTune,如drhirsch所述)。

0

试试这个 http://icl.cs.utk.edu/papi/ 它是一个完整的库,使您可以读取任何CPU计数器的数据,工作都在Windows和Linux [和其他OS]

+0

PAPI在Windows上不起作用。 – 2017-05-04 07:03:05

1

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

在前面的窗户,Visual Studio 2010的高级版自带性能探险。如果在仪表模式下运行任何项目或二进制文件,则可以访问硬件事件,例如退休的指令。

的结果有一定的混合和不一致取决于外部因素,但它与Visual Studio完美集成在一起,你会得到每方法/模块级详细数(平均,最高,总计)上。

英特尔V-调整性能分析器本身也暴露出这些。我还没有玩过这个工具,但它可能是一个比Visual Studio 2010公开的更灵活的API。

+2

谢谢,但我的业务是开发和销售IDE的我自己。所以这显然不能帮助我。 – Lothar 2010-10-21 13:33:25

4

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

0

此线程看起来很旧。但是,上述所有计数器都可以在Intel PCM上找到。这些计数器可以用作Microsoft Perfmon插件或命令提示符界面。英特尔PCM提供的信息包括L2和L3高速缓存命中率,高速缓存未命中等。