2017-05-17 54 views
0

我有以下代码:的PerformanceCounter报告werid CPU使用率值

PerformanceCounter cpuCounter = new PerformanceCounter("Process", "% Processor Time", "_Total"); 
     float Percent = cpuCounter.NextValue(); 
     Console.WriteLine("Sampling CPU Usage    " + Percent); 

     Thread.Sleep(1000); 
     Percent = cpuCounter.NextValue(); 
     Console.WriteLine("Sampling CPU Usage    " + Percent); 
     Percent = cpuCounter.NextValue(); 
     Console.WriteLine("Sampling CPU Usage    " + Percent); 

和输出我得到的是:

Sampling CPU Usage    0 
Sampling CPU Usage    396 
Sampling CPU Usage    405 

现在是我有2个物理核心,所以我可以除以2,但在另一台机器上,我看到了正确的百分比。另外,“rawvalue”显示为2020334375000

+0

这是至关重要的,你等的时间够长调用NextValue前()。处理器只能关闭或以全通径运行。因此,柜台所能做的就是衡量它自上次被叫以来的运行时间和运行时间。不这样做会产生奇怪的值。一点都不现实,因为现代处理器不再以可预测的速度运行。它们具有“涡轮增压”功能,只要芯片温度足够低,就有意超频处理器。计数器补偿了这一点。 –

回答

0

而是愚蠢的我,而不是“处理器”的第一个参数“过程”,该代码应该是

new PerformanceCounter("Processor", "% Processor Time", "_Total");