【随手记录】vmstat 一个常用的 Linux 系统性能监控工具

vmstat 是一个常用的 Linux 系统性能监控工具,用于报告虚拟内存统计信息、进程、内存、分页、块 IO、陷阱和 CPU 活动等系统整体性能数据。

基本语法

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

常用选项

  • -a:显示活跃和非活跃内存

  • -f:显示从系统启动至今的 fork 数量

  • -m:显示 slab 信息

  • -n:只在开始时显示一次各字段名称

  • -s:显示内存相关统计信息及多种系统活动数量

  • -d:显示磁盘统计信息

  • -p:显示指定磁盘分区统计信息

  • -S:使用指定单位显示(k, K, m, M,默认为 K)

  • -t:在输出中包含时间戳

  • -w:宽输出模式

基本使用示例

1. 显示一次系统状态

bash
vmstat

输出示例:

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 1023456  12345 456789    0    0    25    30  100  200 10  5 85  0  0

2. 定期刷新显示

bash
# 每2秒刷新一次
vmstat 2

# 每1秒刷新一次,共刷新5次
vmstat 1 5

输出字段详解

Procs(进程)

  • r:等待运行的进程数

  • b:处于不可中断睡眠状态的进程数

Memory(内存)

  • swpd:使用的虚拟内存大小(KB)

  • free:空闲内存大小(KB)

  • buff:用作缓冲的内存大小(KB)

  • cache:用作缓存的内存大小(KB)

Swap(交换分区)

  • si:每秒从磁盘读入到交换分区的数据量(KB)

  • so:每秒从交换分区写入磁盘的数据量(KB)

IO(输入输出)

  • bi:每秒从块设备接收的块数(blocks/s)

  • bo:每秒发送到块设备的块数(blocks/s)

System(系统)

  • in:每秒中断次数

  • cs:每秒上下文切换次数

CPU(处理器)

  • us:用户进程占用 CPU 时间百分比

  • sy:系统(内核)占用 CPU 时间百分比

  • id:空闲 CPU 时间百分比

  • wa:等待 IO 的 CPU 时间百分比

  • st:虚拟机被 hypervisor 偷去的时间(虚拟化环境)

实用示例

1. 显示详细信息

bash
# 显示活跃/非活跃内存
vmstat -a

# 显示系统启动以来的内存统计
vmstat -s

# 显示磁盘统计信息
vmstat -d

2. 监控特定时间段

bash
# 监控系统30秒,每2秒更新一次
vmstat 2 15

3. 带时间戳监控

bash
# 带时间戳的宽输出
vmstat -tw 1 10

4. 查看特定磁盘分区

bash
# 查看 sda1 分区信息
vmstat -p /dev/sda1

常见问题诊断

1. CPU 瓶颈

  • r 值持续 > CPU 核心数:CPU 繁忙

  • us 值持续 > 70%:用户进程消耗过多 CPU

  • sy 值持续 > 30%:系统内核消耗过多 CPU

2. 内存瓶颈

  • siso 持续 > 0:内存不足,开始使用交换分区

  • free 值持续很小:物理内存紧张

3. IO 瓶颈

  • wa 值持续 > 20%:IO 等待时间长

  • b 值持续 > 0:有进程在等待 IO

与类似命令对比

  • top:实时进程监控

  • free:内存使用情况

  • iostat:IO 统计信息

  • mpstat:CPU 统计信息

  • sar:系统活动报告(更全面)

vmstat 是一个轻量级但功能强大的工具,适合快速查看系统整体性能状况。

posted @ 2025-12-18 10:11  空知大仙人  阅读(3)  评论(0)    收藏  举报