Tutoriel Linux

Vmstat en Linux: ¿RAM saturada, CPU o disco?

Débutant5 min de lecture

Un servidor se está ralentizando, pero arriba no siempre muestra un proceso que esté bloqueado al 100%. Con vmstatEn pocos segundos se puede ver si las tareas están pendientes en el procesador, el disco o la memoria. Siempre y cuando, claro está, no se saquen conclusiones de la primera línea.

Siempre empiezo con varias muestras, luego hago una referencia cruzada de los contadores con gratis, iostato y los procesos. Esta es la única manera de distinguir la verdadera presión de memoria de una CPU sobrecargada o un almacenamiento que no responde correctamente.

Tux compara la RAM, la CPU y la E/S para diagnosticar un servidor Linux.
Vmstat ayuda a distinguir entre una cola de CPU, presión de memoria y espera de E/S.

Ejecutar vmstat en varias muestras

vmstat normalmente pertenece al paquete O procps-ngComience tomando una lectura cada segundo, con un total de seis líneas:

vmstat 1 6

La primera línea resume la actividad desde el inicio. No describe con precisión la segunda línea que acaba de transcurrir. Para diagnosticar una ralentización continua, concéntrese en leer las siguientes líneas. La opción -w Amplía las columnas si los valores resultan difíciles de leer:

vmstat -w 1 6

Mantén abierta una segunda terminal. Inicia la lectura, reproduce la acción lenta y luego anota las columnas que cambian simultáneamente. Un pico aislado durante una operación de guardado o compilación no tiene el mismo impacto que una cola que permanece alta durante varios minutos.

Lee las columnas r, b y CPU juntas.

ensayos, Esto indica el número de tareas ejecutables que se están ejecutando o esperando tiempo de procesador. Compare este valor con el número de procesadores lógicos:

nproc
tiempo de actividad

Si r permanece muy por encima del número de CPU disponibles y que a nosotros O si a nosotros corresponde al código ejecutado en el espacio de usuario, mientras que si mide el trabajo del núcleo. Un valor si Un valor inusualmente alto puede deberse a un gran número de llamadas al sistema, interrupciones o cambios de contexto.

la columna b Esto incluye tareas atascadas en un estado de suspensión ininterrumpible, a menudo esperando entrada o salida. b montar con Comprueba el almacenamiento antes de culpar a la CPU. Washington representa el tiempo durante el cual el procesador está inactivo mientras una operación de entrada/salida está pendiente.

  • tiempo de inactividad de la CPU;
  • Washington : esperando entrada/salida;
  • calle : tiempo que tarda el hipervisor en una máquina virtual.

En un VPS, un calle La repetición repetida puede indicar un host físico sobrecargado. En una máquina física, esta columna normalmente permanece en cero. La guía en el carga promedio en Linux Esta lectura es completa, ya que la carga también incluye algunas tareas bloqueadas y no se limita a un porcentaje de CPU.

Reconocer la verdadera presión de memoria con if y only if

las columnas swpd, gratis, pulir Y oculto Proporcionan una vista compacta de la memoria. No son suficientes para indicar la saturación. Linux reutiliza parte de la RAM como caché, y gratis En vmstat no reemplaza la columna disponible gratis.

libre -h

swpd Indica la cantidad de intercambio de memoria utilizada. Un valor distinto de cero no demuestra que el sistema siga intercambiando páginas. Preste especial atención a esto. si Y entonces basado en muestras recientes:

  • : datos leídos desde el archivo de intercambio a la RAM;
  • entonces : datos movidos de la RAM al archivo de intercambio.

Valores repetidos en si O entonces, un recuerdo disponible Una memoria persistentemente baja y tiempos de respuesta degradados constituyen una fuerte señal de presión de memoria. Un área de intercambio antigua y ocupada sin actividad de intercambio actual no tiene la misma importancia. La guía sobre RAM libre y disponible intercambiar bajo Linux Explica por qué no debes vaciarlo por reflejo.

Confirme una espera de disco con bi, bo e iostat.

en la sección yo, bi Y bo representan los bloques recibidos y enviados por segundo. Muestran la actividad general, pero no el dispositivo responsable ni su tiempo de respuesta. Si b Y Washington permanecer alto, cambiar a iostato :

iostat -xz 1 5

mira en particular esperar, la cola y % útil Para cada disco. No se fíe de un único umbral: una unidad SSD NVMe puede gestionar varias operaciones en paralelo, mientras que un disco duro se degrada rápidamente con el acceso aleatorio. Compare los valores con el comportamiento habitual del equipo y el procesamiento actual.

El artículo sobre iostat en Linux

journalctl -k -b -p advertencia..alerta
systemctl --failed

vmstat Indica la naturaleza probable del bloqueo, no el nombre del proceso. A continuación, ordena las tareas según el recurso sospechoso:



arriba

En ESTADÍSTICA, un estado D Esto generalmente corresponde a un sueño ininterrumpido. Puede explicar una columna. El PID es alto, pero no lo detengas inmediatamente. Primero, identifica su servicio, archivos abiertos y registros:

ps -fp PID
systemctl status service-concerned --no-pager
journalctl -u preocupación-servicio -n ​​100 --no-pager

Una base de datos puede consumir mucha RAM sin fugas, y un proceso en un estado D Es posible que esté esperando un disco o almacenamiento en red. Reiniciar el sistema a veces solo disimula el síntoma sin solucionar el problema. Antes de tomar cualquier medida, compruebe la duración, la carga de trabajo y los errores.

Tomar decisiones en función de los contadores superpuestos.

El diagnóstico se vuelve útil cuando varias columnas cuentan la misma historia:

  • CPU saturada : r sigue siendo alto en comparación con nproc, con a nosotros O si alto y pequeño identificación ;
  • : disponible mantente agachado, si O entonces El retorno se produce en varias muestras y la latencia aumenta;
  • disco en espera : b Y Washington levántate, entonces iostato confirma que el dispositivo es lento;
  • contienda de virtualización calle Permanece visible en una máquina virtual a pesar de una carga interna moderada.

journalctl -k -b | grep -Ei 'sin memoria|oom-killer|proceso eliminado'

Allá Página del manual de vmstat describe cada campo. El de iostato Registra las métricas de almacenamiento. Conserva las lecturas antes y durante la ralentización: sin una comparación a lo largo del tiempo, incluso un contador alto resulta difícil de interpretar.

sudo apt update && sudo apt upgrade