Comando vmstat

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
ejecución básica de comando vmstat
Primera ejecución básica del comando

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.

identificando columnas del comando vmstat
Identificando columnas de datos del comando

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

id columnas
Ejecutado con opciones y agregando timestamp