在 Ubuntu 上如果发现 swap 使用很慢 / 系统因为 swap 变卡,通常不是“swap 本身慢”,而是系统太早或太频繁地使用 swap,或者swap 在慢速磁盘(HDD)上。下面按“最常见 → 最根本”的方式给你解决方案。
free -h
swapon --show
cat /proc/sys/vm/swappiness
重点关注:
Ubuntu 默认 swappiness=60,意思是内存用到 40% 就开始往 swap 挪,非常激进。
临时修改:
sudo sysctl vm.swappiness=10
永久修改:
sudo nano /etc/sysctl.conf
添加或改为:
vm.swappiness=10
一般建议:
101~51重启或执行:
sudo sysctl -p
sudo sysctl vm.vfs_cache_pressure=50
永久:
vm.vfs_cache_pressure=50
如果你现在 swap 在 HDD,那一定会卡。
查看:
swapon --show
如果是 /dev/sdX(机械盘),建议:
创建 swap 文件示例(SSD 上):
sudo fallocate -l 8G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
永久生效:
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
sudo swapoff -a
sudo swapon -a
⚠️ 前提:物理内存足够,否则会直接 OOM。
用内存压缩代替磁盘 swap:
sudo apt install zram-config
sudo systemctl enable zram-config
sudo reboot
效果:
❌ 不要直接:
swapoff -a
然后写死不启用。
原因:
✅ 桌面 / 开发机最佳方案:
swappiness=10
SSD swap 或 zram
✅ 服务器:
swappiness=1~5
足够内存 + 小 swap
如果你愿意,可以把下面命令的输出贴出来,我可以直接帮你“按你的机器定制参数”:
free -h
swapon --show
cat /proc/sys/vm/swappiness
lsblk