必须先swapoff再swapon -p设置ssd swap优先级为20000,/etc/fstab中写为sw,pri=20000且逗号不可省略,同时配合vm.swappiness=60提升交换倾向。

想让系统在超负荷时优先把数据甩到高性能 SSD 的 swap 上,关键不是“等超负荷再设置”,而是提前用 swapon -p 把 SSD swap 的 priority 设得足够高——内核会自动按这个优先级顺序填满,根本不需要等系统卡顿才干预。
SSD swap 优先级设多少才算“最高”且稳妥
数值最大是 32767,但直接设满并不好。比如你还有 HDD swap 或其他低速设备,全设成 32767,内核就会轮询写入,反而把 SSD 的优势摊薄到慢盘上。推荐做法是:
- SSD swap 设 pri=20000(留出余量,方便后续加新 swap)
- HDD swap 或大容量后备 swap 设 pri=1000 或更低
- 确保没有其他 swap 设了相同高值,避免轮询干扰响应速度
必须先停用再重设,不能热更新
swap 分区或文件一旦启用,priority 就锁死了。想改?只能先卸载再重挂:
- 查当前状态:
swapon --show=NAME,PRIORITY - 停用 SSD swap:
sudo swapoff /dev/nvme0n1p1(替换成你的设备路径) - 带优先级重新启用:
sudo swapon -p 20000 /dev/nvme0n1p1 - 验证生效:
swapon --show=NAME,PRIORITY看第三列是否为 20000
/etc/fstab 中固化配置,避免重启失效
临时设置重启就丢,要永久生效就得写进 /etc/fstab。注意格式细节,错一个逗号就加载失败:
- 正确写法:
/dev/nvme0n1p1 none swap sw,pri=20000 0 0 - 错误写法:
/dev/nvme0n1p1 none swap sw pri=20000 0 0(缺逗号) - 修改后先测试:
sudo mount -a,没报错再 reboot
配合 swappiness 控制整体倾向,别只盯 priority
priority 决定“多个 swap 之间怎么选”,而 vm.swappiness 决定“到底要不要用 swap”。即使 SSD swap 优先级拉满,如果 swappiness=10,内核仍会尽量少换出;若设为 60 或更高,才会更积极利用它应对负载高峰:
- 查看当前值:
cat /proc/sys/vm/swappiness - 临时调高(例如到 60):
sudo sysctl vm.swappiness=60 - 永久生效:写入
/etc/sysctl.conf,加一行vm.swappiness=60











