¿Cómo se calcula el porcentaje de uso de CPU?

¿Cómo se calcula el porcentaje de uso de CPU?

En mi Ubuntu 12.04, con psensor, vi un porcentaje actualizado para el uso de la CPU. Me pregunto cómo se calculó este porcentaje. Específicamente, ¿cuál es el numerador y el denominador de la razón?

¡Gracias!

Respuesta1

Elporcentaje de uso del procesadorse calcula con "la cantidad de tiempo que el procesador no está inactivo". Quiero decir, este cálculo se realiza a partir de un contador que registra el uso del proceso en ejecución "inactivo". Mientras que otros preprocesos "roban" la potencia del procesador del proceso inactivo, el registro de consumo del procesador inactivo disminuye en un factor; Como la línea de tiempo es fija y constante, (1-"% de tiempo en las tareas inactivas") es la cantidad de carga del procesador utilizada para todos los procesos que se ejecutan en un procesador:

ingrese la descripción de la imagen aquí

Definición de utilización de CPU

Para nuestros propósitos, defino la utilización de la CPU, U, como la cantidad de tiempo que no está en la tarea inactiva, como se muestra en la Ecuación 1.

La tarea inactiva es la tarea con la prioridad más baja absoluta en un sistema multitarea. Esta tarea a veces también se denomina tarea en segundo plano o bucle en segundo plano, como se muestra en el Listado 1. Esta lógica tradicionalmente tiene un tipo de bucle while(1). En otras palabras, un bucle infinito hace girar la CPU esperando una indicación de que es necesario realizar un trabajo crítico.

Listado 1: Ejemplo simple de un bucle de fondo

int main( void )
{
   SetupInterrupts();
   InitializeModules();
   EnableInterrupts();

   while(1)      /* endless loop - spin in the background */
   {
      CheckCRC();
      MonitorStack();
      ... do other non-time critical logic here.
   }
}

Esta descripción es en realidad una simplificación excesiva, ya que a menudo se realiza parte del trabajo "real" en la tarea en segundo plano. Sin embargo, la lógica codificada para su ejecución durante la tarea inactiva no debe tener requisitos estrictos en tiempo real porque no hay garantía de cuándo se completará esta lógica. De hecho, una técnica que puede utilizar en un sistema sobrecargado es mover parte de la lógica con requisitos de tiempo menos estrictos de las tareas difíciles en tiempo real a la tarea inactiva.

información relacionada