Introducción
El monitoreo de procesos en Linux es esencial para evaluar el rendimiento del sistema y detectar posibles cuellos de botella. A través del análisis del promedio de carga y el uso de herramientas como uptime, lscpu y top, los administradores pueden identificar procesos que consumen muchos recursos y tomar decisiones para optimizar el funcionamiento del sistema.
Objetivos
Esta sección tiene como propósito:
- Comprender el concepto de promedio de carga y su impacto en el rendimiento del sistema.
- Aprender a interpretar los valores del promedio de carga en función del número de CPU disponibles.
- Utilizar herramientas como uptime y lscpu para analizar la carga del sistema.
- Monitorear procesos en tiempo real con top, identificando el consumo de CPU y memoria.
- Aplicar comandos interactivos en top para gestionar procesos y optimizar el uso de recursos.
Monitoreo de la Actividad de Procesos en Linux
Promedio de carga
El promedio de carga es una métrica que indica cuántos procesos están en espera para ejecutarse o bloqueados por operaciones de entrada/salida (E/S). Linux lo calcula cada cinco segundos y reporta un promedio móvil en los últimos 1, 5 y 15 minutos.
Este valor refleja la carga de CPU, pero también incluye el impacto del uso intensivo del disco o la red. Si la carga del sistema es alta pero la CPU no está saturada, es recomendable examinar estos otros recursos.
Interpretación de valores del promedio de carga
El comando uptime muestra la carga del sistema junto con el tiempo en funcionamiento y los usuarios activos:
[user@host ~]$ uptime
15:29:03 up 14 min, 2 users, load average: 2.92, 4.48, 5.20
Los tres valores indican el promedio de carga en los últimos 1, 5 y 15 minutos, permitiendo evaluar si la carga está aumentando o disminuyendo.
Para interpretar estos valores correctamente, es útil calcular la carga por CPU lógica en el sistema. Usando lscpu, se puede obtener la cantidad de núcleos y hilos:
[user@host ~]$ lscpu
CPU(s): 4
Thread(s) per core: 2
Core(s) per socket: 2
Si el sistema tiene 4 CPU, la carga por CPU se calcula dividiendo los valores del promedio de carga:
Carga total: 2.92, 4.48, 5.20
Carga por CPU: 0.73, 1.12, 1.30
Un valor mayor a 1 por CPU indica saturación y tiempos de espera en los procesos. En este caso, en los últimos 15 minutos el sistema estuvo sobrecargado en aproximadamente 30%.
Monitoreo en Tiempo Real con top
El comando top ofrece una vista dinámica de los procesos en ejecución, actualizándose en intervalos configurables. A diferencia de ps, que genera un informe estático, top permite ordenar, filtrar y administrar procesos en tiempo real.
Columnas más relevantes en top
- PID: ID del proceso.
- USER: Propietario del proceso.
- %CPU: Porcentaje de CPU utilizada.
- %MEM: Porcentaje de memoria utilizada.
- TIME+: Tiempo total de ejecución del proceso.
- COMMAND: Nombre del proceso.
- VIRT: Memoria virtual que usa el proceso, incluido el conjunto residente, las librerías compartidas y cualquier página de memoria asignada o intercambiada (etiquetado como VSZ en el comando ps).
- RES: Memoria física que usa el proceso, incluido cualquier objeto residente compartido (etiquetado como RSS en el comando ps).
- S: Estado del proceso, puede ser uno de los siguientes:
- D = Suspensión ininterrumpida
- R = En ejecución o ejecutable
- S = En espera
- T = Detenido o en seguimiento
- Z = Zombie
Ejemplo de salida de top
top - 15:40:32 up 25 min, 2 users, load average: 3.10, 3.75, 4.01
Tasks: 112 total, 2 running, 110 sleeping, 0 stopped, 0 zombie
%Cpu(s): 5.2 us, 1.3 sy, 0.0 ni, 93.5 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 4096000 total, 2560000 free, 1280000 used, 256000 buff/cache
KiB Swap: 2048000 total, 2048000 free, 0 used. 256000 avail Mem
PID USER %CPU %MEM TIME+ COMMAND
2578 root 24.1 1.2 10:05 firefox
1632 user 17.5 0.9 6:32 chrome
1045 root 5.2 0.5 3:20 systemd
En esta salida, el proceso Firefox está utilizando 24.1% de la CPU y 1.2% de la memoria.
Comandos Claves en top
Los siguientes atajos permiten gestionar procesos directamente en top:
| Clave | Propósito |
|---|---|
? o h |
Ayuda en pulsaciones de tecla interactiva. |
l, t, m |
Alternar entre carga, subprocesos y líneas de encabezado de la memoria. |
1 |
Alternar mostrando CPU individuales o un resumen de todas las CPU en el encabezado. |
s |
Cambiar la tasa de actualización (pantalla) en segundos decimales (como 0.5, 1, 5). |
b |
Alternar resaltado reverso para procesos Running; solo negrita de manera predeterminada. |
Shift+b |
Permite el uso de negrita en la visualización, en el encabezado y en los procesos En ejecución. |
Shift+h |
Alternar subprocesos; mostrar resumen del proceso o subprocesos individuales. |
u, Shift+u |
Filtrar por cualquier nombre de usuario (eficaz, real). |
Shift+m |
Ordenar procesos enumerados por uso de memoria, en orden decreciente. |
Shift+p |
Ordenar procesos enumerados por uso del procesador, en orden decreciente. |
k |
Eliminar un proceso. Al recibir un aviso, ingresar PID y luego señal (signal). |
r |
Ejecutar el comando renice para un proceso. Ingresar PID y luego nuevo valor de nice. |
Shift+w |
Escribir (guardar) la configuración actual de la interfaz para usarla en el próximo reinicio de top. |
q |
Salir. |
f |
Gestionar columnas: habilitar/deshabilitar campos y configurar el campo de ordenamiento. |
Estos comandos ayudan a analizar y gestionar procesos de manera eficiente, permitiendo controlar el rendimiento del sistema en tiempo real.
Conclusión
El monitoreo de la actividad de procesos permite a los administradores evaluar el estado del sistema y tomar medidas para mejorar su rendimiento. La interpretación correcta del promedio de carga y el uso de herramientas como top facilitan la identificación de procesos que consumen recursos excesivos. Dominar estas técnicas es clave para garantizar la estabilidad y eficiencia de un sistema Linux.