我目前正在这样做:
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使用率较高并且任务管理器报告平均值?
最佳答案
new PerformanceCounter("Processor", ...);
如果您坚持认为与任务管理器或Perfmon完全匹配,则使用的计数器错误。使用“处理器信息”而不是“处理器”。这些计数器显示不同值的原因已在this blog post中很好地解决了。哪个计数器是“正确的”,这是我不想用十英尺长的杆子碰到的问题:)
关于c# - PerformanceCounter报告的CPU使用率高于观察到的结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24139449/