必须先swapoff再swapon -p设置优先级,因已启用的swap无法动态修改;-p仅在启用瞬间生效,且需确保swap文件权限为0600;/etc/fstab中pri=须紧接sw后并用英文逗号分隔,否则加载失败。

不能直接改已启用的 Swap 优先级,必须先 swapoff 再用 swapon -p 重新启用——这是最常卡住人的第一步。
临时设置 swap 优先级:swapon -p 必须配合 swapoff
内核不支持运行中修改 swap 设备的 priority。你执行 swapon -p 20000 /dev/nvme0n1p1 时,如果该设备已在 swapon 状态,会报错:swapon: /dev/nvme0n1p1: swap area needs to be reinitialized。
正确流程只有三步:
- 先停用:
sudo swapoff /dev/nvme0n1p1 - 再以目标优先级启用:
sudo swapon -p 20000 /dev/nvme0n1p1 - 验证是否生效:
swapon --show=NAME,PRIORITY—— 第三列应显示20000
Swap 文件(如 /swapfile)同样适用此流程,但注意:权限必须是 0600,否则 swapon 直接拒绝挂载。
/etc/fstab 中写 pri= 的语法陷阱
fstab 里 swap 行的 pri= 不是独立字段,它必须紧接在 sw 后面、用英文逗号分隔,中间不能有空格,顺序也不能错。
错误写法(开机可能卡死或忽略优先级):/dev/sdb1 none swap sw pri=10000 0 0(缺逗号)/dev/sdb1 none swap pri=10000,sw 0 0(pri= 位置错)
正确写法:/dev/sdb1 none swap sw,pri=10000 0 0
修改后别急着重启,先跑:sudo swapon --verify 或 sudo mount -a 测试语法。fstab 有误时,系统可能卡在 initramfs 阶段,进不了登录界面。
PyCharm 2026.2.0.1 Linux版提供 JetBrains 官方 2026.2.0.1 版本安装包,适合需要指定 PyCharm 版本进行 Python 项目开发、运行和调试的用户。
多个 swap 共存时,priority 不是“只用最快的”
内核按 priority 从高到低填满设备,不是非此即彼。比如你设了两个 swap:/dev/nvme0n1p1(SSD,pri=20000)和 /dev/sdb1(HDD,pri=100),内核会先把 SSD swap 写满,再写 HDD swap。
但如果两者 priority 相同(比如都设成 32767),内核就轮询写入——此时 HDD 可能成为 I/O 瓶颈,而你以为“全走 SSD”。
推荐梯度设置:
- SSD/NVMe swap:
pri=20000 - HDD swap:
pri=100 - 备份 swap(极少启用):
pri=0或不设(默认-1)
注意:pri=0 不等于禁用,而是“仅当所有高 priority swap 耗尽且系统允许降级时才启用”。
vm.swappiness 和 priority 是两套独立开关
priority 控制“往哪写”,vm.swappiness 控制“写不写”。只调高 priority 却不控 swappiness,可能导致 SSD swap 频繁写入,加速磨损;反之 swappiness 过低(如 0),再快的 swap 也闲置。
典型搭配:
- 数据库/Redis:
vm.swappiness=1(极小交换意愿,但一旦触发就落在高性能 swap 上) - Java 混合服务:
vm.swappiness=10(允许冷页适度预换出)
临时改:sudo sysctl vm.swappiness=1;永久改:写入 /etc/sysctl.conf 并执行 sysctl -p。
真正容易被忽略的是:priority 数字本身很简单,但它的效果完全依赖于 swappiness 是否同步调整——没配好 swappiness,再高的 priority 也只是摆设。










