首页/系统/信创系统运维速查/vmstat 观察 CPU/内存/IO 概览
服务与运维65 条

vmstat 观察 CPU/内存/IO 概览

vmstat 一行数据把运行队列、内存换页、IO 与 CPU 状态摊开:r 队列高说明 CPU 排队,si/so 非零说明在换页,bi/bo 看块设备吞吐方向。

信创系统运维速查系统更新于 2026-10-13

vmstat 看什么

vmstat 用一行数据把运行队列、内存换页、块设备吞吐与 CPU 状态摊开,非常适合做第一眼的全局判断:r 队列高说明 CPU 在排队,si 与 so 持续非零说明内存吃紧在换页,bi 与 bo 反映块设备读写方向,wa 偏高说明进程在等 IO。

基本信息

适用平台Linux 全发行版(procps-ng)
采样vmstat 1 5 表示每秒一次共五次
汇总vmstat -s 看内存统计
磁盘vmstat -d 看块设备明细
首行含义自开机以来的平均值

典型使用场景

  • 系统卡顿时快速判断是 CPU、内存还是 IO 问题
  • 确认是否发生换页,排除内存不足
  • 观察运行队列长度判断是否有排队
  • 作为工单与报告的现场数据
  • 与 iostat、sar 交叉验证判断瓶颈

常用命令

常用命令
vmstat 1 5                 # 每秒采样一次,共 5 次
vmstat 1 5 | tail -n +3    # 跳过均值行,只看采样数据
vmstat -s                  # 内存与换页累计统计
vmstat -d                  # 按设备看读写次数与扇区
vmstat -w                  # 使用更宽的列宽,避免数字被折行
free -h                    # 与内存状态互相对照
nproc                      # 确认核数,便于判断 r 队列是否偏高

字段解读

字段含义异常信号
r运行队列长度持续大于 CPU 核数说明排队
b阻塞进程数偏多通常是在等待 IO
si 与 so换入与换出持续非零说明内存吃紧
bi 与 bo块设备读与写配合 iostat 定位具体设备
us 与 sy用户态与内核态占比sy 偏高多为系统调用密集
wa等待 IO 占比偏高多为磁盘或存储慢
首行是自开机以来的平均值,从第二行开始才是当前采样;判断趋势一定要看后续行,并配合 nproc 与 free -h 一起看。
si 与 so 为零不代表没有内存压力,还需要看可用内存与扫描计数;反之偶发的换页也不必然说明内存不足,要结合业务峰值判断。

组合判断

  • 队列高且用户态占比高:计算资源不足
  • 等待 IO 占比高且块读多:磁盘压力大
  • 换入换出非零:内存不足在换页
  • 阻塞进程偏多:进程卡在 IO 上
  • 空闲占比很高但业务慢:瓶颈不在主机侧

易错点

  • 拿首行均值当现状:第一行是开机以来的平均,采样行才有意义
  • wa 偏高直接归因于磁盘老化:先看 iostat 的设备级数据与进程 D 状态,再判断是容量还是硬件问题
  • 不看核数就判断 r 队列是否偏高:4 核与 64 核的合理区间差别很大
  • 只看 vmstat 下结论:它给出概览,具体定位还要结合 iostat、sar 与进程级工具
  • 把空闲占比高当成系统健康:业务慢可能卡在等待或下游依赖,主机空闲不代表链路正常

数据来源与参考

  • man 8 vmstat(procps)
  • 红帽性能调优指南
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