linux中swap-p是swapon的priority选项,用于启用时指定swap设备优先级(0–32767),数值越大越优先;未设置默认为-1,排最后;需swapoff后重swapon -p生效,或通过/etc/fstab的pri=值固化。

Linux 中的 swap-p(即 swapon -p)不是独立命令,而是 swapon 的 priority 选项,用于为 Swap 设备指定使用优先级。它本身不“调整”已启用设备的优先级,而是必须在启用时设定——这是优化高性能磁盘资源(如 NVMe 或 SSD)的关键控制点。
为什么优先级对高性能磁盘很重要
当系统有多个 Swap 设备(例如:一个 NVMe 上的 /swapfile + 一个 SATA HDD 上的 /dev/sdb1),内核不会按挂载顺序使用它们,而是严格按 priority 数值从高到低选择。把高 priority 分配给低延迟、高 IOPS 的设备,能确保交换操作优先落在性能更好的磁盘上,避免慢盘成为瓶颈。
- 未设置 priority 的 Swap 默认值为
-1,永远排在最后 - priority 范围是
0–32767,数值越大越优先 - 同一 priority 下,内核轮询使用(非严格顺序)
用 swapon -p 指定高性能设备的高优先级
这是最直接、最可控的方式,尤其适合临时测试或动态部署:
- 先停用已有 Swap(若已启用):
sudo swapoff /dev/nvme0n1p2 - 用
-p指定高优先级重新启用:sudo swapon -p 100 /dev/nvme0n1p2 - 验证:
swapon --show=NAME,PRIORITY—— 确认该设备显示PRIORITY为 100
⚠️ 注意:已启用的 Swap 无法动态改 priority,swapon -p 只在启用瞬间生效;修改必须走 swapoff → swapon -p 流程。
通过 /etc/fstab 固化高性能 Swap 的优先级
让高优先级在每次启动后自动生效,避免手动重复操作:
- 编辑
/etc/fstab,找到对应 Swap 行,例如:/dev/nvme0n1p2 none swap sw 0 0 - 在
sw后添加pri=100,变成:/dev/nvme0n1p2 none swap sw,pri=100 0 0 - 保存后执行
sudo swapon --all --verbose或重启,确认优先级已加载
✅ 推荐组合策略:SSD/NVMe Swap 设为 pri=100,HDD Swap 设为 pri=10,禁用的备份 Swap 设为 pri=0 或不设(默认 -1)。
配合 vm.swappiness 控制“何时换出”,避免无效争抢
仅设高 priority 不够——如果 vm.swappiness 过低(如 0 或 1),内核几乎不用 Swap,再快的磁盘也闲置;过高(如 80+)又会导致频繁写入,加速 SSD 磨损。
- 数据库/Redis 等内存敏感服务:设
vm.swappiness=1,保留极小交换意愿,但一旦触发就落到高性能 Swap 上 - 混合负载服务器(含 Java 应用):设
vm.swappiness=10,允许冷页适度预换出,发挥高速 Swap 的缓存卸载能力 - 永久生效:
echo 'vm.swappiness = 1' | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
不复杂但容易忽略:priority 决定“往哪换”,swappiness 决定“要不要换”。两者协同,才能真正把高性能磁盘资源用在刀刃上。











