GNU/Linux >> Tutoriales Linux >  >> Linux

Uso de vmstat para solucionar problemas de rendimiento en Linux

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)


Linux
  1. Uso de nfsstat y nfsiostat para solucionar problemas de rendimiento de NFS en Linux

  2. Uso de Windows Performance Analyzer para solucionar problemas de rendimiento

  3. 24 ejemplos de iostat, vmstat y mpstat para la supervisión del rendimiento de Linux

  4. Cómo solucionar problemas de rendimiento en Linux – Guía para principiantes

  5. Cómo calcular el uso de memoria en Linux usando sar, ps y gratis

Identifique cuellos de botella en el rendimiento de Linux utilizando herramientas de código abierto

Usando el comando libre de Linux

Cómo verificar la memoria compartida de Linux usando el comando ipcs

Comando Linux vmstat - Herramienta para informar estadísticas de memoria virtual

Solucionar problemas y monitorear el rendimiento del sistema Linux con nmon

Una guía para el comando vmstat en Linux