Mostrar estadísticas de I/O con iostat

Truco en Linux: Mostrar estadísticas de I/O con iostat

iostat es una herramienta fundamental para administradores de sistemas y desarrolladores que necesitan diagnosticar el rendimiento de disco y CPU en tiempo real. Forma parte del paquete sysstat y permite medir estadísticas de entrada/salida, identificar cuellos de botella y optimizar recursos en servidores Linux.

1. Instalación y requisitos previos

  • Distribuciones basadas en Debian/Ubuntu:
    sudo apt-get update ampamp sudo apt-get install sysstat
  • Distribuciones RHEL/CentOS/Fedora:
    sudo yum install sysstat
  • Verifica la versión de iostat:
    iostat -V

Para más detalles sobre sysstat, consulta el repositorio oficial: sysstat en GitHub. Para la documentación de iostat, visita la página de manual en línea: iostat(1) man page.

2. Conceptos básicos de iostat

Al ejecutar iostat sin parámetros, obtendrás un informe resumido del uso de CPU y las estadísticas de I/O desde el último reinicio del sistema:

iostat

Linux 5.x.x (servidor)   09/15/2023     _x86_64_    (8 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           5.22    0.01    2.15    0.37    0.00   92.25

Device            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda              2.06        12.49         5.18    1500000     620000
    

Para entender cada columna, revisa la siguiente tabla:

Columna Descripción
tps Transacciones por segundo (número de peticiones de I/O al dispositivo).
kB_read/s Kbytes leídos por segundo.
kB_wrtn/s Kbytes escritos por segundo.
%user, %system, %iowait Porcentaje del tiempo de CPU en modo usuario, sistema y esperando I/O.

3. Monitoreo en tiempo real

Una de las grandes ventajas de iostat es su modo interactivo, repitiendo el reporte cada cierto intervalo:

iostat -x 2 5

Linux 5.x.x (servidor)   09/15/2023     _x86_64_    (8 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           6.30    0.01    3.51    0.45    0.00   89.73

Device            r/s     w/s   rkB/s   wkB/s rrqm/s wrqm/s  %rrqm  %wrqm r_await w_await aqu-sz      await  svctm  %util
sda              1.00    0.50    20.0    10.0    0.00   0.00   0.00   0.00    5.00    8.00  0.01      6.50   1.00   0.15
    

Explicación de columnas avanzadas (iostat -x):

  • r/s, w/s: operaciones de lectura/escritura por segundo.
  • rrqm/s, wrqm/s, %rrqm, %wrqm: solicitudes fusionadas antes de enviarse al disco.
  • r_await, w_await: tiempo promedio de espera para operaciones de lectura/escritura (ms).
  • svctm: tiempo promedio de servicio por petición (ms).
  • %util: porcentaje de utilización del dispositivo.

4. Casos de uso y diagnóstico

Con los datos de iostat, puedes abordar múltiples escenarios:

  1. Cuellos de botella en disco: %util cercano a 100% o tiempos de espera elevados (await) indican saturación.
  2. Problemas de contención de CPU vs I/O: alto %iowait señala que la CPU pasa mucho tiempo esperando operaciones de disco.
  3. Optimización de montajes: comparar estadísticas antes y después de cambiar opciones de montaje (por ejemplo, noatime).
  4. Benchmarking: medir impacto de diferentes configuraciones de RAID, tipos de almacenamiento (HDD vs SSD).
  5. Monitoreo programado: generar reportes periódicos guardando la salida en archivos para análisis histórico o graficado.

5. Opciones avanzadas

  • -d: muestra solo estadísticas de dispositivos (sin CPU).
  • -p [dispositivo]: incluye particiones además del dispositivo.
  • -m: muestra valores en megabytes en lugar de kilobytes.
  • -t: incorpora marca de tiempo en cada muestra.
  • -j: salida en formato JSON para integración con herramientas programáticas.

6. Integración con gráficos y análisis

Para visualizar tendencias de I/O, puedes:

  • Exportar la salida de iostat -xt -m 5 288 a un archivo iostat.log.
  • Procesar los datos con awk o Python para extraer métricas clave.
  • Crear gráficas con gnuplot, Grafana o Matplotlib.

Ejemplo de comando para guardar datos:

iostat -xt -m 2 3600 gt /var/log/iostat_(date %F_%T).log

7. Buenas prácticas

  • Programa iostat con cron o systemd timers para obtener métricas continuas.
  • Combina con vmstat y iotop para un diagnóstico más completo.
  • Monitorea particiones críticas (por ejemplo, /var, /home).
  • Revisa configuraciones de RAID y cachés de disco si detectas latencias anómalas.

Con iostat, dispones de una visión granular y en tiempo real de tus subsistemas de almacenamiento. Aprovecha estas métricas para anticipar problemas y mejorar el rendimiento de tus servidores Linux.

  • Hola 👋 , soy la IA de Linuxmind.dev, te puedo ayudar a aprender.
Gathering thoughts ...

Leave a Reply

Your email address will not be published. Required fields are marked *