Voy a tratar de explicar de forma simple que significa el famoso Load Average de Linux, dado que algunos usuarios / estudiantes del curso de Linux que esta publicado en Udemy, tienen esta duda.

¿Qué es Load Average?

El load average en Linux (también conocido en español como promedio de carga), en realidad son promedios de carga del sistema, que nos muestra la demanda de subprocesos (tareas) que se están ejecutando, y los que se esperan ejecutar. Podemos ver 3 valores, por ejemplo:

load average: 4.23, 4.32, 4.16

Esto corresponde a la carga de la CPU al minuto (4.23), a los 5 minutos (4.32) y a los 15 minutos (4.16).

Comandos para ver Load Average

Hay muchas formas de verlo, pero vamos a valernos de al menos 3 que están presente en todas las distribuciones de Linux.

Comando top

Comandos uptime y w

¿Por qué varían los datos del Load Average?

Cada núcleo del procesador puede tener una determinada carga de trabajo. Si el núcleo no tiene ninguna carga de trabajo, el número que de nuestro “Load Average” va a tender a ser cero. Si está a media carga, el número estimado sería de “0,5” y si está trabajando al 100% (lo que se interpreta como carga crítica) entonces el número de este indicador sería “1” o más.

Cuando hay mucha demanda de procesador, y el núcleo no llega a atender todas las tareas y subtareas comienza a formarse una cola, que se irá atendiendo a medida que se van procesando, pero a veces los núcleos no pueden atender la demanda entonces vemos como los números del Load Avergare comienzan a crecer, cosa que de mantenerse en el tiempo pueden causar lentitud o fallas del sistema.

Entendiendo los distintos valores de carga en un sistema con un único procesador y un solo core/núcleo:

  • 0.00: no hay ningún trabajo ni en ejecución ni a la espera de ser ejecutado por la CPU, por lo tanto, el CPU se encuentra completamente ociosa (idle).
  • 0.50: no hay ningún trabajo en espera, pero, nuestro CPU está procesando trabajos y  con el 50% de su capacidad.
  • 1.00: no hay trabajos encolados pero la CPU se encuentra procesando trabajos al 100% de su capacidad, por lo que si un nuevo proceso solicita tiempo de CPU éste tendrá que ser puesto en espera hasta que otro trabajo se complete o hasta que expire el tiempo de CPU asignado a otro proceso (CPU tick) y el sistema operativo decida cuál es el siguiente, esto lo hará por lo general en función de su prioridad.
  • 1.50: la CPU se encuentra trabajando al 100% de su capacidad y 5 de cada 15 trabajos que solicitan tiempo de CPU, es decir, el 33,33%, han de encolarse a la espera de que otros agoten su tiempo asignado. Entonces, cuanto vemos que el umbral de 1.0 es superado, se puede decir que el sistema está sobrecargado, dao que no puede atender inmediatamente el 100% de los trabajos que se le solicitan y se van encolando.

Sistemas multiprocesador o multicore

En sistemas con múltiples procesadores o núcleos (ya sean virtuales o físicos), el significado de los distintos valores de carga varía en función del número de procesadores presentes en el sistema.

Si el sistema posee 4 procesadores no estará siendo utilizada al 100% hasta que alcance una carga de 4.00, si el sistema tiene 2 procesadores comenzará a tener problemas cuando supere el 2.00.

Por lo tanto para entender los valores de carga que nos ofrecen los comandos mencionados, es dividirlos entre el número de CPUs lógicas presentes en nuestro sistema, y a partir de ahí analizar el comportamiento.

¿Cómo podemos saber cuantos procesadores y núcleos tiene disponible el sistema?

cat /proc/cpuinfo | grep "processor"

cat /proc/cpuinfo | grep "cores"

El porque se da un Load Average, será cuestión de investigar que procesos de que sistema están llevando e CPU al límite, hemos mostrado varios ejemplos en el blog, así que no te olvides de suscribirte para saber más de Linux.

Deja un comentario