临时修改vm.swappiness值可用sudo sysctl vm.swappiness=1或echo 1 | sudo tee /proc/sys/vm/swappiness,立即生效但重启失效;永久生效应新建/etc/sysctl.d/99-swap.conf写入vm.swappiness=1,再执行sudo sysctl --system加载,避免仅用sysctl -p导致遗漏。

怎么临时改 vm.swappiness 值
直接写入 /proc/sys/vm/swappiness 或用 sysctl 都行,改完立刻生效,但重启就丢:
-
sudo sysctl vm.swappiness=1—— 推荐值,极低交换倾向,保留 OOM 保底能力 -
echo 1 | sudo tee /proc/sys/vm/swappiness—— 等效,但需注意权限 -
cat /proc/sys/vm/swappiness—— 改完必须验证,别只信命令没报错
注意:sysctl 不校验范围,输个 150 不报错但内核静默忽略;必须是 0–100 整数。
怎么永久生效,又不踩 sysctl -p 的坑
写进 /etc/sysctl.conf 是老办法,但现代 systemd 系统(RHEL 8+/Ubuntu 20.04+)默认启用 sysctl.d 机制,sysctl -p 会漏掉它:
- 新建配置文件:
sudo tee /etc/sysctl.d/99-swap.conf - 重载全部:
sudo sysctl --system—— 这才是正确 reload 方式 - 别用
sysctl -p /etc/sysctl.d/99-swap.conf,它不支持.d目录语法
验证是否加载成功:sysctl vm.swappiness 输出应为 1,且 systemctl list-units | grep sysctl 显示 active。
Linux AI 服务器 — 将 Linux 服务器转换为本地 AI 推理集群。使用 systemd、NVIDIA CUDA 实现无头 Linux AI,零 GUI 开销。
为什么设成 0 还在 swap?常见误判点
vm.swappiness=0 不等于禁用 Swap,它只是“不到 OOM 绝不换出”,但以下情况仍会触发:
- 系统真没内存了:
free -h显示available接近 0,哪怕swappiness=0也会换 - Swap 根本没启用:
swapon --show空输出,说明压根没激活任何 Swap 区域 - 容器环境覆盖宿主机设置:Docker/K8s 默认不继承
sysctl,得显式加--sysctl vm.swappiness=1或 PodsecurityContext.sysctls - 用了 zram:RHEL/CentOS 8+ 默认启 zram,它压缩内存而非走磁盘 Swap,
swappiness对它无效
真正要看的是 cat /proc/meminfo | grep -E "MemAvailable|SwapTotal|SwapFree",三者一起看才准。
多个 Swap 设备共存时,swappiness 和 priority 怎么配合
swappiness 控制“要不要换”,priority 决定“换到哪”——两者独立但协同:
- 先看
swappiness是否允许换出;允许后,再按priority从高到低选 Swap 设备 - 查当前优先级:
swapon --show=NAME,PRIORITY或cat /proc/swaps第三列 - 设新优先级必须先
sudo swapoff /swapfile,再sudo swapon -p 100 /swapfile - 固化到
/etc/fstab:/swapfile none swap sw,pri=100 0 0,pri比-p更可靠
没显式设 priority 的 Swap,默认是 -1,永远排最后——哪怕 swappiness=100 也不会优先用它。
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!










