free -h 可查看 swap 总量和已用量,swapon --show 聚焦启用的 swap 设备及使用率,/proc/swaps 提供原始状态,vmstat 1 的 si/so 才反映 swap 活跃度。

用 free 命令看虚拟内存(swap)总量和已用情况
free 是最直接、最常用的命令,它把物理内存和 swap 一起列出来,但默认单位是 KiB,容易误读。加 -h 参数才能看清实际大小:
- 运行
free -h,重点关注Swap行的total、used、free三列 - 如果
used接近total,说明 swap 正在被大量使用,可能有内存压力 - 注意:
free显示的available是物理内存估算可用量,不包含 swap;它和 swap 使用无直接关系
用 swapon --show 查看启用的 swap 设备及使用率
这个命令只聚焦 swap,比 free 更干净,还能看到 swap 类型(文件 or 分区)和优先级:
-
swapon --show=NAME,TYPE,SIZE,USED,PRIORITY可定制输出字段,避免冗余信息 - 若输出为空,说明当前没启用任何 swap —— 这不是错误,只是系统没配置或已关闭
- swap 文件(如
/swapfile)和 swap 分区(如/dev/sda2)都支持,但文件方式更常见于云服务器或容器环境
从 /proc/swaps 读取原始 swap 状态
这是内核暴露的原始数据源,swapon --show 和 free 都基于它。适合脚本解析或排查不一致问题:
- 执行
cat /proc/swaps,每行代表一个激活的 swap 区域,字段顺序为:文件路径、类型、大小(KB)、已用(KB)、优先级 - 如果某 swap 区域显示
0在used列,但free命令里used不为 0,说明有多个 swap 区域,需累加计算 - 该文件只反映“已启用”的 swap;未启用的 swap 文件或分区不会出现其中
警惕 vmstat 里的 si/so —— 它们才是 swap 活跃度的真实指标
free 和 swapon 只告诉你“用了多少”,但看不出 swap 是否正在频繁进出。这时候要看页交换速率:
- 运行
vmstat 1,观察每秒刷新的si(swap-in,KB/s)和so(swap-out,KB/s)列 - 持续非零的
si或so(比如 >100 KB/s)意味着进程正在被频繁换入换出,哪怕used只占 swap 的 20%,也可能造成明显卡顿 - 注意:
si/so是瞬时速率,不是累计值;单次vmstat 1 5取 5 行,首行是开机平均值,应忽略
si/so 是否持续活跃,以及 free -h 中 available 物理内存是否长期低于几百 MB —— 后者才是触发 swap 的根本原因。


















