Be a happy coder

You are here

Vmstat, controlando el rendimiendo

20 Jul 2012

Vmstat es un comando que nos permite obtener un detalle general de los procesos, E/S, uso de memoria/swap, estado del sistema y actividad del CPU. Es esencial para entender que esta pasando en tu sistema, detectar cuellos de botella y en general, controlar el rendimiento.

root@server1:~# vmstat
procs -----------memory----------         ---swap-- -----io----  -system--   ----cpu----
r  b   swpd   free   buff  cache              si   so       bi    bo     in   cs        us sy id wa
1  0  47280 198392  91624 1330312    2    2       15     4     13   12      28  6 65  1

Como interpretar esta salida:

procs (procesos)
La columna r muestra los procesos en espera de tiempo de CPU. La columna b muestra cuantos están en sueño ininterrumpible, lo que significa que están esperando un acceso E/S (disco, red, entrada de usuario, otros).

memory (memoria)
La columna swpd muestra cuantos bloques han sido volcados a disco (paginados). Las tres columnas restantes muestran cuantos bloques están libres -free- (no usados), cuantos están siendo usados por buffers -buff- y cuantos están siendo usados por la caché del sistema operativo -cache-.

swap
Estas columnas muestran la actividad del swap: cuantos bloques por segundo está intercambiando el sistema operativo desde disco (si - swapping in) y hacia disco (so - swapping out). Estos son valores mucho más importantes a monitorizar que la columna swpd. Queremos ver que si y so en un valor 0 la mayor parte del tiempo, y definitivamente no queremos llegar a ver más de 10 bloques por segundo.

io (E/S)
Estas columnas muestran cuantos bloques por segundo están siendo leídos desde (bi) y escritos hacia (bo) los dispositivos de bloques. Esto normalmente refleja la actividad de E/S del disco.

system
Estas columnas muestran el número de interrupciones por segundo (in) y el número de cambios de contexto por segundo (cs).

cpu
Estas columnas muestran los porcentajes totales de tiempo de CPU consumido en ejecutar código de usuario (us), ejecutar código del sistema (sy), inactividad (id, idle) y espera de E/S (wa). Una posible quinta columna (st) muestra el porcentaje "robado" por una máquina virtual, si se está utilizando virtualización. Se refiere a el tiempo durante el cual algo pudo ejecutarse en la máquina virtual, pero el hipervisor eligió ejecutar algo más en su lugar. Si la máquina virtual no quiere ejecutar nada más y el hipervisor ejecuta algo más, eso no cuenta como tiempo robado.

Si se ejecuta el comando “vmstat” sin opciones, nos muestra una unica línea, que contiene promedios calculados desde la última vez que se arrancó el sistema.

Para generar una línea de salida cada 5 segundos utilizamos vmstat 5. Si queremos mostrar líneas cada 5 segundos durante 20 segundos utilizamos vmstat 5 20.

Etiquetas: