Estadísticas del sistema: sar, dstat, uptime, /proc/stat
Introducción
Para obtener una visión global del rendimiento del sistema — CPU, memoria, disco y red de forma conjunta —
existen herramientas que combinan múltiples fuentes. También es útil acceder directamente a los ficheros
virtuales del kernel en /proc para obtener datos en bruto.
uptime y w — Carga del sistema
El load average (carga media) indica cuántos procesos esperaban CPU o I/O en los últimos 1, 5 y 15 minutos. En un sistema con N CPUs, un load average de N significa que las CPUs están al 100%.
Uso:
$ uptime
10:32:15 up 3 days, 2:14, 2 users, load average: 0,45, 0,62, 0,58
$ w # uptime + usuarios conectados + lo que están ejecutando
- Load average < número de CPUs → sistema sin presión
- Load average > número de CPUs → hay procesos esperando (posible saturación)
- Ver número de CPUs:
nprocolscpu | grep '^CPU(s)'
sar — System Activity Reporter
Parte del paquete sysstat. Recoge estadísticas de CPU, memoria, disco y red de forma periódica y permite consultar el historial. Es la herramienta estándar para análisis de rendimiento retrospectivo en servidores Linux.
Activación del demonio de recogida:
# apt install sysstat
# systemctl enable --now sysstat
# En /etc/default/sysstat cambiar ENABLED="false" a ENABLED="true"
Comandos principales:
$ sar # CPU del día actual (datos del demonio)
$ sar 2 5 # CPU en tiempo real: 5 muestras cada 2 segundos
$ sar -r 2 5 # memoria
$ sar -d 2 5 # actividad de disco
$ sar -n DEV 2 5 # estadísticas de red por interfaz
$ sar -f /var/log/sysstat/sa20 # datos históricos del día 20
Columnas CPU (sar sin opciones):
%user→ tiempo en procesos de usuario%system→ tiempo en llamadas al kernel%iowait→ tiempo esperando I/O — si es alto, el disco es el cuello de botella%idle→ tiempo libre
dstat / dool — Monitor combinado en tiempo real
Combina en una sola salida las estadísticas de CPU, disco, red, memoria y sistema. Es el reemplazo moderno de vmstat, iostat y netstat juntos. En distribuciones recientes puede llamarse dool.
Instalación:
# apt install dstat # Debian/Ubuntu
# dnf install dstat # Fedora/RHEL
Uso:
$ dstat # vista por defecto: CPU, disco, red, paginación, sistema
$ dstat -cdngy # CPU, disco, net, paginación, sistema
$ dstat --top-cpu # proceso que más CPU consume
$ dstat --top-io # proceso que más I/O genera
$ dstat 2 10 # 10 muestras cada 2 segundos
Salida típica:
----total-usage---- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai stl| read writ| recv send| in out | int csw
5 2 92 1 0| 12k 48k| 0 0 | 0 0 | 312 654
/proc/stat y /proc/loadavg — Ficheros del kernel
Los ficheros bajo /proc son la fuente primaria de todas las herramientas de monitorización. Son útiles
en scripts cuando no están instaladas las herramientas de usuario.
/proc/stat:
$ cat /proc/stat
cpu 12345 678 9012 345678 1234 0 56 0 0 0
cpu0 6123 340 4512 172345 612 0 28 0 0 0
cpu1 6222 338 4500 173333 622 0 28 0 0 0
...
Los campos son: user, nice, system, idle, iowait, irq, softirq, steal (tiempos acumulados en jiffies).
/proc/loadavg:
$ cat /proc/loadavg
0.45 0.62 0.58 2/312 14523
Campos: load avg 1min, 5min, 15min, procesos ejecutando/total, último PID creado.
/proc/cpuinfo y /proc/meminfo:
$ grep 'model name' /proc/cpuinfo | head -1 # modelo de CPU
$ grep 'cpu MHz' /proc/cpuinfo | head -1 # frecuencia actual
$ grep MemAvailable /proc/meminfo # memoria disponible
Resumen: qué herramienta usar en cada situación
- Sistema lento en general →
uptime(load average) +dstat - Proceso que consume CPU →
top/htop - Proceso que consume memoria →
smem -s pss -r - Disco lleno →
df -h+du -h --max-depth=1 - Disco lento (I/O) →
iostat -x 2+iotop -o - Análisis histórico →
sar -f /var/log/sysstat/saXX