在 Ubuntu(以及大多数 Linux 发行版)中,“swapper”一般指交换空间(swap)相关的机制,而不是某个单独的进程。优化 Ubuntu 的 swap,通常目的是:减少不必要的 swap 使用、提高性能、避免卡顿。下面从原理 + 实操角度给你一套常用优化方案。
swappiness 决定系统有多“积极”地把内存数据换到 swap。
0 ~ 100对现代机器(尤其是 SSD + 大内存)来说,60 通常太激进。
建议 swappiness = 10
cat /proc/sys/vm/swappiness
临时修改:
sudo sysctl vm.swappiness=10
永久生效:
sudo nano /etc/sysctl.conf
添加或修改:
vm.swappiness=10
建议 swappiness = 1 或 5
vm.swappiness=1
原因:swap 延迟会严重影响数据库性能。
建议 swappiness = 30~40
vm.swappiness=30
把 swap 放到压缩内存中,比磁盘快很多。
Ubuntu 20.04+ 支持 zram:
sudo apt install zram-tools
或修改配置:
sudo nano /etc/default/zramswap
示例:
ALGO=lz4
PERCENT=50
重启:
sudo systemctl restart zramswap
✅ 优点:
创建 swapfile:
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
可以一起调整:
vm.vfs_cache_pressure=50
vm.dirty_ratio=10
vm.dirty_background_ratio=5
含义简要说明:
vfs_cache_pressure:控制 inode/dentry 缓存回收dirty_ratio:控制写缓存free -h
swapon --show
vmstat 1
如果 si/so 长期不为 0,说明 swap 活跃,需要优化。
❌ 完全关闭 swap
会导致 OOM killer 直接杀进程
❌ swappiness=0
内存耗尽时仍然会 swap,只是更晚
❌ 服务器大量 swap 还能用
数据库性能会严重下降
vm.swappiness=10
vm.vfs_cache_pressure=50
如果你愿意,可以告诉我:
我可以给你一套完全定制的优化参数 ✅