Comando Linux vmstat

Linux 命令大全Colección completa de comandos Linux


¿Qué es el comando vmstat?

vmstat (Virtual Memory Statistics) es una herramienta de monitoreo de rendimiento muy potente en el sistema Linux, que puede informar en tiempo real sobre indicadores clave de rendimiento del sistema, como procesos, memoria, partición de intercambio, bloques de I/O y actividad de la CPU.

Funciones principales

  • Monitoreo de memoria: muestra el uso de la memoria física y del espacio de intercambio
  • Uso de CPU: muestra el porcentaje de procesos de usuario, procesos del sistema y tiempo de inactividad
  • Estado de procesos: informa el número de procesos en ejecución, en espera y bloqueados
  • Estadísticas de I/O: proporciona información detallada sobre las operaciones de lectura/escritura de los dispositivos de bloque

Sintaxis básica y parámetros comunes

Formato de sintaxis básica

vmstat [选项] [时间间隔] [次数]

Descripción de parámetros comunes

Parámetro Descripción
-a Muestra memoria activa e inactiva
-d Muestra estadísticas de disco
-p Muestra estadísticas de la partición de disco especificada
-s Muestra un resumen de las estadísticas relacionadas con la memoria
-m Muestra información de slab
-t Añade una marca de tiempo a la salida
-S Especifica la unidad de visualización (k/K/m/M, que representan 1000/1024/1000000/1048576 respectivamente)

Explicación detallada de los campos de salida

EjecutarvmstatDespués del comando, la salida generalmente se divide en las siguientes partes:

1. Información de procesos

procs
r: 运行队列中的进程数量
b: 等待 I/O 的进程数量

2. Información de memoria

memory
swpd: 使用的虚拟内存大小(KB)
free: 空闲的物理内存大小(KB)
buff: 用作缓冲区的内存大小(KB)
cache: 用作缓存的内存大小(KB)

3. Información de la partición de intercambio

swap
si: 每秒从磁盘读入交换区的内存大小(KB/s)
so: 每秒写入磁盘的交换区内存大小(KB/s)

4. Información de I/O

io
bi: 每秒从块设备接收的块数(blocks/s)
bo: 每秒发送到块设备的块数(blocks/s)

5. Información del sistema

system
in: 每秒中断数(包括时钟中断)
cs: 每秒上下文切换次数

6. Uso de CPU

cpu
us: 用户进程占用 CPU 时间百分比
sy: 系统进程占用 CPU 时间百分比
id: 空闲 CPU 时间百分比
wa: 等待 I/O 的 CPU 时间百分比
st: 被虚拟机偷取的时间百分比

Análisis de ejemplos prácticos

Ejemplo 1: Monitoreo básico (refrescar cada 2 segundos)

Ejemplo

vmstat 2

Ejemplo de salida:

procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0      0 123456  78900 456789    0    0     5    12  345 6789 10  5 85  0  0

Ejemplo 2: Mostrar estadísticas de disco

Ejemplo

vmstat -d

La salida mostrará las estadísticas de lectura/escritura de cada disco, incluidos el número de lecturas/escrituras y el número de sectores.

Ejemplo 3: Monitoreo con marca de tiempo (cada 5 segundos, 3 veces en total)

Ejemplo

vmstat -t 5 3

La salida añadirá una marca de tiempo antes de cada línea, lo que facilita el registro y el análisis.


Guía para diagnosticar problemas de rendimiento

1. Detección de cuellos de botella en CPU

  • Valor us alto: los procesos de usuario consumen mucha CPU, puede ser necesario optimizar las aplicaciones
  • Valor sy alto: el núcleo del sistema consume mucha CPU, puede haber demasiadas llamadas al sistema
  • Valor wa alto: el tiempo de espera de I/O es largo, puede ser un cuello de botella en el disco

2. Diagnóstico de problemas de memoria

  • si/so no son 0 de manera continua: indica que el sistema está usando la partición de intercambio; la memoria física puede ser insuficiente
  • El valor de free disminuye continuamente: puede haber una fuga de memoria

3. Problemas de bloqueo de procesos

  • El valor de la columna b es grande: indica que varios procesos están esperando operaciones de I/O

Sugerencias de mejores prácticas

  1. Selección del período de monitoreo: en entornos de producción se recomienda un intervalo de 5-10 segundos para evitar afectar el rendimiento del sistema
  2. Monitoreo a largo plazo: combinarnohupla redirección de la salida a un archivo
    nohup vmstat 10 360 > vmstat.log &
  3. Análisis integral: combinartop、iostatcon otras herramientas y utilizarlas conjuntamente
  4. Pruebas de referencia: registre los datos de referencia cuando el sistema sea normal, para facilitar la comparación en caso de anomalías

Preguntas frecuentes

Q1: ¿Cuál es la diferencia entre vmstat y el comando top?

  • topProporciona información detallada a nivel de procesos
  • vmstatProporciona una visión general del uso de recursos del sistema

Q2: ¿Qué significa que los valores si/so sean muy altos?

Indica que el sistema utiliza con frecuencia la partición de intercambio; puede ser que la memoria física sea insuficiente. Se recomienda añadir memoria u optimizar el uso de memoria de las aplicaciones.

Q3: ¿Cómo monitorear un disco específico?

Utilice-pel parámetro para especificar la partición de disco:

Ejemplo

vmstat -p /dev/sda1

Al dominar el comando vmstat, podrá diagnosticar rápidamente los cuellos de botella de rendimiento del sistema Linux y proporcionar soporte de datos para la optimización del sistema. Se recomienda utilizarlo junto con otras herramientas de monitoreo en el trabajo real para obtener una visión más completa del rendimiento del sistema.

Linux 命令大全Colección completa de comandos Linux

Otras extensiones