vmstat 通过 bi/bo、wa、b、r、si/so 等字段组合反映吞吐量与响应的平衡状态:高 bi/bo 配低 await 和 wa 表明高效平衡;高 wa 或 b 升高则提示 I/O 阻塞导致响应延迟;si/so 持续非零揭示内存压力引发的隐性延迟;周期采样可识别间歇性失衡。

vmstat 本身不直接提供“吞吐量与响应平衡”这个抽象指标,但它输出的多个字段组合起来,能清晰反映系统在 I/O 和 CPU 层面的负载分布、资源争用程度以及请求处理效率——这正是评估吞吐量(单位时间完成的工作量)与响应(单次请求延迟)是否协调的关键依据。
看 bi/bo 和 await 的配合关系
吞吐量主要体现在 bi(每秒读块数)和 bo(每秒写块数)上,但单独数值高不代表健康;必须结合响应类指标判断是否“忙得过来”。
- bi/bo 持续高于 1000(块/秒,约 500KB/s 以上),同时 wa > 15% 或 b(不可中断进程数)> 2,说明 I/O 队列积压,响应开始变慢
- 若 bi/bo 很高但 await(iostat 中更直观,vmstat 无 await,需搭配使用)仍低于 5ms,且 wa < 5%,说明吞吐量提升未牺牲响应,系统处于良好平衡状态
- 典型失衡信号:bi/bo 中等(如 400),但 wa > 30% 或 b > 5 → 表明磁盘响应慢,吞吐被拖住,不是没活干,而是干得慢
用 r、b、wa 综合判断 CPU 与 I/O 协同效率
高吞吐常伴随高并发,这时要看 CPU 是否有效调度,还是被 I/O 卡住。
- r(运行队列长度)长期大于 CPU 核心数,且 wa 同时偏高 → CPU 等待 I/O 完成,无法及时处理新任务,吞吐上不去,响应延迟上升
- r 高但 wa 低 → CPU 真忙,瓶颈在计算,I/O 响应正常,此时可考虑优化代码或扩容 CPU
- b 显著升高(如 > 3)是 I/O 阻塞的直接证据,哪怕 bi/bo 不高,也说明有进程卡在读写上,响应已受损
结合 swap 活动识别内存引发的隐性延迟
内存不足会触发换页,导致看似 I/O 活跃、实则响应恶化——这是吞吐与响应失衡的常见隐藏原因。
- si 或 so 持续 > 0(KB/s),尤其伴随 free 极低、cache 被频繁回收 → 内存压力迫使系统频繁换页,I/O 吞吐被“污染”,响应抖动明显
- 此时 bi/bo 可能同步升高(换入换出操作),但实际业务吞吐下降,延迟上升,属于典型的虚假高 I/O + 真实低响应
- 观察 in(中断次数)是否异常高,常伴随换页活动,进一步加重 CPU 开销
用周期采样捕捉动态平衡变化
瞬时快照容易误判,持续观察才能看出趋势是否稳定。
- 执行
vmstat 2 10(每 2 秒一次,共 10 次),重点关注 r、b、wa、si/so 是否波动剧烈 - 平稳系统:各值小幅浮动,wa 始终 < 5%,b ≈ 0,si/so ≈ 0 → 吞吐与响应协调
- 失衡系统:某几轮 wa 突增至 40%,b 跳到 8,随后回落 → 存在间歇性 I/O 尖峰,响应不稳定,吞吐不可持续


















