Saltar la navegación

uptime

El comando uptime muestra una linea con la siguiente información: la hora actual, el tiempo que lleva en funcionamiento ininterrumpido el sistema, el número de usuarios actualmente conectados al sistema y la carga media del sistema en los últimos 1, 5 y 15 minutos respectivamente.

$ uptime
 11:07:54 up  1:242 users,  load average: 0,44, 0,33, 0,23

Esta es la misma información que se encuentra en la cabecera de la información mostrada por el comando w:

$ w
18:54:52 up 11:30, 1 user, load average: 0,78, 0,81, 0,78
USER TTY DESDE LOGIN@ IDLE JCPU PCPU WHAT
fran tty7 :0 07:24 11:30m 28:06 1.28s x-session-manager

También el comando top:

$ top
top - 19:27:38 up 12:03, 1 user, load average: 0,82, 0,98, 1,00
Tareas: 217 total, 2 running, 215 sleeping, 0 stopped, 0 zombie
%Cpu(s): 5,9 us, 1,4 sy, 0,0 ni, 92,7 id, 0,0 wa, 0,0 hi, 0,0 si, 0,0 st
MiB Mem : 7723,5 total, 1856,1 free, 4049,8 used, 2561,0 buff/cache
MiB Intercambio: 38335,0 total, 38335,0 free, 0,0 used. 3673,7 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
19588 fran 20 0 3728200 1,3g 106636 S 37,4 17,2 40:54.27 Isolated Web Co
2298 fran 20 0 21,0g 767884 233064 S 6,6 9,7 136:30.67 firefox-esr
835 root 20 0 1841984 172488 120140 S 5,6 2,2 30:59.15 Xorg

E incluso en el monitor del sistema:

Monitor del sistema

En sistemas tipo Unix, incluido GNU/Linux, con el término carga del sistema nos estamos refiriendo a un número que mide el trabajo computacional que realiza un sistema en un instante determinado. Un sistema que esté inactivo en un momento dado tendrá una carga de 0. Cada proceso en ejecución que usa o espera recursos de la CPU agrega 1 a la carga. En el caso de GNU/Linux, también se añade 1 a la carga cuando los procesos esperan a otros recursos, como la espera por una lectura o escritura en un disco. En consecuencia, si un sistema tiene una carga de 7, siete procesos están usando o esperando a la CPU.

Pero el dato de carga del sistema en un instante determinado no es muy útil, puede variar mucho de un instante a otro, y no nos daría una idea clara de cuán ocupado está el sistema. Es por esto, que el dato con el que se suele trabajar es el de carga promedio del sistema en un determinado periodo de tiempo. Concretamente, GNU/Linux nos informa de la carga promedio del sistema en el último minuto, en los últimos 5 minutos y en los últimos 15 minutos. Esto nos da una mejor idea de cuánto trabajo ha estado realizando el sistema.

Veamos cómo leer los datos de carga promedio del sistema, para lo cual hay que tener en cuenta el número de CPU/Núcleos de los que dispone el sistema. Por ejemplo, si uptime nos muestra:

$ uptime
 08:10:24 up  15:29,  3 users,  load average: 1.32, 0.98, 4.50

En el caso de un sistema con una sola CPU de un núcleo, este tendrá una carga máxima de 1, y según los datos de promedio de carga, durante el último minuto una media de 0.32 procesos han estado esperando a la CPU (u otro recurso en GNU/Linux), la cantidad que supera a la carga máxima, 1 en este caso. También podríamos decir que el sistema ha estado sobrecargado el 32% del último minuto.

En cuanto a los últimos 5 minutos, diríamos que la CPU (el sistema) ha estado inactiva el 2% de ese tiempo. No ha estado ejecutando 1 proceso de media, se ha quedado en solo 0.98 procesos.

Con respecto al periodo de los últimos 15 minutos, la CPU ha tenido 3.5 procesos de media esperando, es decir, ha tenido una sobrecarga media de un 350%.

Suponiendo ahora que el sistema tiene dos CPUs o una de dos núcleos, la carga máxima será de 2, por lo que la lectura de los datos sería la siguiente:

  • Último minuto: El sistema ha estado inactivo de media un 34% del periodo.
  • Últimos 5 minutos: El sistema ha estado inactivo de promedio el 51% del periodo.
  • Últimos 15 minutos: El sistema ha estado sobrecargado de media un 125% del periodo.

Como resumen, podríamos expresarlo así, si el promedio de carga de un sistema de una sola CPU es de 2, significa que el sistema estuvo sobrecargado un 100% durante el período de tiempo, pues un proceso estuvo usando la CPU mientras otro proceso estaba esperando. Un sistema con dos CPU de un núcleo estaría a pleno rendimiento, ya que dos procesos diferentes utilizaron dos CPU diferentes todo el tiempo. Pero en un sistema con dos CPU de dos núcleos, habría estado inactivo de media la mitad del tiempo, pues dos procesos usaban dos CPU, mientras que dos CPU estaban inactivas.

Como el número de núcleos de una CPU es importante a la hora de estudiar la carga promedio de un sistema, podemos consultarlo para nuestro procesador con la ejecución del siguiente comando para un ordenador con una sola CPU:

$ grep processor /proc/cpuinfo | wc -l
4

Tras ver la salida del comando anterior, el valor máximo de carga sin espera es de 4.

Se debería investigar qué está pasando en el sistema, al menos cuando aún queda un margen de un 15% sobre el valor máximo, es decir, para un valor máximo de 1, al llegar al 0.85, deberíamos preocuparnos por lo que está sucediendo.

Un valor máximo en la media del último minuto, que desaparece en la media de los cinco y quince últimos minutos, no es preocupante, pues indicaría una carga extra puntual, pero sí lo sería si el valor máximo o más apareciera en las dos última medias.