En sistemas operativos Debian y similares a Unix (Linux), el comando vmstat reporta estadísticas del sistema, permitiendo obtener un detalle general de los procesos, E/S, uso de memoria/swap, actividad de CPU y estados del sistema. Esto puede ser utilizado para ayudar a identificar cuellos de botella en el rendimiento. Comprender y utilizar comandos como top y principalmente desde el modo texto de consola, son esenciales para entender que esta pasando en un sistema y deben convertirse en aliadas herramientas para personal encargado de mantener el adecuado funcionamiento de un servidor basado en Linux.
La sintaxis del comando es:
vmstat [options] [delay [count]]
Descripción del comando vmstat
El comando reporta información sobre procesos, memoria, paginación, bloques I/O y actividad de la CPU .
- Respecto a los informes generados por el comando:
-
- El primero producido dará promedios desde el último reinicio.
- Los adicionales dan información sobre un período de muestreo.
- En cualquier caso, los informes de proceso y memoria son instantáneos.
Ejecución básica
En su forma mas básica para ejecutar el comando solo basta con escribirlo en la consola, esto es:
vmstatEl primer informe generado se parecerá a lo siguiente
Descripción de los campos
Comprendiendo la salida del comando
En la siguiente imagen se agrupan los campos de las diferentes columnas, para una mejor interpretación.
Los campos a continuación son indicados para cada elemento, pueden o no ser visibles en la salida del comando vmstat (de acuerdo a las opciones pasadas y versión del comando del sistema que se este usando). Recordemos que para un mas extenso detalle del comando se puede invocar a las paginas man del comando.
Procs
- r Número de procesos que esperan el tiempo de ejecución (running).
- b Numero de procesos en sueño (sleep) ininterrumpido.
Memoria
- swpd Cantidad de memoria virtual utilizada.
- free Cantidad de memoria inactiva (free).
- buff Cantidad de memoria utilizada como buffer.
- cache Cantidad de memoria utilizada como cache.
- inact (Nota 1 ) Cantidad de memoria utilizada como inactiva (inactive).
- active (Nota 1) Cantidad de memoria activa (active ).
Nota 1: opción a pasar (-opt ) , no mostrada en la salida del comando básica, ejecutado anteriormente.
swap
- si Cantidad de memoria intercambiada desde el disco (visto desde la swap es i n (ayuda nemotécnica)) (por segundo).
- so Cantidad de memoria intercambiada al disco (visto desde la swap es o ut (ayuda nemotécnica)) (por segundo).
io
- bi Bloques recibidos de un dispositivo de bloques (bloques por segundo)
- bo Bloques enviados a un dispositivo de bloques (bloques por segundo)
system
- in Número de interrupciones (interrupts) por segundos, (incluido el reloj).
- cs Número de cambios de contexto por segundo.
cpu
Los valores aquí están expresados en porcentajes de tiempo de la CPU
- us Tiempo empleado en ejecutar código, no del kernel (tiempo de usuario (user time))
- sy Tiempo empleado en ejecutar el código del kernel. (system time)
- id El tiempo de inactividad (idle). Para linux anterior a 2.5.41, este incluye el tiempo de espera de I/O.
- wa
- st Tiempo robado (stolen) de una máquina virtual. Para Linux anterior a 2.6.11 era desconocido.
Ejecución con opción
El siguiente comando ejecuta vmstat con un periodo de 10 segundos y actualizando cada 2 segundos, con el agregado de una columna que es el timestamp . El comando ejecutado es:
vmstat 2 10 -t
o el equivalente
vmstat 2 10 --timestamp
La salida en mi sistema es mostrada en la siguiente captura