Búsqueda de sitios web

Comprender los promedios de carga de Linux y monitorear el rendimiento de Linux


En este artículo, explicaremos una de las tareas críticas de administración del sistema Linux: el monitoreo del rendimiento con respecto a la carga del sistema/CPU y los promedios de carga.

Antes de continuar, comprendamos estas dos frases importantes en todos los sistemas tipo Unix:

  • Carga del sistema/carga de CPU: es una medida de la utilización excesiva o insuficiente de la CPU en un sistema Linux; el número de procesos que están siendo ejecutados por la CPU o en estado de espera.
  • Carga promedio: es la carga promedio del sistema calculada durante un período de tiempo determinado de 1, 5 y 15 minutos.

En Linux, técnicamente se cree que el promedio de carga es un promedio en ejecución de procesos en su cola de ejecución (kernel) etiquetados como en ejecución o ininterrumpibles.

Tenga en cuenta que:

  • Todos, si no la mayoría, los sistemas impulsados por Linux u otros sistemas similares a Unix posiblemente mostrarán los valores promedio de carga en algún lugar para un usuario.
  • Un sistema Linux completamente inactivo puede tener un promedio de carga de cero, excluyendo el proceso inactivo.
  • Casi todos los sistemas tipo Unix sólo cuentan procesos en estado de ejecución o espera. Pero este no es el caso de Linux, incluye procesos en estados de suspensión ininterrumpibles; aquellos que esperan otros recursos del sistema como E/S de disco, etc.

Cómo monitorear el promedio de carga del sistema Linux

Existen numerosas formas de monitorear el promedio de carga del sistema, incluido el tiempo de actividad, que muestra cuánto tiempo ha estado funcionando el sistema, la cantidad de usuarios junto con los promedios de carga:

uptime

07:13:53 up 8 days, 19 min,  1 user,  load average: 1.98, 2.15, 2.21

Los números se leen de izquierda a derecha y el resultado anterior significa que:

  • El promedio de carga durante el último 1 minuto es 1,98
  • El promedio de carga en los últimos 5 minutos es 2,15
  • El promedio de carga en los últimos 15 minutos es 2,21

Los promedios de carga altos implican que un sistema está sobrecargado; Muchos procesos están esperando tiempo de CPU.

Descubriremos esto en la siguiente sección en relación con la cantidad de núcleos de CPU. Además, también podemos utilizar otras herramientas conocidas como top y vistazos que muestran el estado en tiempo real de un sistema Linux en ejecución, además de muchas otras herramientas:

Comando superior

top
top - 12:51:42 up  2:11,  1 user,  load average: 1.22, 1.12, 1.26
Tasks: 243 total,   1 running, 242 sleeping,   0 stopped,   0 zombie
%Cpu(s): 17.4 us,  2.9 sy,  0.3 ni, 74.8 id,  4.6 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  8069036 total,   388060 free,  4381184 used,  3299792 buff/cache
KiB Swap:  3906556 total,  3901876 free,     4680 used.  2807464 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                                                                        
 6265 tecmint   20   0 1244348 170680  83616 S  13.3  2.1   6:47.72 Headset                                                                                                                                        
 2301 tecmint    9 -11  640332  13344   9932 S   6.7  0.2   2:18.96 pulseaudio                                                                                                                                     
 2459 tecmint   20   0 1707692 315628  62992 S   6.7  3.9   6:55.45 cinnamon                                                                                                                                       
 2957 tecmint   20   0 2644644 1.035g 137968 S   6.7 13.5  50:11.13 firefox                                                                                                                                        
 3208 tecmint   20   0  507060  52136  33152 S   6.7  0.6   0:04.34 gnome-terminal-                                                                                                                                
 3272 tecmint   20   0 1521380 391324 178348 S   6.7  4.8   6:21.01 chrome                                                                                                                                         
 6220 tecmint   20   0 1595392 106964  76836 S   6.7  1.3   3:31.94 Headset                                                                                                                                        
    1 root      20   0  120056   6204   3964 S   0.0  0.1   0:01.83 systemd                                                                                                                                        
    2 root      20   0       0      0      0 S   0.0  0.0   0:00.00 kthreadd                                                                                                                                       
    3 root      20   0       0      0      0 S   0.0  0.0   0:00.10 ksoftirqd/0                                                                                                                                    
    5 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H   
....

Herramienta Miradas

glances
TecMint (LinuxMint 18 64bit / Linux 4.4.0-21-generic)                                                                                                                                               Uptime: 2:16:06

CPU      16.4%  nice:     0.1%                                        LOAD    4-core                                        MEM     60.5%  active:    4.90G                                        SWAP      0.1%
user:    10.2%  irq:      0.0%                                        1 min:    1.20                                        total:  7.70G  inactive:  2.07G                                        total:   3.73G
system:   3.4%  iowait:   2.7%                                        5 min:    1.16                                        used:   4.66G  buffers:    242M                                        used:    4.57M
idle:    83.6%  steal:    0.0%                                        15 min:   1.24                                        free:   3.04G  cached:    2.58G                                        free:    3.72G

NETWORK     Rx/s   Tx/s   TASKS 253 (883 thr), 1 run, 252 slp, 0 oth sorted automatically by cpu_percent, flat view
enp1s0     525Kb   31Kb
lo           2Kb    2Kb     CPU%  MEM%  VIRT   RES   PID USER        NI S    TIME+ IOR/s IOW/s Command 
wlp2s0        0b     0b     14.6  13.3 2.53G 1.03G  2957 tecmint      0 S 51:49.10     0   40K /usr/lib/firefox/firefox 
                             7.4   2.2 1.16G  176M  6265 tecmint      0 S  7:08.18     0     0 /usr/lib/Headset/Headset --type=renderer --no-sandbox --primordial-pipe-token=879B36514C6BEDB183D3E4142774D1DF --lan
