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

时间:2014-04-30 14:55:29

标签: c# cpu-usage performancecounter

我目前正在这样做:

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 个答案:

答案 0 :(得分:5)

  new PerformanceCounter("Processor", ...);

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