在 Ubuntu 中,swap(交换分区/交换文件)的合理优化可以显著提升系统在内存紧张时的稳定性和性能。下面从是否该用 swap、大小设置、使用策略、I/O 优化、常见场景几个方面说明。
✅ 推荐使用 swap 的情况
❌ 可以不用或少用 swap 的情况
| 内存大小 | 建议 swap |
|---|---|
| ≤ 2GB | 2 × RAM |
| 2–8GB | = RAM |
| 8–16GB | 4–8GB |
| ≥ 16GB | 2–4GB(或仅用于 OOM 保护) |
| 休眠 | ≥ RAM |
swappiness(最关键)swappiness 控制内核使用 swap 的倾向(0–100)
cat /proc/sys/vm/swappiness
10–201–101sudo sysctl vm.swappiness=10
sudo nano /etc/sysctl.conf
添加:
vm.swappiness=10
保存后:
sudo sysctl -p
vfs_cache_pressure控制 inode/dentry 缓存回收倾向(默认 100)
cat /proc/sys/vm/vfs_cache_pressure
✅ 建议值:50(减少不必要的 swap)
sudo sysctl vm.vfs_cache_pressure=50
永久:
vm.vfs_cache_pressure=50
sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
swap 在 HDD 上会明显拖慢系统
sudo swapon --discard /swapfile
fstab 示例:
/swapfile none swap sw,discard 0 0
zram = 内存中压缩 swap,速度极快
sudo apt install zram-tools
配置:
sudo nano /etc/default/zramswap
示例:
ALGO=lz4
SIZE=50%
重启:
sudo systemctl restart zramswap
✅ 适合:笔记本、低内存服务器、云主机
free -h
swapon --show
sudo swapoff -a
sudo swapon -a
sudo swapoff -a
并注释 /etc/fstab 中 swap 行
vmstat 1
iostat -x 1
sar -W 1
关注:
si/so 是否频繁✅ 8GB 内存笔记本
✅ 16GB 服务器
✅ 数据库服务器
如果你愿意,可以告诉我:
我可以给你一套直接可执行的优化命令。