2017-05-17 17 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");