使用 WMI 查询的 perfmon 计数器值问题

Posted

技术标签:

【中文标题】使用 WMI 查询的 perfmon 计数器值问题【英文标题】:Issue with perfmon counter value using WMI query 【发布时间】:2012-05-05 11:30:31 【问题描述】:

我正在构建 EXE,并通过它获取应用程序的 perfmon 计数器,以使用 WMI 查询对其进行监控。我正在用我的本地机器测试它,似乎我的代码逻辑为我提供了一些计数器的错误值。

以下是我的其中一个计数器的代码 (CacheTotalHitRatio)

当我在我的系统中使用 perfmon exe 查看它时,它会显示一些不同的东西,如下所示。

我认为 CacheTotalHitRatio 是百分比,不应超过 100,但我的代码给出了更高的值。这里有什么问题还是我在这里做错了什么?

如果有人对 WMI 查询有经验,请告诉我。

提前致谢。

【问题讨论】:

您正在使用带有原始值的性能计数器 (Win32_PerfRawData_ASPNET_ASPNETApplications ),请尝试改用 Win32_PerfFormattedData_ASPNET_ASPNETApplications 类。 @RRUZ 嘿,非常感谢,它给了我正确的价值,但请告诉我这有什么区别?我也使用与 Win32_PerfRawData_ASPNET_ASPNET、Win32_PerfRawData_W3SVC_WebService 等其他计数器相同的计数器,所以我需要替换它吗?请写下答案,以便我可以标记为答案:) 再次感谢 【参考方案1】:

存在两种Performance Counter Classes

Formatted Performance Counter Classes Raw Performance Counter Classes

Win32_PerfRawData_ASPNET_ASPNETApplications 类返回 原始性能 计数器值,如果您使用 Win32_PerfFormattedData_ASPNET_ASPNETApplications 类,这些值必须经过转换(根据属性和类使用公式)才能显示相反,您将获得计算的数据,就像在性能监视器中显示的那样。

【讨论】:

太棒了!感谢您的回答,它确实帮助我解决了我的问题。谢谢

以上是关于使用 WMI 查询的 perfmon 计数器值问题的主要内容,如果未能解决你的问题,请参考以下文章

通过 winreg 查找 perfmon 计数器 id

WMI 性能计数器查询问题

WMI 查询 - 2008 性能计数器警报

perfmon 性能计数器是不是基于与 xperf 使用的 ETW 事件“底层”相同的东西?

如何让 SqlServer 计数器的 .NET 数据提供程序显示在 Perfmon 中

从 C++ 公开的 Windows 性能计数器总是在 perfmon.exe 中产生“无法加载计数器”