什么是 swap 设备优先级
一台机器可以挂多块 swap 设备(分区、文件或 zram),内核按优先级决定使用顺序:数值大的先被使用,用满后再使用数值小的。未设置优先级时多个设备会被交替使用,性能特征变得不可预测——特别是把慢设备与快设备混用时表现更差。swapon --priority 可以立即设置,写入 fstab 的 sw,pri= 才能持久化。
基本信息
| 查看 | swapon --show 或 cat /proc/swaps |
|---|---|
| 设置 | swapon --priority 10 <设备> |
| 持久化 | /etc/fstab 中 sw,pri=10 |
| 取值方向 | 数值越大越优先使用 |
| 未设置时 | 多个设备轮询使用,优先级显示为负值 |
| 相关 | zram、swap 文件、vm.swappiness |
典型使用场景
- SSD 与机械盘混用:让 SSD 先承担换页,机械盘作为后备
- zram 与磁盘 swap 配合:内存压缩设备设为高优先级,减少磁盘 IO
- 多块交换分区规划的机器:让使用顺序与设备性能一致
- 性能异常排查:确认是否因为慢设备被优先使用
- 变更后核对:用 swapon --show 确认实际生效的优先级
查看与设置
查看与设置
swapon --show # 名称、类型、大小与优先级
cat /proc/swaps # 等价的内核视图
free -h | grep -i swap # 总量与已用
sudo swapon --priority 10 /dev/sdb2 # 立即调整优先级
sudo swapoff /dev/sdb2 && sudo swapon --priority 10 /dev/sdb2 # 让新优先级生效
# /etc/fstab 持久化:
# /dev/sdb2 none swap sw,pri=10 0 0
systemctl daemon-reload # fstab 变更后同步单元文件优先级策略
| 设备组合 | 建议优先级 | 理由 |
|---|---|---|
| zram + 磁盘 swap | zram 更高 | 内存压缩比磁盘快,减少 IO |
| SSD + HDD | SSD 更高 | 避免慢设备拖长换页时间 |
| 多块同型号盘 | 按计划分配 | 明确顺序,避免轮询不可预测 |
| 单块 swap | 无需设置 | 不存在择优问题 |
fstab 在 systemd 环境中会生成对应单元,改动后建议执行 daemon-reload;同时改变既有设备的优先级需要先 swapoff 再 swapon。
swapoff 会把该设备上的数据全部换回内存或迁移到其他 swap,内存紧张时执行可能直接触发 OOM,操作前先确认可用内存充足。
zram 与磁盘 swap 并用时要留意:zram 本身占用内存,压缩比下降或数据量增长时会加重内存压力,因此它的优先级策略需要与内存水位一起观察。