Comando Linux vmstat
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
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
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
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
- 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
- Monitoreo a largo plazo: combinar
nohupla redirección de la salida a un archivonohup vmstat 10 360 > vmstat.log &
- Análisis integral: combinar
top、iostatcon otras herramientas y utilizarlas conjuntamente - 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 procesosvmstatProporciona 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
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.
Otras extensiones