무엇보다도 를 읽어서 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 사용량을 계산하려면 해당 간격의 시작과 끝에서 주어진 값의 차이를 계산해야 합니다 .