Comando Linux iostat

Linux 命令大全Manual completo de comandos de Linux


1. Resumen del comando iostat

iostat (Input/Output Statistics) es una potente herramienta de monitoreo de rendimiento en sistemas Linux, que forma parte del paquete de herramientas sysstat. Se utiliza principalmente para monitorear la actividad de E/S de disco y el uso de CPU del sistema.

1.1 Funciones básicas

  • Monitorear la velocidad de lectura/escritura de E/S de disco del sistema
  • Ver la utilización de la CPU
  • Estadísticas de carga de dispositivos
  • Identificar cuellos de botella de rendimiento de E/S

1.2 Escenarios de aplicación típicos

  • Ajuste del rendimiento del servidor
  • Análisis de rendimiento de dispositivos de almacenamiento
  • Solución de problemas de cuellos de botella del sistema
  • Planificación de capacidad

2. Instalación y uso básico

2.1 Métodos de instalación

La mayoría de las distribuciones de Linux no incluyen iostat por defecto; es necesario instalar primero el paquete sysstat:

Ejemplo

# Ubuntu/Debian
sudo apt-get install sysstat

# CentOS/RHEL
sudo yum install sysstat

# Fedora
sudo dnf install sysstat

2.2 Formato básico del comando

Ejemplo

iostat [Opciones] [Intervalo de tiempo] [Número de veces]

Ejemplo sencillo

Ejemplo

# Muestra una vez las estadísticas de todos los dispositivos
iostat

# Se actualiza cada 2 segundos, se muestra 5 veces en total
iostat 2 5

3. Explicación detallada de las opciones del comando

3.1 Opciones comunes

Opciones Descripción
-c Mostrar solo el uso de CPU
-d Mostrar solo el uso de disco
-h Mostrar en formato legible para humanos (p. ej., KB, MB, GB)
-k Mostrar datos en KB
-m Mostrar datos en MB
-N Mostrar nombres de mapeo de dispositivos
-p Mostrar estadísticas del dispositivo o partición especificados
-t Mostrar marca de tiempo
-x Mostrar estadísticas extendidas
-y Omitir la primera estadística (generalmente se usa junto con el intervalo de tiempo)

3.2 Opciones avanzadas

Opciones Descripción
-z Omitir la salida de dispositivos con actividad cero
-j ID Mostrar nombres persistentes de los dispositivos especificados
--dec={0|1|2} Especificar el número de decimales

4. Interpretación de la salida

4.1 Sección de estadísticas de CPU

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           5.32    0.00    1.06    0.25    0.00   93.37
  • %user%user: uso de CPU a nivel de usuario (aplicaciones)
  • %nice%nice: uso de CPU de procesos con prioridad ajustada
  • %system%system: uso de CPU a nivel de sistema (kernel)
  • %iowait%iowait: porcentaje de tiempo que la CPU espera a que se completen las operaciones de E/S
  • %steal%steal: tiempo "robado" en entornos virtualizados
  • %idle%idle: porcentaje de tiempo de CPU inactiva

4.2 Sección de estadísticas de disco (básica)

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               1.02        12.34         5.67    1234567     567890
  • tpstps: transferencias por segundo
  • kB_read/skB_read/s: cantidad de datos leídos por segundo (KB)
  • kB_wrtn/skB_wrtn/s: cantidad de datos escritos por segundo (KB)
  • kB_readkB_read: cantidad total de datos leídos (KB)
  • kB_wrtnkB_wrtn: cantidad total de datos escritos (KB)

4.3 Información estadística extendida (opción -x)

