2017-05-17 5 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

する必要があります表示されます()をもう一度押します。プロセッサは、電源を切るかフルボアでしか動かすことができません。カウンターができることは、それが最後に呼び出されてから何が走っていないのかを測定することです。そうしなければ奇妙な価値が生まれます。現代のプロセッサは予測可能な速度ではもう動作しないため、少なくともではありません。チップの温度が十分に低く保たれている限り、意図的にプロセッサをオーバークロッキングする「ターボブースト」機能を備えています。カウンターはそれを補う。 –

答えて

0

むしろは愚かな私が代わりに最初の引数の「プロセッサ」の「プロセス」を持っていたとして、コードはあなたがnextValueメソッドを呼び出す前に、十分な長待つことが極めて重要である

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