Hay una serie de publicaciones y referencias sobre cómo obtener la utilización de la CPU usando estadísticas en/proc/stat. Sin embargo, la mayoría de ellos usa solo cuatro de las 7+ estadísticas de CPU (usuario, agradable, sistema e inactivo), ignorando los conteos restantes de CPU jiffie presentes en Linux 2.6 (iowait, irq, softirq).Calculando con precisión la utilización de la CPU en Linux utilizando/proc/stat
Como ejemplo, vea Determining CPU utilization.
Mi pregunta es esta: ¿Los números iowait/irq/softirq también se cuentan en uno de los primeros cuatro números (usuario/agradable/sistema/inactivo)? En otras palabras, ¿el recuento de jiffie total es igual a la suma de las primeras cuatro estadísticas? O bien, ¿el recuento de jiffie total es igual a la suma de las 7 estadísticas? Si esto último es cierto, entonces una fórmula utilización de la CPU debe tomar todos los números en cuenta, como este:
#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);
}
También tengo curiosidad acerca de esta pregunta. ¿Encontraste una respuesta de otra fuente? – justinzane
Véase también [esta respuesta] (http://stackoverflow.com/a/23376195/85696). – danadam