iostat - Estadísticas de CPU y E/S de Disco
iostat reporta utilización de CPU y estadísticas de E/S de disco por dispositivo — rendimiento, IOPS, latencia de solicitud y profundidad de cola. Es la parada estándar inicial para diagnosticar cuellos de botella de almacenamiento en Linux: ¿está saturado el disco?, ¿están las solicitudes en la cola?, ¿se dispara la latencia? Se distribuye como parte del paquete sysstat junto a mpstat, pidstat y sar.
Installation
| Plataforma | Comando |
|---|
| Debian/Ubuntu | sudo apt install sysstat |
| Fedora/RHEL | sudo dnf install sysstat |
| Arch Linux | sudo pacman -S sysstat |
| macOS | iostat está integrado (salida diferente) |
| Verificar | iostat -V |
Basic Usage
| Comando | Descripción |
|---|
iostat | Un reporte desde el arranque (CPU + dispositivos) |
iostat 2 | Refresca cada 2 segundos |
iostat 2 5 | 5 reportes, 2 segundos aparte |
iostat -x | Estadísticas extendidas (las útiles) |
iostat -d | Solo estadísticas de dispositivo (sin CPU) |
iostat -c | Solo estadísticas de CPU |
The Command You Actually Want
# Extendido, legible para humanos, por dispositivo, cada 2s
iostat -xmt 2
| Flag | Efecto |
|---|
-x | Estadísticas extendidas (util%, await, aqu-sz, …) |
-m | Reporta en MB/s (usa -k para KB/s) |
-t | Imprime un timestamp con cada reporte |
-p DEV | Muestra particiones de un dispositivo (p. ej. -p sda) |
-d 2 | Reporte de dispositivo cada 2 segundos |
-h | Formato legible para humanos, NVMe-friendly |
Reading Extended Output (-x)
| Columna | Significado |
|---|
r/s, w/s | Solicitudes de lectura/escritura por segundo (IOPS) |
rMB/s, wMB/s | Rendimiento de lectura/escritura |
rareq-sz / wareq-sz | Tamaño promedio de solicitud |
r_await, w_await | Latencia promedio lectura/escritura (ms) — métrica clave |
aqu-sz | Profundidad promedio de cola (solicitudes en vuelo) |
%util | Fracción de tiempo que el dispositivo estaba ocupado |
Interpreting the Signals
| Observación | Interpretación |
|---|
%util cerca de 100% | Dispositivo está saturado (cuidado en SSD/NVMe — puede paralelizar) |
Alto await (decenas de ms+) | Las solicitudes son lentas — cuello de botella de latencia |
Alto aqu-sz | Solicitudes se acumulan más rápido de lo que el disco drena |
| IOPS altos, rendimiento bajo | E/S aleatorio pequeño (carga típica DB/metadatos) |
| IOPS bajo, rendimiento alto | E/S secuencial grande (backups, streaming) |
En SSD/NVMe modernos, %util puede leer 100% mientras el dispositivo aún tiene margen (atiende solicitudes en paralelo). Confía en await y aqu-sz más que en %util.
CPU Section
| Campo | Significado |
|---|
%user / %nice | Tiempo en espacio de usuario |
%system | Tiempo en el kernel |
%iowait | CPU inactiva esperando E/S (pista de presión de almacenamiento) |
%steal | Tiempo robado por el hipervisor (vecinos ruidosos) |
%idle | Tiempo inactivo |
Alto %iowait junto con alto await de disco apunta directamente al almacenamiento como el cuello de botella.
Common Workflows
# Observa un cuello de botella de disco sospechoso en directo
iostat -xmt 2
# Enfócate en un dispositivo y sus particiones
iostat -xmt -p nvme0n1 2
# Correlaciona iowait de CPU con latencia de dispositivo durante una prueba de carga
iostat -xmt 1 60 > iostat.log
| Herramienta | Enfoque |
|---|
| iostat | E/S por dispositivo + estadísticas de CPU |
| iotop | Qué proceso está haciendo la E/S |
| dstat/dool | CPU/disco/net combinado en una vista |
| sar | Actividad del sistema histórica/grabada |
Usa iostat para ver que el dispositivo es lento, luego iotop para encontrar qué proceso es responsable.
Resources