PerformanceCounter 报告的 CPU 使用率高于观察到的情况

Posted

技术标签:

【中文标题】PerformanceCounter 报告的 CPU 使用率高于观察到的情况【英文标题】:PerformanceCounter reporting higher CPU usage than what's observed 【发布时间】:2014-04-30 14:55:28 【问题描述】:

我目前正在这样做:

PerformanceCounter cpuUsage = new PerformanceCounter("Processor", "% Processor Time", "_Total");
cpuUsage.NextValue();
System.Threading.Thread.Sleep(1000);
RV = cpuUsage.NextValue();

我会定期调用该函数以获取 CPU 使用率。当我在 TaskManager 中监控系统时,PerformanceCounter 报告的 CPU 使用率始终比 TaskManager 报告的高 15-20%(TaskManager 中的 30% = PerformanceCounter 中的 50%)。

也许我忽略了一些文档,但是有人解释一下吗?也许它检查时的 CPU 使用率更高,任务管理器报告平均值?

【问题讨论】:

【参考方案1】:
  new PerformanceCounter("Processor", ...);

如果您坚持看到与任务管理器或 Perfmon 完全匹配,则您使用了错误的计数器。使用“处理器信息”而不是“处理器”。这些计数器显示不同值的原因在this blog post 中得到了很好的解决。哪个柜台是“正确的”是我不想用十英尺长的杆子碰到的问题:)

【讨论】:

以上是关于PerformanceCounter 报告的 CPU 使用率高于观察到的情况的主要内容,如果未能解决你的问题,请参考以下文章

为啥调用 PerformanceCounter 很慢?

.net 中 PerformanceCounter 类的用途是啥?

需要使用 CounterDelta32 PerformanceCounter 的示例

到 PerformanceCounter 还是编写自定义监控?

PerformanceCounter“每个会话的用户输入延迟”消失

PerformanceCounter 在连接远程服务器时非常慢