gpt4 book ai didi

c# - 如何对硬件性能计数器进行编程

转载 作者:搜寻专家 更新时间:2023-10-31 02:01:16 25 4
gpt4 key购买 nike

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

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

所以我虚心请教这里是否有人对这种事情有任何经验,可以帮助我一点。

提前致谢。

最佳答案

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

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

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

如果您需要更多,也许可以看看 perfmon2 ,较新版本的 PAPI 在 Linux 上使用(如果可用)。

关于c# - 如何对硬件性能计数器进行编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/902769/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com