做什么
一行综合 CPU / 内存 / IO / swap 的状态——**排查"为什么卡"**的常用第一步。
实战
vmstat 1 # 每秒采样
vmstat 1 5 # 每秒一次,共 5 次
vmstat -S M 1 # 内存用 MB
vmstat -d # 各磁盘 IO
vmstat -s # 综合统计
输出列
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 5000000 100000 1500000 0 0 20 50 100 200 5 2 92 1 0
| 列 |
含义 |
r |
等运行的进程数 ★ |
b |
阻塞中的进程数 |
swpd |
用的 swap 量 |
free |
空闲内存 |
buff cache |
缓存 |
si so |
swap in/out(> 0 说明在 swap) |
bi bo |
块设备读写(块/秒) |
in |
中断/秒 |
cs |
上下文切换/秒 |
us sy id wa st |
CPU 用户 / 内核 / 空闲 / IO 等待 / 偷取 |
关键阈值
| 看 |
何时担心 |
r |
> CPU 核数 → CPU 跑不过来 |
b |
持续 > 0 → 进程在等 IO / 锁 |
si/so |
> 0 → 内存吃紧到 swap 了 |
wa |
> 20% → 磁盘 IO 瓶颈 |
st |
> 1% → 虚拟机被偷 CPU(云上邻居打架) |
实战:性能问题排查
vmstat 1
# 持续观察 30 秒
# 看到:
# r 持续 > 核数 → CPU 不够
# wa 持续高 → 磁盘慢 / IO 瓶颈
# si/so 持续 → 内存不够(在 swap)
# cs 异常高 → 上下文切换过多(线程太多 / 锁竞争)
配合其他工具
vmstat 1 + top / htop # 进程视角
vmstat 1 + iostat -x 1 # 磁盘细节
vmstat 1 + sar # 历史数据
坑
- 第一行是自开机以来平均,不准——看第二行起
wa 高不一定是磁盘问题——可能是NFS / iSCSI 等远端 IO
- 现代 SSD 时代
bi/bo 数字大很正常——结合 iostat 看延迟