Swap 是 Ubuntu(以及所有 Linux)系统在物理内存不足时的“兜底”,但如果配置不合理,它也会成为性能瓶颈。下面从内核参数、swap 大小、使用方式、硬件选择等角度,系统性揭秘 Ubuntu Swap 优化技巧。
⚠️ 注意:Swap ≠ 内存扩展,速度远慢于 RAM
| 内存大小 | 推荐 Swap | 说明 |
|---|---|---|
| ≤ 2GB | 2 × RAM | 防止频繁 OOM |
| 2–8GB | 1 × RAM | 通用桌面 |
| 8–16GB | 4–8GB | 够用 |
| ≥ 16GB | 2–4GB | 除非需要休眠 |
| 服务器 | 1–2GB | 防止突发内存峰值 |
✅ 休眠需求 → swap ≥ 内存大小
swapon --show
free -h
cat /proc/swaps
cat /proc/sys/vm/swappiness
默认是 60(偏激进)
| 场景 | swappiness |
|---|---|
| 桌面 | 10–30 |
| 服务器 | 1–10 |
| 内存充足 | 1 |
sudo sysctl vm.swappiness=10
sudo nano /etc/sysctl.conf
添加:
vm.swappiness=10
cat /proc/sys/vm/vfs_cache_pressure
默认 100,建议:
vm.vfs_cache_pressure=50
✅ 减少 inode/dentry 被过早回收
vm.dirty_ratio = 10
vm.dirty_background_ratio = 5
✅ 避免大量写磁盘导致 swap 雪崩
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
✅ 比分区更灵活、易调整
sudo fstrim -v /
确保 fstrim.timer 启用:
sudo systemctl enable fstrim.timer
✅ 现代 SSD 寿命足够,不必过度担心
适合:
sudo apt install zram-tools
配置:
/etc/default/zramswap
适合:
echo 1 | sudo tee /sys/module/zswap/parameters/enabled
vmstat 1
sar -W 1
iostat -x 1
关注:
si / so(swap in/out)❌ Swap 越大越好
❌ 开了 swap 就慢
❌ 服务器完全不配 swap
❌ swappiness=0 一定好
✅ 正确做法:够用 + 合理配置 + 控制写入
Swap 优化 = 够用的容量 + 调低 swappiness + SSD + 合理内核参数
如果你愿意,我可以:
只要告诉我:内存大小 + 是桌面还是服务器。