/proc/stat의 통계를 사용하여 CPU 사용률을 얻는 방법에 대한 여러 게시물과 참조가 있습니다. 그러나 대부분 Linux 7 (iowait, irq, softirq)에있는 나머지 jiffie CPU 수는 무시하고 7 + CPU 통계 (user, nice, system 및 idle) 중 4 개만 사용합니다./proc/stat를 사용하여 Linux에서 정확히 CPU 사용률을 계산하십시오.
예를 들어, Determining CPU utilization을 참조하십시오.
제 질문은 : iowait/irq/softirq 숫자도 처음 네 개의 숫자 (user/nice/system/idle) 중 하나에 포함됩니까? 다른 말로하면 총 Jiffie 수와 처음 4 가지 통계의 합계가 같습니까? 또는 전체 Jiffie 카운트가 7 개 통계의 합계와 같습니까? 후자가 true의 경우는, CPU 사용률 공식은 다음과 같이 계정에 모든 숫자를 취해야한다 :
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
long double a[7],b[7],loadavg;
FILE *fp;
for(;;)
{
fp = fopen("/proc/stat","r");
fscanf(fp,"%*s %Lf %Lf %Lf %Lf",&a[0],&a[1],&a[2],&a[3],&a[4],&a[5],&a[6]);
fclose(fp);
sleep(1);
fp = fopen("/proc/stat","r");
fscanf(fp,"%*s %Lf %Lf %Lf %Lf",&b[0],&b[1],&b[2],&b[3],&b[4],&b[5],&b[6]);
fclose(fp);
loadavg = ((b[0]+b[1]+b[2]+b[4]+b[5]+b[6]) - (a[0]+a[1]+a[2]+a[4]+a[5]+a[6]))
/((b[0]+b[1]+b[2]+b[3]+b[4]+b[5]+b[6]) - (a[0]+a[1]+a[2]+a[3]+a[4]+a[5]+a[6]));
printf("The current CPU utilization is : %Lf\n",loadavg);
}
return(0);
}
나는 또한이 질문에 대해 궁금합니다. 다른 출처에서 답을 찾았습니까? – justinzane
[이 답변] (http://stackoverflow.com/a/23376195/85696)도 참조하십시오. – danadam