Entender los promedios de carga de Linux y el rendimiento del monitor de Linux


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

Antes de continuar, entendamos estas dos frases importantes en todos los sistemas similares a Unix:

  • System load/CPU Load – is a measurement of CPU over or under-utilization in a Linux system; the number of processes which are being executed by the CPU or in waiting state.
  • Load average – is the average system load calculated over a given period of time of 1, 5 and 15 minutes.

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

Tenga en cuenta que:

  • All if not most systems powered by Linux or other Unix-like systems will possibly show the load average values somewhere for a user.
  • A downright idle Linux system may have a load average of zero, excluding the idle process.
  • Nearly all Unix-like systems count only processes in the running or waiting states. But this is not the case with Linux, it includes processes in uninterruptible sleep states; those waiting for other system resources like disk I/O 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, el número 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 la salida anterior significa que:

  • load average over the last 1 minute is 1.98
  • load average over the last 5 minutes is 2.15
  • load average over the last 15 minutes is 2.21

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

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

$ top

Mostrar procesos en ejecución en Linux

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   
....
$ glances

Glances - Herramienta de monitoreo del sistema Linux

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 de gráfico, echa un vistazo a: 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 usar para ver los promedios de carga del sistema.

Entendiendo la carga promedio del sistema en el número de relaciones de las CPU

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

  • Multi-processor – is where two or more physical CPU’s are integrated into a single computer system.
  • Multi-core processor – is a single physical CPU which has at least two or more separate cores (or what we can also refer to as processing units) that work in parallel. Meaning a dual-core has 2 two processing units, a quad-core has 4 processing units and so on.

Además, también hay una tecnología de procesador que fue introducida por primera vez por Intel para mejorar la computación paralela, denominada hipervínculo.

Bajo el subprocesamiento, un solo núcleo físico de CPU aparece como dos núcleos lógicos de CPU para un sistema operativo (pero en realidad, existe un componente de hardware físico)

Tenga en cuenta que un solo núcleo de CPU solo puede llevar a cabo una tarea a la vez, por lo que las tecnologías como múltiples CPU/procesadores, CPU de múltiples núcleos e hiperprocesamiento cobraron vida.

Con más de una CPU, varios programas pueden ejecutarse simultáneamente. Las CPU Intel de hoy en día utilizan una combinación de múltiples núcleos y tecnología de subprocesamiento.

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 el número de unidades de procesamiento utilizando el comando grep como se muestra.

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

4

Ahora, para entender mejor la carga del sistema, haremos 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
  • The CPU was fully (100%) utilized on average; 1 processes was running on the CPU (1.00) over the last 1 minute.
  • The CPU was idle by 60% on average; no processes were waiting for CPU time (0.40) over the last 5 minutes.
  • The CPU was overloaded by 235% on average; 2.35 processes were waiting for CPU time (3.35) over the last 15 minutes.
  • The one CPU was 100% idle on average, one CPU was being used; no processes were waiting for CPU time(1.00) over the last 1 minute.
  • The CPUs were idle by 160% on average; no processes were waiting for CPU time. (0.40) over the last 5 minutes.
  • The CPUs were overloaded by 135% on average; 1.35 processes were waiting for CPU time. (3.35) over the last 15 minutes.

También podría gustarte:

  1. 20 Command Line Tools to Monitor Linux Performance – Part 1
  2. 13 Linux Performance Monitoring Tools – Part 2
  3. Perf- A Performance Monitoring and Analysis Tool for Linux
  4. Nmon: Analyze and Monitor Linux System Performance

En conclusión, si usted es un administrador del sistema, entonces los promedios de carga altos son reales de los que preocuparse. Cuando están altos, por encima del número de núcleos de CPU, significa una gran demanda de CPU, y los promedios de carga bajos por debajo del número de núcleos de CPU nos dicen que las CPU están subutilizadas.