在 Ubuntu(以及其他 Linux 发行版)中,swapper / swap 主要用于在物理内存不足时把内存页换出到磁盘。优化 swap 的核心目标是:避免频繁换页影响性能,同时在内存紧张时提供缓冲。下面从多个维度说明如何优化 Ubuntu 的 swap。
swapon --show
free -h
查看:
swappiness 决定系统使用 swap 的积极程度(0–100):
0:尽量不使用 swap10:内存紧张时才用60:Ubuntu 默认值100:积极使用 swap10 或 201060sudo sysctl vm.swappiness=10
sudo nano /etc/sysctl.conf
添加:
vm.swappiness=10
生效:
sudo sysctl -p
控制 inode/dentry 缓存回收倾向:
vm.vfs_cache_pressure=50
(默认 100,降低可减少不必要的回收)
Swap 性能高度依赖磁盘速度:
✅ 推荐:
❌ 不推荐:
lsblk -d -o name,rota
ROTA=1 表示机械盘
zram 是在内存中压缩 swap,速度远快于磁盘 swap。
sudo apt install zram-tools
sudo nano /etc/default/zramswap
示例:
ALGO=lz4
SIZE=50%
重启:
sudo systemctl restart zramswap
✅ 适合:
| 内存 | Swap |
|---|---|
| ≤2GB | 2× RAM |
| 2–8GB | = RAM |
| 8–64GB | 4–8GB |
| >64GB | 不必须 |
swap ≥ RAM
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
swapon --priority
示例:
/swapfile none swap sw,pri=100 0 0
/dev/sdb1 none swap sw,pri=50 0 0
优先级高者先使用。
sudo swapoff -a
并从 /etc/fstab 删除 swap 行。
⚠ 风险:OOM 时可能直接杀进程
vmstat 1
sar -W 1
关注:
si / so(swap in/out)✅ 桌面 Ubuntu
✅ 服务器
如果你愿意,可以告诉我:
我可以给你一套针对性配置方案。