2009-05-24 28 views
2

我一直在为我的论文处理这个问题。 目标是开发专门用于Windows 2K8服务器的.net服务器监控工具。到目前为止,我可以访问的只有软件性能计数器。意思是那些通过perfmon和WMI类可用的。如何编写硬件性能计数器

但是,还有一个问题是我需要能够监视诸如发生的TLB未命中数量或当前内存带宽等事情。这就是我被卡住的地方...... 由于没有标准的.net方法来获取这些计数器,我一直在阅读一些来自开源软件如Oprofile的代码。但因为我不知道我在找什么,所以在这方面没有取得太多的进展。

所以我虚心地问是否有人在这里,谁有这种事情的经验,可以帮助我一点点。

在此先感谢。

回答

3

用于读取性能计数器的应用最广泛的库是Performance API (PAPI)。 PAPI实际上是两个API(high-levellow-level)。我倾向于使用低级别的,因为我觉得它更直观,但那可能就是我。

PAPI中有两种类型的事件。 Preset events应该是平台不可知的,尽管它们可以根据它们在内部的计数方式巧妙地不同。他们确实包括TLB失误和记忆档,所以也许你可以从那里开始。如果这不符合您的需求,您可能需要查看本地事件,这些事件特定于您的特定硬件,并且通常包括硬件可以计数的所有事件。使用papi_native_aval获取这些列表。

PAPI支持Windows,但我从来没有尝试过。我无法在专门提到Windows 2008的文档/自述文件中找到任何内容,但至少也许可以通过源代码查看如何访问所需的计数器,即使无法直接访问它们。

如果您需要更多,那么可以看看perfmon2,如果可用的话,PAPI的新版本可以在Linux上使用。

+0

非常感谢,我一定会马上看到这个! 如果我还有其他问题,我会回来^^ – 2009-05-24 11:18:19