top과 /proc/stat의 CPU 사용량 차이

top과 /proc/stat의 CPU 사용량 차이

무엇보다도 를 읽어서 CPU 사용량을 계산하는 작은 스크립트를 작성하려고 하는데 /proc/stat일관된 결과를 얻을 수 없는 것 같습니다. 나는 기본적으로

grep cpu /proc/stat

그런 다음 모든 스레드 데이터가 누적되어야 하는 첫 번째 행을 처리합니다. 내 경우에는 4코어/8스레드가 있습니다. 나는 또한 단지 물건을 테스트하기 위해 지속적으로 스레드를 차지하는 프로그램을 작성했습니다(기본적으로 스레드는 하나입니다 while(1) { 1 }). 이 경우 아무것도 하지 않으면 CPU 사용량이 12.5%로 예상되고 를 실행하면 다음과 같은 결과가 top나타납니다.

%Cpu(s): 12,7 usuario,  0,1 sist,  0,0 adecuado, 87,1 inact,  0,1 en espera,  0,

(죄송합니다. 다른 언어로 되어 있습니다.) 그러나 첫 번째 줄 /proc/stat은 다음과 같습니다.

cpu  1490042 169968 416799 32056116 21179 0 19504 0 0 0

여기에서 백분율을 계산하면 다음과 같습니다.

(1490042 + 169968 + 416799)/(1490042 + 169968 + 416799 + 32056116) = 6%

왜 일관성이 없습니까? 제가 /proc/stat설명을 제대로 못한 것 같은데요 ?

답변1

답변을 찾는 것이 그리 어렵지 않기 때문에 내 질문에 답변해야 합니다. 문서를 잘못 읽었을 뿐입니다./proc/stat

/proc/stat/proc/stat시작 이후 집계된 데이터를 표시하므로 특정 간격 동안의 평균 CPU 사용량을 계산하려면 해당 간격의 시작과 끝에서 주어진 값의 차이를 계산해야 합니다 .

관련 정보