Uso del comando iostat con ejemplos en linux.
El comando iostat se usa para monitorear la carga de entrada/salida (I/O) del dispositivo del sistema, normalmente el/los discos. La herramienta vigila el tiempo que los dispositivos están activos en relación con sus velocidades promedio de transferencia.
Al invocar iostat, se generan informes muy útiles para detectar sobrecargas y poder equilibrar el I/O de los discos del sistema. En este articulo conoceremos las opciones más usadas, así como una detallada explicación del informe.
Comando iostat
Uso del comando iostat con ejemplos en linux
Instalar iostat
Iostat viene incluido en el paquete sysstat. Normalmente no suele venir instalado por defecto, por tanto primero debemos instalarlo.
Debian, Ubuntu, Linux Mint y derivados:
sudo apt install sysstat
Rhel, CentOS, Fedora y derivados:
sudo yum install sysstat o sudo dnf install sysstat
Arch Linux, Manjaro y derivados:
sudo pacman -Sy sysstat
Sintaxis y uso básico de iostat
Una vez tengamos instalado el paquete de herramientas sysstat ya lo podemos utilizar, pero primero vemos su sintaxis (muchas opciones).
iostat [ -c ] [ -d ] [ -h ] [ -N ] [ -k | -m ] [ -t ] [ -V ] [ -x ] [ -z ] [ [ [ -T ] -g group_name ] { device [...] | ALL } ] [ -p [ device [,...] | ALL ] ] [ interval [ count ] ]
Para comenzar ejecutamos el comando sin opciones.
iostat
Obtenemos una salida similar a…
Linux 3.10.0-1062.12.1.el7.x86_64 (sololinux.es) 06/03/20 _x86_64_ (8 CPU) avg-cpu: %user %nice %system %iowait %steal %idle 1,30 0,05 0,56 0,02 0,00 98,07 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn sda 17,56 71,00 229,79 43223900 139898988
Explicación del informe de iostat
Si revisamos la salida de ejemplo anterior, observamos que se divide en tres partes.
- Sistema
- CPU
- Dispositivo
La información del sistema es muy básica, pero cumple a la perfección como preámbulo de lo que viene después. Nos dice que tipo de sistema tenemos: Kernel, hostname, fecha, sistema y numero de núcleos de la cpu.
En el segundo apartado la cosa se complica, nos aporta los datos de consumo de la cpu que pasamos a explicar en la siguiente tabla.
Nombre | Qué es... |
---|---|
%user | Muestra el porcentaje de uso de la CPU a nivel de usuario normal |
%nice | Muestra el porcentaje de uso de la CPU a nivel de usuario con prioridades |
%system | Muestra el porcentaje de uso de la CPU del kernel del sistema |
%iowait | Muestra el porcentaje de tiempo que las CPU estaban inactivas y el sistema recibió peticiones I/O |
%steal | Muestre el porcentaje de tiempo que las CPU permanecían en espera mientras el hipervisor mandaba el servicio a otro procesador |
%idle | Muestra el porcentaje de tiempo que las CPU estaban inactivas y el sistema no recibía ninguna petición I/O |
Por ultimo tenemos el apartado Device (dispositivo), que también pasamos a ver en una tabla.
Nombre | Qué es... |
---|---|
Device | Nombre del dispositivo como esta en /dev |
tps | Número de transferencias por segundo que se emitieron al dispositivo |
Blk_read/s (kB_read/s, MB_read/s) | Cantidad de datos leídos del dispositivo indicados en diferentes bloques ( kilobytes , megabytes ) por segundo |
Blk_wrtn/s (kB_wrtn/s, MB_wrtn/s) | Cantidad de datos escritos en el dispositivo indicados en varios bloques (kilobytes, megabytes) por segundo |
Blk_read (kB_read, MB_read) | Número total de bloques (kilobytes, megabytes) leídos |
Blk_wrtn (kB_wrtn, MB_wrtn) | Número total de bloques (kilobytes, megabytes) escritos |
rrqm/s | Número de solicitudes de lectura por segundo en la cola del dispositivo |
wrqm/s | Número de solicitudes de escritura por segundo en la cola del dispositivo |
r/s | Número de solicitudes de lectura por segundo completadas |
w/s | Número de solicitudes de escritura por segundo completadas |
rsec/s (rkB/s, rMB/s) | Número de sectores (kilobytes, megabytes) leídos por segundo |
wsec/s (wkB/s, wMB/s) | Número de sectores (kilobytes, megabytes) escritos por segundo. |
avgrq-sz | Promedio del tamaño (en sectores) de las solicitudes que se emitieron al dispositivo |
avgqu-sz | Promedio del tamaño (en sectores) de la cola de solicitudes que se emitieron al dispositivo |
await | Promedio del tiempo (en milisegundos) de las solicitudes I/O emitidas al dispositivo |
r_await | Promedio del tiempo (en milisegundos) de las solicitudes de lectura emitidas al dispositivo |
w_await | Promedio del tiempo (en milisegundos) de las solicitudes de escritura emitidas al dispositivo |
svctm | Promedio del tiempo (en milisegundos) de las solicitudes I/O emitidas al dispositivo (versiones obsoletas de iostat, en deshuso) |
%util | Promedio del tiempo de uso CPU en el cual se emitieron solicitudes I/O al dispositivo (ancho de banda del dispositivo) |
Opciones de iostat
Ahora vemos las opciones de iostat, así como las variables de entorno a tener en cuanta.
Opción | Uso |
---|---|
-c | Uso de la CPU |
-d | Uso del dispositivo |
-g group_name { device [...] | ALL } | Estadísticas de un grupo de dispositivos |
-h | Imprimir los informes más fáciles de interpretar por un humano |
-k | Estadísticas en kilobytes por segundo |
-m | Estadísticas en megabytes por segundo |
-N | Muestra los nombres del mapeador de los dispositivos registrados |
-p [ { device [,...] | ALL } ] | Muestra las estadísticas de dispositivos por bloque incluyendo las particiones usadas por el sistema |
-T | Solo se muestran las estadísticas por grupo de dispositivos |
-t | Imprimir la hora en cada informe, no solo la fecha |
-V | Versión de sysstad |
-x | Estadísticas ampliadas |
-z | Omitir la salida del dispositivo que no tiene actividad actualmente |
---------- | -------------------- |
Variables de entorno | |
Variables | Casos de uso |
S_TIME_FORMAT | Si esta variable existe y su valor es ISO, se omitirá la actual configuración regional y se utilizará el formato ISO 8601 ( AAAA - MM - DD ) |
POSIXLY_CORRECT | Con esta variable las velocidades de transferencia se imprimirán en bloques de 512 K en vez de 1K |
Ejemplos de iostat
El uso más común de iostat es con la opción x.
iostat -x
ejemplo…
avg-cpu: %user %nice %system %iowait %steal %idle 1,30 0,06 0,56 0,02 0,00 98,06 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,05 9,13 3,41 14,17 70,32 240,96 35,40 0,05 2,79 0,25 3,40 0,08 0,14
Si solo quieres obtener la info de la cpu.
iostat -c
ejemplo…
avg-cpu: %user %nice %system %iowait %steal %idle 20,69 0,09 5,03 1,60 0,00 72,59
Si por el contrario solo quieres ver las estadísticas del dispositivo.
iostat -d
ejemplo…
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn sda 17,58 70,29 240,89 43227940 148144276
Mostrar estadísticas ampliadas del dispositivo.
iostat -xd
ejemplo…
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,05 9,13 3,41 14,17 70,28 240,88 35,39 0,05 2,79 0,25 3,40 0,08 0,14
Ahora solicitamos el informe de estadísticas tres veces, en un intervalo de dos segundos y en Kilobytes.
iostat -k 2 3
ejemplo de salida…
avg-cpu: %user %nice %system %iowait %steal %idle 1,30 0,06 0,56 0,02 0,00 98,06 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn sda 17,57 70,21 240,74 43228024 148218228 avg-cpu: %user %nice %system %iowait %steal %idle 0,63 0,00 0,13 0,00 0,00 99,25 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn sda 5,00 0,00 44,00 0 88 avg-cpu: %user %nice %system %iowait %steal %idle 1,63 0,00 1,00 0,00 0,00 97,37 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn sda 12,50 0,00 272,00 0 544
Vemos el informe de la CPU dos veces, en un intervalo de dos segundos.
iostat -c 2 2
ejemplo de salida…
avg-cpu: %user %nice %system %iowait %steal %idle 1,30 0,06 0,56 0,02 0,00 98,06 avg-cpu: %user %nice %system %iowait %steal %idle 0,13 0,00 0,13 0,00 0,00 99,75
Como ultimo ejemplo mostramos las estadísticas por bloque.
iostat -p
ejemplo de salida…
avg-cpu: %user %nice %system %iowait %steal %idle 1,30 0,06 0,56 0,02 0,00 98,06 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn sda 17,57 70,19 240,68 43228032 148232928 sda1 0,00 0,04 0,00 21885 104 sda2 17,57 70,11 240,68 43182809 148232824 sda3 0,00 0,03 0,00 21024 0
Conclusión final
Hoy hemos visto una herramienta indispensable para un control total de los dispositivos, ademas tiene la particularidad que no es necesario ser root para poder visualizar las estadísticas. Puedes ver su manual en linea de comandos ejecutando lo siguiente…
man iostat
Canales de Telegram: Canal SoloLinux – Canal SoloWordpress
Espero que este articulo te sea de utilidad, puedes ayudarnos a mantener el servidor con una donación (paypal), o también colaborar con el simple gesto de compartir nuestros artículos en tu sitio web, blog, foro o redes sociales.
Tus tutoriales me han sido de gran ayuda, como sugerencia fuera de mostrar el comando y las diferentes banderas que tiene, también sería muy valioso que se muestren los ejemplos de cuando hay un comportamiento normal y anormal
Hola.
Si por comportamiento te refieres a los resultados de salida, es imposible. Todo depende de tu sistema en particular, o de si hablamos de un desktop o un servidor.
Tal vez una salida que para mi trabajo es normal, para otro usuario puede ser anormal.