vmstat可同时监控CPU与内存交互瓶颈,关键看r(运行队列)、wa(I/O等待)、si/so(换页)三组联动指标:r持续高于CPU核数且wa>10%、si/so>0并伴随free下降,表明内存不足引发频繁换页和磁盘IO阻塞。

直接用 vmstat 就能同时看到 CPU 和内存的实时互动,关键是看哪些字段在联动变化,而不是单独盯某一个值。
关注 r、wa、si/so 三组联动指标
CPU 和内存的交互瓶颈往往体现在进程排队、I/O 等待和换页行为上:
- r(运行队列)持续高于 CPU 核心数:说明有进程在等 CPU,但若同时 wa 很高(>10%),大概率不是 CPU 不够,而是进程卡在 I/O 上——背后常是内存不足触发换页,导致磁盘读写拖慢整体节奏
- si 和 so 同时大于 0 且稳定波动:表示系统正频繁把页面在内存和 Swap 之间搬运。这时 free 值偏低、cache/buff 可能被压缩,而 wa 通常同步升高,因为换页要读写磁盘
- b(阻塞进程)明显上升:配合 bi/bo 增大,基本可确认是内存紧张引发 I/O 等待,进而拉高 wa,形成“内存→换页→磁盘 IO→CPU 等待”的链式反应
用合适参数抓取动态过程
单次执行看不到交互,必须带时间维度:
-
vmstat 1:每秒刷新,适合快速定位突变点(比如某个服务启动后 r 和 si 同时跳升) -
vmstat 2 10:2 秒一采,共 10 次,输出简洁,便于人工扫视趋势 - 加
-w(宽模式)和-S M(单位 MB):让数字对齐、单位直观,减少误读,例如:vmstat -w -S M 2 5
结合 free 和 top 验证内存状态
vmstat 显示的是宏观压力信号,需进一步确认内存是否真不足:
- 运行
free -h查看 available 列:它比 free 更真实反映可用内存;若 available 持续低于 10% 总内存,而 vmstat 中 swpd > 0、si/so > 0,基本坐实内存瓶颈 - 运行
top按 M 排序:看哪些进程 RSS(常驻内存)异常高,是否某个应用泄漏或配置过大 - 注意 buff/cache 是可回收的:只要 available 充足,swpd = 0、si/so = 0,即使 free 很小也不代表内存不够
典型交互场景示例
假设执行 vmstat 1 后观察到:
- 第 1–2 行:r=2, wa=1%, si=0, so=0, free=1200M → 正常
- 第 3 行起:r=8, wa=25%, si=120, so=85, free=300M → 突然恶化
- 立刻跟
free -h:available 仅剩 400M,swpd 升至 2.1G
这说明:物理内存耗尽,内核开始大量换页,磁盘忙于搬运数据,CPU 大量时间在等 I/O 完成——问题根源是内存,不是 CPU 或磁盘本身坏掉。


















