vm.swappiness是0–100的权重参数,非内存阈值,控制内核换出匿名页的倾向性:60为默认均衡值,10适合桌面,1最常用折中,0不禁止swap仅抑制非必要换出。

Linux 中调整 swappiness 不是设置“内存用到多少才换页”,而是调节内核在内存压力下换出匿名页(如程序堆、栈)的倾向性。它不控制是否启用 swap,只影响“多早、多愿意”把数据写到 swap 区。
swappiness 的实际含义和常见取值
swappiness 是一个 0–100 的权重参数,默认为 60:
- 60:内核在可用内存降到约 40% 左右时就可能开始换出匿名页,适合通用场景,但对服务器常偏高
- 10:只在内存明显紧张时才考虑换出,更依赖 page cache 回收,适合桌面或 Java 应用较多的开发机
- 1:最常用折中值,保留极小换出意愿,既基本避免主动 swap,又为 OOM 提供最后一道缓冲
- 0:不等于禁用 swap —— 内存真正耗尽时仍可能 fallback 到 swap(尤其 5.8+ 内核),或触发 OOM killer
临时修改 swappiness(重启失效)
适用于测试或快速验证效果:
Linux AI 服务器 — 将 Linux 服务器转换为本地 AI 推理集群。使用 systemd、NVIDIA CUDA 实现无头 Linux AI,零 GUI 开销。
- 用 sysctl 命令(推荐,语义清晰):sudo sysctl vm.swappiness=1
- 直接写入 proc 接口:echo 1 | sudo tee /proc/sys/vm/swappiness
- 查看当前值:cat /proc/sys/vm/swappiness 或 sysctl vm.swappiness
永久生效配置方法
要让设置在重启后仍然有效,需写入系统配置文件:
- 编辑 /etc/sysctl.conf:sudo nano /etc/sysctl.conf
- 添加或修改这一行:vm.swappiness=1
- 加载新配置:sudo sysctl --system(比 sysctl -p 更全面,推荐)
结合真实内存状态判断是否需要调优
别只看 swappiness 数值,要配合实际内存使用情况分析:
- 运行 free -h 查看 MemAvailable 和 SwapUsed
- 检查 cat /proc/meminfo | grep -E "MemAvailable|SwapTotal|SwapFree",三者一起看才准
- 如果 MemAvailable 长期低于 500MB,且 SwapUsed 持续增长,说明物理内存确实紧张,该加 RAM 而非只调 swappiness
- 若空闲内存充足但仍有频繁 swap(sar -W 显示 pgpgin/pgpgout 持续上升),大概率是 swappiness 设得太高










