si和so持续非零(如≥50 KB/s)且伴随r偏高、wa上升,表明内存不足引发频繁换页;需用vmstat 2 10等持续观察,结合swpd、available、r、b及bi/bo交叉验证,并通过top或pidstat定位高swap占用进程。

直接看 si 和 so 这两列,它们就是换入换出的实时速率,单位是 KB/s。只要这两个值持续非零,就说明系统正在频繁交换页面,内存可能已吃紧。
识别换入换出是否异常
vmstat 默认输出中,swap 区域的 si(swap-in)和 so(swap-out)是核心指标:
- si > 0:表示每秒正从磁盘 swap 区域读取数据到物理内存
- so > 0:表示每秒正把内存中的不活跃页写入 swap 区域
- 若连续多次采样(如
vmstat 1 5)中 si 或 so 都明显大于 0(比如 ≥50 KB/s),且伴随 r(运行队列)偏高、wa(I/O 等待)上升,基本可判定内存不足引发换页压力 - 注意:偶尔出现小数值(如 si=2、so=0)属正常回收行为,无需干预;真正危险的是持续、稳定、量级较大的换页活动
用合适参数持续观察趋势
单次快照容易误判,应结合时间维度观察变化:
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
- 执行
vmstat 2 10:每 2 秒采集一次,共 10 次,便于发现波动规律 - 加
-S M让数值以 MB 为单位显示,更易读:vmstat -S M 2 10 - 若需长期盯屏,可省略 count(如
vmstat 3),手动 Ctrl+C 停止 - 避免只看第一行(系统启动以来平均值),它掩盖实时压力,重点看后续采样行
结合其他字段交叉验证
仅看 si/so 不够,需联动判断是否真由内存短缺引起:
- 检查 swpd 列:若该值长期 > 0,说明 swap 已被启用,换页有实际载体
- 观察 free 和 available(后者需配合
free -h查看):available 显著偏低(如低于总内存 5%)时,换页更可信 - 留意 r 和 b:r 长期高于 CPU 核心数 + b > 0,常与换页并发,反映进程因缺内存而阻塞或等待 I/O
- 对比 bi/bo:若 bi/bo 也同步升高,说明换页正加重磁盘负载,形成恶性循环
进一步定位换页源头
确认存在换页后,可深入排查谁在“吃”内存:
- 用
top或htop,按 SWAP 列排序,找出占用 swap 最多的进程 - 运行
pidstat -r 1,观察各进程的 minflt/s(次要缺页)和 majflt/s(主要缺页)——majflt/s 高意味着频繁从 swap 换入 - 查
/proc/swaps或swapon --show,确认 swap 设备是否配置合理(如优先级、大小) - 必要时用
vmstat -a 2查看活跃/非活跃页比例,辅助判断内核页面回收效率

















