El vmstat (estadísticas de memoria virtual) El comando le permite monitorear el uso de la memoria de su sistema. Muestra cuánta memoria virtual hay y cuánta actividad libre y de paginación hay. Puede observar las páginas entrantes y salientes a medida que ocurren. Esto es extremadamente útil para detectar escasez de memoria física, lo que puede afectar negativamente el rendimiento del sistema.
Ejecutar vmstat sin argumentos
Antes de comenzar, es importante tener en cuenta que la primera línea de salida de vmstat (y la única que se muestra si se ejecuta sin argumentos) es un resumen desde el momento del arranque del sistema. Por lo general, no es muy útil para problemas de rendimiento, especialmente si el sistema ha estado funcionando durante mucho tiempo. Sin embargo, aún puede contener información útil sobre eventos que ocurrieron en el pasado, pero que no están ocurriendo actualmente.
# vmstat procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 3 0 387560 62140 44 348320 1 2 94 20 90 15 1 1 98 0 0
Cómo leer la salida de vmstat
La salida de vmstat contiene más que solo estadísticas de memoria. Al igual que con iostat y mpstat, vmstat acepta argumentos de intervalo y recuento. El siguiente ejemplo ejecuta 3 informes con 5 segundos de diferencia:
# vmstat 5 3 procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 3 0 384120 68604 8088 327332 1 2 90 20 90 14 1 1 98 0 0 1 0 384120 68604 8088 327364 0 0 0 0 91 179 1 0 99 0 0 0 0 384120 68232 8088 327364 0 0 0 0 107 190 1 1 98 0 0
El resultado se divide en seis secciones:
1. procesos
2. memoria
3. intercambiar
4. yo
5. sistema
6. procesador
proces
Las dos primeras columnas dan información sobre los procesos:
r | Número de procesos que están en estado de espera. Estos procesos no hacen nada más que esperar para ejecutarse. |
b | Número de procesos que estaban en modo de suspensión y fueron interrumpidos desde la última actualización |
memoria
Las siguientes cuatro columnas dan información sobre la memoria:
swpd | Cantidad de memoria virtual utilizada |
gratis | Cantidad de memoria inactiva |
mejorar | Cantidad de memoria utilizada como búfer |
caché | Cantidad de memoria utilizada como caché |
intercambiar
Las siguientes dos columnas brindan información sobre el intercambio:
si | Cantidad de memoria intercambiada desde el disco (por segundo) |
entonces | Cantidad de memoria intercambiada al disco (por segundo) |
Distinto de cero si y así los números indican que no hay suficiente memoria física y que el núcleo está intercambiando memoria a disco.
io
Las dos primeras columnas dan información sobre E/S (entrada-salida):
bi | Número de bloques por segundo recibidos desde un dispositivo de bloques |
bo | Número de bloques por segundo enviados a un dispositivo de bloques |
sistema
Las siguientes dos columnas brindan la siguiente información del sistema:
en | Número de interrupciones por segundo, incluido el reloj |
cs | Número de cambios de contexto por segundo |
procesador
Las últimas cinco columnas dan los porcentajes del tiempo total de CPU:
nosotros | Porcentaje de ciclos de CPU gastados en procesos de usuario |
si | Porcentaje de ciclos de CPU gastados en procesos del sistema (núcleo) |
identificación | Porcentaje de ciclos de CPU inactivos |
wa | Porcentaje de ciclos de CPU gastados en espera de E/S |
st | Porcentaje de ciclos de CPU robados de una máquina virtual |
Opciones de línea de comandos
Se puede incluir información adicional proporcionando diferentes opciones al comando vmstat. Se enumeran algunas de las opciones de la línea de comandos:
-a | Muestra la memoria activa e inactiva. |
-f | Muestra el número de bifurcaciones desde el arranque. |
-t | Agregue una marca de tiempo a la salida. |
-d | Informe de las estadísticas del disco. |
Cuellos de botella en la CPU
Hay dos áreas importantes de la salida de vmstat que pertenecen al rendimiento de la CPU. La primera es la r columna. Es la primera columna en la salida. Contiene un valor que corresponde a la cantidad de subprocesos que estaban en la cola de ejecución durante el último intervalo en el que se ejecutó vmstat. Estos subprocesos estaban esperando que una CPU estuviera disponible para poder ejecutarse. Hay varias escuelas de pensamiento sobre el número máximo apropiado aquí, pero la mayoría de las personas están de acuerdo en que más de 2 a 5 veces el número de CPU en el sistema muestra un cuello de botella (esta estimación debe ajustarse para CPU de varios núcleos).
El segundo lugar para buscar datos relacionados con la CPU es en las columnas de la derecha de la salida. Hay tres columnas:hora us (usuario), hora sy (sistema) y hora id (inactiva). Estos tres desglosan el uso del tiempo de CPU en porcentajes. Deben sumar 100%. Idealmente, una CPU pasará la mayor parte de su tiempo en las categorías us e id. La categoría sy se refiere al tiempo que la CPU pasa haciendo trabajo a nivel de controlador/núcleo. Este tiempo se quita de las aplicaciones de los usuarios. Si las CPU pasan la mayor parte de su tiempo en esta categoría, podría indicar un cambio de contexto excesivo debido a cuellos de botella de memoria o CPU, problemas con el bloqueo a nivel de kernel u otros problemas. Un sistema ocupado mostrará un porcentaje inactivo constante cercano a cero. Pero un sistema ocupado no significa necesariamente que el sistema esté sobrecargado.
Rendimiento de E/S/disco
La utilidad vmstat no puede decirnos qué discos tienen un cuello de botella, pero puede decirnos si hay un problema general de E/S. La columna importante en la salida es la columna b (bloqueada). Se refiere a la cantidad de subprocesos que se bloquearon o que esperaban la finalización de IO en el intervalo anterior. La columna b debe ser 0 la mayor parte del tiempo. Si hay un número distinto de cero en esa columna constantemente, puede investigar más a fondo con iostat.
Cuellos de botella de memoria
El análisis de problemas relacionados con la memoria debe comenzar con la verificación de la cantidad de memoria libre en la salida de vmstat, que se encuentra en la cuarta columna. Si la memoria libre es baja, debemos investigar más sobre qué proceso está consumiendo más memoria.
Conclusión
El comando vmstat puede ser una herramienta útil para clasificar problemas de rendimiento. Puede decirle qué subsistemas examinar más de cerca para diagnosticar mejor el problema.
Uso de iostat para monitorear el rendimiento del sistema en Linux (Ejemplos incluidos)