Device:  rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda       0.00     0.50    1.00    0.50    12.00     4.00    21.33     0.02   10.00    8.00   14.00   6.00   0.90
  • rrqm/srrqm/s: número de solicitudes de lectura combinadas por segundo
  • wrqm/swrqm/s: número de solicitudes de escritura combinadas por segundo
  • r/sr/s: operaciones de E/S de lectura completadas por segundo
  • w/sw/s: operaciones de E/S de escritura completadas por segundo
  • rkB/srkB/s: KB leídos por segundo
  • wkB/swkB/s: KB escritos por segundo
  • avgrq-szavgrq-sz: tamaño medio de datos por operación de E/S (sectores)
  • avgqu-szavgqu-sz: longitud media de la cola de E/S
  • awaitawait: tiempo de espera medio por operación de E/S (milisegundos)
  • r_awaitr_await: tiempo de espera medio de las operaciones de lectura (milisegundos)
  • w_awaitw_await: tiempo de espera medio de las operaciones de escritura (milisegundos)
  • svctmsvctm: tiempo de servicio medio por operación de E/S (milisegundos)
  • %util%util: porcentaje de utilización del ancho de banda del dispositivo

5. Análisis de ejemplos prácticos

5.1 Monitorear un disco específico

Ejemplo

# Monitorea el disco sda, se actualiza cada 2 segundos, se muestra 3 veces en total
iostat -d -x sda 2 3

5.2 Monitoreo integral de CPU y disco

Ejemplo

# Monitorea la CPU y el disco, se actualiza cada 5 segundos, se muestra de forma continua
iostat -c -d -x -t 5

5.3 Mostrar en MB

Ejemplo

# Muestra las estadísticas de disco en MB
iostat -d -m

5.4 Monitorear todas las particiones

Ejemplo

# Monitorea todas las particiones, incluyendo LVM
iostat -p ALL

6. Interpretación de métricas de rendimiento y sugerencias de optimización

6.1 Métricas clave de rendimiento

  1. %util%util: utilización del dispositivo

    • 80% significa que el dispositivo está cerca de la saturación

    • 100% sostenido significa que el dispositivo se ha convertido en un cuello de botella
  2. awaitawait: tiempo de espera de E/S

    • En condiciones normales debe ser < 10 ms
    • 50 ms indica que puede haber problemas de rendimiento

  3. avgqu-szavgqu-sz: longitud de cola

    • 1 indica que el dispositivo puede estar sobrecargado

6.2 Diagnóstico de problemas comunes

Problema 1: %util alto pero rendimiento bajo

  • Causa posible: demasiadas E/S aleatorias
  • Solución: optimizar el patrón de E/S de la aplicación, considerar el uso de SSD

Problema 2: await alto pero %util bajo

  • Causa posible: cuello de botella en el controlador o el bus
  • Solución: revisar la tarjeta HBA o el controlador de almacenamiento

Problema 3: rkB/s o wkB/s anormalmente altos

  • Causa posible: la aplicación realiza muchas lecturas/escrituras
  • Solución: optimizar la aplicación o aumentar la caché

7. Uso en combinación con otras herramientas

7.1 Combinar con vmstat

Ejemplo

# Monitorea la memoria y la E/S al mismo tiempo
vmstat 1 5 & iostat -x 1 5

7.2 Combinar con sar

Ejemplo

# Ver datos históricos de E/S
sar -d

7.3 Combinar con iotop

Ejemplo

# Encontrar los procesos específicos con alta E/S
iotop

8. Resumen y mejores prácticas

8.1 Recomendaciones de uso

  1. Al monitorear entornos de producción, se recomienda usar la opción -x para obtener datos detallados
  2. Para monitoreo a largo plazo, se debe combinar con sar para recopilar datos históricos
  3. Al analizar problemas de rendimiento, se deben tener en cuenta tanto los datos de CPU como los de E/S
  4. Comparar estadísticas de diferentes períodos de tiempo es más significativo

8.2 Combinaciones de comandos comunes

Ejemplo

# Comando de monitoreo integral
iostat -c -d -x -t -m 5

# Monitorear solo la información extendida del disco
iostat -d -x 2

# Monitorear una partición específica
iostat -p sda1 -x 1 10

Al dominar el comando iostat, los administradores de sistemas pueden monitorear y analizar eficazmente el rendimiento de E/S de los sistemas Linux, detectar y resolver rápidamente los cuellos de botella de rendimiento relacionados con el almacenamiento.

Linux 命令大全Manual completo de comandos de Linux

Otras extensiones