si和so是判断swap是否频繁换页最核心指标:so>0且持续非零表明内存压力导致swap out,si>0意味着需从磁盘读回页面引发延迟,si/so同步频繁跳动即为颠簸状态;需结合swpd上升、free下降及available偏低交叉验证,并排除脏页回写干扰。

直接看 si 和 so 这两个字段,它们是判断 Swap 是否频繁换页最核心的指标。
关注 si 和 so 的实时波动
这两个值单位是 KB/s,代表每秒从交换分区读入内存(si)或写入交换分区(so)的数据量:
- so > 0 且持续不为零:说明系统正在把内存页“挤出”到磁盘,即发生 Swap Out,是内存压力的第一信号
- si > 0:说明程序又需要这些被换出的页,得从磁盘读回来,即 Swap In,意味着后续可能伴随明显延迟
- 如果 si 和 so 同时频繁跳动(比如每秒都出现几十到几百 KB),基本可以确认系统处于“颠簸(thrashing)”状态——换页开销已严重吞噬 CPU 和 I/O 资源
结合 swpd 和 free 综合判断
单看 si/so 只知道“在换”,还要看“为什么换”:
- swpd 持续增大:已使用的交换空间不断上涨,说明内存缺口在扩大
- free 值持续走低甚至逼近 0:空闲物理内存见底,内核被迫启用 Swap
- 注意:free 值低 ≠ 一定缺内存,因为 Linux 会把大量内存用于 cache/buffer;真正关键的是 available(可通过
free -h查看),它已扣除了可回收缓存,更反映真实可用余量
用合适参数持续观察趋势
一次快照容易误判,建议用带时间戳的周期采样:
- 命令示例:
vmstat -t 2 10(每 2 秒输出一行,共 10 行,含时间戳) - 重点关注连续多行中
si/so是否稳定高于 0,而不是某一行偶然跳一下 - 若发现
swpd在上升、free在下降、si/so同步活跃,就不是偶发抖动,而是确凿的内存不足迹象
排除干扰:确认是不是真 Swap,不是脏页回写
有时 bi/bo(块设备 I/O)也高,容易和 Swap 混淆。区分方法:
- Swap 换页走的是交换分区设备(如 /dev/sda2),而脏页回写走的是文件系统所在磁盘
- 如果
so高但bo并不高,基本就是 Swap 写入;反之如果bo显著高于so,更可能是脏页刷盘(可查/proc/vmstat | grep dirty) - Swap 活跃时,
wa(I/O 等待)通常也会同步升高,因为磁盘在忙于换页











