vm.swappiness 是 Linux 内核参数,控制系统使用 Swap 交换分区的积极程度。
| 数值范围 | 含义 |
|---|---|
| 0 ~ 100 | 值越小,越优先使用物理内存;值越大,越积极使用 Swap |
| 默认值 | Debian/Ubuntu 默认为 60 |
| 使用场景 | 推荐值 | 原因 |
|---|---|---|
| 服务器(内存充足) | 10 | 减少磁盘 I/O,提升响应速度 |
| 数据库服务器 | 1 | 对延迟极度敏感,尽量避免 Swap |
| 桌面电脑(内存 8G+) | 10~20 | 流畅优先,减少卡顿 |
| 桌面电脑(内存 ≤ 4G) | 60(默认) | 内存紧张,需要用 Swap 兜底 |
| 代理/VPN 服务器 | 10 | 延迟敏感,减少 Swap 影响 |
| 低负载家用机 | 60(默认) | 不需要优化,保持默认即可 |
# 方法一(直接看数值) cat /proc/sys/vm/swappiness # 方法二(带参数名显示) sysctl vm.swappiness
sudo sysctl vm.swappiness=10
验证:
cat /proc/sys/vm/swappiness # 输出:10
方法一:修改 /etc/sysctl.conf(最常用)
sudo nano /etc/sysctl.conf
在文件末尾添加或修改这一行:
vm.swappiness = 10
保存退出(Ctrl + X → Y → Enter)。
立即生效:
sudo sysctl -p
方法二:创建独立配置文件(更干净,推荐)
sudo nano /etc/sysctl.d/99-swappiness.conf
写入:
vm.swappiness = 10
保存退出,然后生效:
sudo sysctl -p /etc/sysctl.d/99-swappiness.conf
# 查看当前值 sysctl vm.swappiness # 检查所有配置文件中是否有 swappiness 设置 grep -r "vm.swappiness" /etc/sysctl.conf /etc/sysctl.d/ 2>/dev/null
检查是否有多个 vm.swappiness 设置冲突
grep -r "vm.swappiness" /etc/sysctl.conf /etc/sysctl.d/
如果有多个,系统以最后加载的那个为准。
确认是否执行了 sysctl -p
修改配置文件后必须执行此命令才能生效。
重启后是否还在?
永久修改必须写在 .conf 文件里,临时修改重启会丢失。
把这个保存为 set_swappiness.sh:
#!/bin/bash # swappiness 一键设置脚本 # 检查是否以 root 运行 if [ "$EUID" -ne 0 ]; then echo "请以 root 权限运行: sudo ./set_swappiness.sh" exit 1 fi # 设置目标值 TARGET=10 # 写入配置文件 echo "vm.swappiness = $TARGET" > /etc/sysctl.d/99-swappiness.conf # 立即生效 sysctl -p /etc/sysctl.d/99-swappiness.conf # 验证 echo "当前 swappiness 值: $(cat /proc/sys/vm/swappiness)"
运行:
chmod +x set_swappiness.sh sudo ./set_swappiness.sh
修改后可以用以下命令观察变化:
# 查看内存和 Swap 使用情况 free -h # 实时监控(每秒刷新) watch -n 1 free -h # 查看具体哪些进程在用 Swap sudo smem -s swap # 或 for file in /proc/*/status ; do awk '/VmSwap|Name/{printf $2 " " $3}END{ print ""}' $file 2>/dev/null; done | grep kB | sort -k2 -n
| 操作 | 命令 |
|---|---|
| 查看当前值 | sysctl vm.swappiness |
| 临时修改为 10 | sudo sysctl vm.swappiness=10 |
| 永久修改为 10 | 写入 /etc/sysctl.d/99-swappiness.conf |
| 生效配置 | sudo sysctl -p |
| 检查冲突 | grep -r "vm.swappiness" /etc/sysctl.conf /etc/sysctl.d/ |