En este artículo, explicaremos una de las tareas críticas de administración del sistema Linux: el monitoreo del rendimiento en relación con la carga del sistema/CPU y las cargas promedio.
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 sobre o subutilización 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 dado de 1, 5 y 15 minutos.
En Linux, se cree técnicamente que la carga promedio es un promedio en ejecución de procesos en su cola de ejecución (kernel) etiquetados como en ejecución o no interrumpibles.
Tenga en cuenta que:
- Todos, si no la mayoría, de los sistemas alimentados por Linux u otros sistemas tipo Unix mostrarán posiblemente los valores de carga promedio en algún lugar para un usuario.
- A downright idle Linux system may have a load average of zero, excluding the idle process.
- Casi todos los sistemas tipo Unix cuentan solo los procesos en los estados de ejecución o espera. Pero este no es el caso con Linux, incluye procesos en estados de suspensión no interrumpible; aquellos que esperan otros recursos del sistema como E/S de disco, etc.
Cómo monitorear la carga promedio del sistema Linux
Existen numerosas formas de monitorear la carga promedio del sistema, incluido el tiempo de actividad que muestra cuánto tiempo ha estado funcionando el sistema, el número de usuarios junto con las cargas promedio:
$ 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:
- la carga promedio durante el último 1 minuto es 1.98
- La carga promedio durante los últimos 5 minutos es 2.15
- la carga promedio durante los últimos 15 minutos es 2.21
Cargas promedio altas implican que un sistema está sobrecargado; muchos procesos están esperando tiempo de CPU.
Lo descubriremos en la siguiente sección en relación al número de núcleos de CPU. Además, también podemos usar otras herramientas conocidas como top y glances que muestran un estado en tiempo real de un sistema Linux en ejecución, además de muchas otras herramientas:
Comando Top
$ 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 Glances
$ 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 ...
Las cargas promedio mostradas por estas herramientas se leen del archivo /proc/loadavg, que puedes 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 las cargas promedio en formato de gráficos, revisa: ttyload – Muestra un Gráfico Codificado por Colores de la Carga Promedio de Linux en la Terminal
En máquinas de escritorio, existen herramientas de interfaz gráfica de usuario que podemos utilizar para ver las cargas promedio del sistema.
Comprendiendo la Carga Promedio del Sistema en Relación al Número de CPUs
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-procesador Vs Multi-núcleo
- Multi-procesador – es donde dos o más CPU físicas se integran en un único sistema informático.
- Procesador multi-núcleo – es una única CPU física que tiene al menos dos o más núcleos separados (o lo que también podemos referirnos como unidades de procesamiento) que trabajan en paralelo. Significa que un dual-core tiene 2 unidades de procesamiento, un quad-core tiene 4 unidades de procesamiento y así sucesivamente.
Además, también hay una tecnología de procesador que fue introducida por Intel para mejorar la computación en paralelo, conocida como hiper-roscado.
Bajo el hiper-roscado, un solo núcleo de CPU física aparece como dos núcleos de CPU lógicos para un sistema operativo (pero en realidad, hay un solo 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 tanto, se crearon tecnologías como múltiples CPUs/procesadores, CPUs multi-núcleo y hiper-roscado.
Con más de una CPU, varios programas pueden ejecutarse simultáneamente. Las CPUs Intel actuales utilizan una combinación de múltiples núcleos y tecnología de hiper-roscado.
Para encontrar el número 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 usando 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 promedios de carga inferiores:
23:16:49 up 10:49, 5 user, load average: 1.00, 0.40, 3.35
En un sistema de un solo núcleo, esto significaría:
- La CPU estaba completamente (100%) utilizada en promedio; 1 proceso se estaba ejecutando en la CPU (1.00) durante el último 1 minuto.
- La CPU estaba ociosa en un 60% en promedio; no había procesos esperando tiempo de CPU (0.40) durante los últimos 5 minutos.
- La CPU estaba sobrecargada en un 235% en promedio; 2.35 procesos estaban esperando tiempo de CPU (3.35) durante los últimos 15 minutos.
En un sistema de doble núcleo, esto significaría:
- Una CPU estaba 100% ociosa en promedio, una CPU estaba siendo utilizada; no había procesos esperando tiempo de CPU (1.00) durante el último 1 minuto.
- Las CPUs estaban ociosas en un 160% en promedio; no había procesos esperando tiempo de CPU (0.40) durante los últimos 5 minutos.
- Las CPUs estaban sobrecargadas en un 135% en promedio; 1.35 procesos estaban esperando tiempo de CPU (3.35) durante los últimos 15 minutos.
También te podría gustar:
- 20 Herramientas de Línea de Comando para Monitorizar el Rendimiento de Linux – Parte 1
- 13 Herramientas de Monitorización de Rendimiento de Linux – Parte 2
- Perf- Una herramienta de monitoreo y análisis de rendimiento para Linux
- Nmon: Analizar y monitorear el rendimiento del sistema Linux
En conclusión, si eres un administrador del sistema, las cargas altas son algo de lo que realmente preocuparse. Cuando son altas, por encima del número de núcleos de la CPU, significa una alta demanda para las CPUs, y cargas bajas por debajo del número de núcleos de la CPU nos dicen que las CPUs no se están utilizando completamente.
Source:
https://www.tecmint.com/understand-linux-load-averages-and-monitor-performance/