DISK I/O     R/s    W/s      4.9   3.9 1.63G  310M  2459 tecmint      0 R  7:12.18     0     0 cinnamon --replace
ram0           0      0      4.2   0.2  625M 13.0M  2301 tecmint    -11 S  2:29.72     0     0 /usr/bin/pulseaudio --start --log-target=syslog
ram1           0      0      4.2   1.3 1.52G  105M  6220 tecmint      0 S  3:42.64     0     0 /usr/lib/Headset/Headset 
ram10          0      0      2.9   0.8  409M 66.7M  6240 tecmint      0 S  2:40.44     0     0 /usr/lib/Headset/Headset --type=gpu-process --no-sandbox --supports-dual-gpus=false --gpu-driver-bug-workarounds=7,2
ram11          0      0      2.9   1.8  531M  142M  1690 root         0 S  6:03.79     0     0 /usr/lib/xorg/Xorg :0 -audit 0 -auth /var/lib/mdm/:0.Xauth -nolisten tcp vt8
ram12          0      0      2.6   0.3 79.3M 23.8M  9651 tecmint      0 R  0:00.71     0     0 /usr/bin/python3 /usr/bin/glances
ram13          0      0      1.6   4.8 1.45G  382M  3272 tecmint      0 S  6:25.30     0    4K /opt/google/chrome/chrome 
...

Los promedios de carga que muestran estas herramientas se leen en el archivo /proc/loadavg, que puede ver usando el comando cat como se muestra a continuación:

cat /proc/loadavg

2.48 1.69 1.42 5/889 10570

Para monitorear los promedios de carga en formato gráfico, consulte: ttyload: muestra un gráfico codificado por colores del promedio de carga de Linux en la terminal

En las máquinas de escritorio, existen herramientas de interfaz gráfica de usuario que podemos utilizar para ver los promedios de carga del sistema.

Comprender la carga promedio del sistema en relación con el número de CPU

No podemos explicar la carga o el rendimiento del sistema sin arrojar luz sobre el impacto del número de núcleos de CPU en el rendimiento.

Multiprocesador versus multinúcleo

  • Multiprocesador: es donde dos o más CPU físicas se integran en un solo sistema informático.
  • Procesador multinúcleo: es una única CPU física que tiene al menos dos o más núcleos separados (o lo que también podemos denominar unidades de procesamiento) que funcionan en paralelo. Lo que significa que un núcleo dual tiene dos unidades de procesamiento, un núcleo cuádruple tiene cuatro unidades de procesamiento, etc.

Además, también existe una tecnología de procesador que Intel introdujo por primera vez para mejorar la computación paralela, denominada hyper threading.

En Hyper Threading, un único núcleo de CPU físico aparece como dos núcleos de CPU lógica para un sistema operativo (pero en realidad, hay un componente de hardware físico).

Tenga en cuenta que un único núcleo de CPU solo puede realizar una tarea a la vez, por lo que tecnologías como múltiples CPU/procesadores, CPU de múltiples núcleos y hyper-threading cobraron vida.

Con más de una CPU se pueden ejecutar varios programas simultáneamente. Las CPU Intel actuales utilizan una combinación de múltiples núcleos y tecnología de hiperprocesamiento.

Para encontrar la cantidad de unidades de procesamiento disponibles en un sistema, podemos usar los comandos nproc o lscpu de la siguiente manera:

nproc
4

OR
lscpu

Otra forma de encontrar la cantidad de unidades de procesamiento usando el comando grep como se muestra.

grep 'model name' /proc/cpuinfo | wc -l

4

Ahora, para comprender mejor la carga del sistema, asumiremos algunas suposiciones. Digamos que tenemos los promedios de carga a continuación:

23:16:49 up  10:49,  5 user,  load average: 1.00, 0.40, 3.35
En un sistema de núcleo único esto significaría:
  • La CPU se utilizó por completo (100%) en promedio; Se ejecutaron 1 procesos en la CPU (1.00) durante el último minuto.
  • La CPU estuvo inactiva en promedio un 60%; ningún proceso estuvo esperando el tiempo de CPU (0,40) durante los últimos 5 minutos.
  • La CPU estaba sobrecargada en promedio un 235%; 2,35 procesos estuvieron esperando tiempo de CPU (3,35) durante los últimos 15 minutos.
En un sistema de doble núcleo esto significaría:
  • Una CPU estaba en promedio 100% inactiva, una CPU estaba en uso; ningún proceso estuvo esperando el tiempo de CPU (1,00) durante el último minuto.
  • Las CPU estuvieron inactivas en promedio un 160%; ningún proceso estaba esperando el tiempo de CPU. (0,40) en los últimos 5 minutos.
  • Las CPU estaban sobrecargadas en promedio un 135%; 1,35 procesos estaban esperando tiempo de CPU. (3.35) en los últimos 15 minutos.

También podría gustarte:

  1. 20 herramientas de línea de comandos para monitorear el rendimiento de Linux - Parte 1
  2. 13 herramientas de monitoreo del rendimiento de Linux – Parte 2
  3. Perf: una herramienta de análisis y monitoreo del rendimiento para Linux
  4. Nmon: analizar y monitorear el rendimiento del sistema Linux

En conclusión, si usted es administrador de sistemas, entonces es posible que se preocupe por los promedios de carga elevados. Cuando son altos, por encima del número de núcleos de CPU, significa una alta demanda de CPU, y los promedios de carga bajos por debajo del número de núcleos de CPU nos indican que las CPU están subutilizadas.