直接运行vmstat 1即可动态监控cs(上下文切换)和in(中断次数),需同步观察r、b列联动:r超cpu核数表cpu过载,b升高表i/o阻塞,in与cs同步飙升表中断风暴。

直接看 vmstat 输出的几个关键字段组合,就能快速判断系统是否健康。它不提供单一“健康分”,但通过几组数值联动分析,能清晰反映 CPU、内存、I/O 三大核心子系统的负载状态。
重点关注运行队列与 I/O 等待(r 和 wa)
这两个数字是系统响应是否变慢的第一信号:
-
r值长期大于 CPU 核心数(比如 4 核机器上r ≥ 5持续出现),说明任务排队严重,CPU 可能成为瓶颈 -
wa值持续高于 20%,尤其伴随高bi/bo,表明磁盘 I/O 正在拖慢整个系统 - 若
r高 +wa也高,大概率是 I/O 密集型任务(如数据库查询、日志刷盘)占满队列,需查iostat或iotop定位具体设备或进程
结合内存使用与交换活动(free、swpd、si、so)
空闲内存少 ≠ 内存紧张,关键看是否发生实际换页:
-
swpd > 0但si == 0 && so == 0:只是预分配了交换空间,不影响性能 -
si或so持续大于 0(例如每秒几 MB):系统正频繁搬移内存页,内存已不足,性能会明显下降 -
free很低 +buff/cache占比极高(>80% 总内存):缓存虽多,但若available(可用内存)仍充足(free -h中的available字段),通常无需干预
观察系统级压力指标(b、cs、in)
这些反映底层资源争用程度:
-
b值经常大于 0(如b ≥ 3):有进程卡在不可中断睡眠,常见于磁盘或 NFS 响应慢 -
cs每秒超 10000 次,且sy同步升高:可能有大量短生命周期进程或锁竞争,需用pidstat -w追踪 -
in显著升高(如 > 5000/秒):硬件中断频繁,可能是网卡收包过载或驱动异常
用法建议:动态采样比单次快照更有价值
- 快速抓趋势:
vmstat 2 5(每 2 秒一次,共 5 组),避开首行“启动平均值”干扰 - 长期留痕排查:
vmstat 10 > /tmp/vmstat-$(date +%s).log &,事后对比波动节点 - 配合验证:
wa高时立刻跑iostat -x 2看%util和await;si/so非零时用free -h和cat /proc/meminfo | grep -E "MemAvailable|SwapFree"查真实余量
不复杂但容易忽略











