si和so是内存换入换出的实时指标,单位kb/秒;si>0表示页从swap换入内存,so>0表示页从内存换出到swap;持续si>0且so>0提示内存压力或颠簸风险。

直接看 si 和 so 这两列,它们就是内存换页活跃度最核心的实时指标。
怎么看 si 和 so 的数值含义
si(swap-in):每秒从 swap 区读入物理内存的数据量,单位 KB/s。数值大于 0,说明系统正在把页从磁盘交换区拉回内存;
so(swap-out):每秒从物理内存写入 swap 区的数据量,单位 KB/s。数值大于 0,说明内核正把不活跃页写到 swap 以腾出物理内存。
换页活跃 ≠ 异常,但以下情况需警惕:
- si 和 so 同时持续大于 0(比如连续多轮 >5 KB/s),代表内存反复换入换出,可能已进入颠簸(thrashing)边缘;
- si 长期稳定在几十 KB/s 以上,且 available 内存长期低于总内存的 10%,基本可判定物理内存不足;
- so 突然飙升(如从 0 跳到几百 KB/s),常伴随某进程大量分配内存或发生内存泄漏。
必须结合 swpd 和 available 一起判断
单看 si/so 容易误判,关键要交叉验证:
- 先查 swpd:若为 0,说明 swap 未启用或未使用,此时 si/so 必为 0,无需关注换页;
- 再看 available:这才是真正可用于新进程的内存。free 小但 available 充足,si/so 偶尔波动属正常页面回收;
- 如果 swpd > 0 且 available 持续偏低(例如
推荐的监控命令组合
别只跑一次,要观察趋势:
-
vmstat 2 5:每 2 秒采样一次,共 5 行,快速筛查是否存在持续换页; -
vmstat -w -t 1:宽格式 + 时间戳,适合长时间运行并记录故障前后对比; - 搭配
free -h查 available 余量,再用cat /proc/meminfo | grep -E "pgpgin|pgpgout|Swap"查累计换页次数和 swap 使用详情。
辅助字段增强判断力
当 si/so 异常时,顺带扫几眼这些列,能更快定位瓶颈类型:
- r 和 b 都偏高(如 r > CPU 核数、b > 2):说明进程既争 CPU 又等内存页加载;
- wa 显著升高(如 >15%)且与 si/so 上升同步:换页已拖慢 I/O 响应,系统变卡;
- bi/bo 也明显上升:说明换页动作加重了磁盘负载,可能引发连锁延迟。











