2

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

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

所以我谦虚地问这里是否有人,他对这种事情有任何经验,可以帮助我一点。

提前致谢。

4

1 回答 1

3

用于读取性能计数器的最广泛使用的库是性能 API (PAPI)。PAPI 实际上是两个 API(高级低级)。我倾向于使用低级别的,因为我发现它更直观,但这可能只是我。

PAPI 中有两种类型的事件。 预设事件应该与平台无关,尽管它们可能会根据内部计算方式的不同而略有不同。它们确实包括 TLB 未命中和内存停顿,所以也许你可以从那里开始。如果这不符合您的需要,您可能需要查看本地事件,这些事件特定于您的特定硬件,通常包括硬件可以计算的每个事件。用于papi_native_aval获取这些列表。

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

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

于 2009-05-24T00:56:19.993 回答