1. 禁用 zswap
Debian 12 默认未启用 zswap,但如果你不确定,可以手动禁用它。
方法 1:永久禁用 zswap(推荐)
编辑 GRUB 配置文件:
sudo nano /etc/default/grub
在 GRUB_CMDLINE_LINUX_DEFAULT 选项中添加 zswap.enabled=0:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash zswap.enabled=0"
保存后,更新 GRUB 并重启:
sudo update-grub
sudo reboot
方法 2:临时禁用 zswap(重启后失效)
运行以下命令:
echo 0 | sudo tee /sys/module/zswap/parameters/enabled
2. 关闭物理 Swap 分区(如有)
如果系统已经设置了 Swap 分区或 Swap 文件,建议先禁用它们,避免对 SSD 产生写入。
sudo swapoff -a
然后确认没有启用 Swap:
swapon --summary
如果有 Swap 分区,建议从 /etc/fstab 中删除相关条目,防止开机时启用:
sudo nano /etc/fstab
找到类似:
UUID=xxxxxxx none swap sw 0 0
将其注释掉:
# UUID=xxxxxxx none swap sw 0 0
然后保存并退出。
3. 安装并启用 zram
安装 zram-tools:
sudo apt install zram-tools
编辑 zram 配置:
sudo nano /etc/default/zramswap
修改以下内容:
ALGO=lz4 # 使用 lz4 压缩,速度快
PERCENT=50 # 使用 50% 的 RAM 作为 zram 交换空间(可根据内存大小调整)
保存后,启动 zram:
sudo systemctl enable --now zramswap.service
确认 zram 是否启用:
swapon --summary
如果生效,应该能看到 /dev/zram0 之类的设备。
4. 调整 swappiness(减少不必要的 Swap 触发)
默认情况下,Linux 可能会在 RAM 仍有空间时使用 Swap。为减少这种情况,将 swappiness 调低:
echo "vm.swappiness=10" | sudo tee -a /etc/sysctl.conf
使更改生效:
sudo sysctl -p
vm.swappiness=10 表示只有在 RAM 快耗尽时才会使用 zram。如果想进一步减少 Swap 依赖,可以尝试 vm.swappiness=5。
5. 验证配置
确保 zswap 已禁用:
cat /sys/module/zswap/parameters/enabled
返回 N 或 0 代表已禁用。
确保 zram 已启用:
swapon --summary
应该看到 /dev/zram0,并且 TYPE 为 partition。
确保 swappiness 设置正确:
cat /proc/sys/vm/swappiness
返回 10 代表已生效。
6. 最终效果:
✅ zswap 关闭,避免与 zram 冲突。
✅ 物理 Swap 关闭,减少 SSD 写入。
✅ zram 启用,在 RAM 压力大时提供压缩 Swap,提高效率。
✅ swappiness 降低,确保系统优先用 RAM,只有在 RAM 逼近耗尽时才使用 Swap。
适用场景:适合 16GB 以上 RAM 的系统,特别是 SSD 设备,能有效减少磁盘写入并优化内存使用。