Ubuntu配置zswap缓解内存压力

AI大语言模型

OpenCode + Edge(5-10个标签) + VSCode + Wine,2013 年的老本本 8G 内存很快就见底了,Nuxt 构建时总假死。配置 zswap 后问题明显改善。

清理旧的 Swap

在进行新配置之前,建议先检查并清理现有的 Swap 状态,避免冲突。

查看当前的 Swap 状态:

swapon --show

关闭所有正在使用的 Swap 分区或文件:

sudo swapoff -a

创建 Swap

创建文件:分配 8GB 空间(Linux Swap设置为多大比较适合):

sudo fallocate -l 8G /swapfile

设置权限:为了安全起见,Swap 文件只能由 root 用户读写:

sudo chmod 600 /swapfile

格式化:将该文件标记为 Swap 空间:

sudo mkswap /swapfile

启用 Swap:立即激活该文件:

sudo swapon /swapfile

开机挂载:执行以下命令,将配置追加到文件末尾:

echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

开启并配置 zswap

zswap 是一个轻量级的压缩缓存,它可以在数据写入磁盘 Swap 之前先进行压缩,从而大幅减少磁盘读写,延长 SSD 寿命并提升性能。

编辑 GRUB 配置文件:

sudo gedit /etc/default/grub

修改内核参数:找到 GRUB_CMDLINE_LINUX_DEFAULT 这一行,在引号内添加以下参数:

zswap.enabled=1 zswap.compressor=lz4 zswap.max_pool_percent=20
  • zswap.enabled=1:开启 zswap。
  • zswap.compressor=lz4:使用 LZ4 算法,这是一种在压缩率和速度之间取得极佳平衡的算法。
  • zswap.max_pool_percent=20:限制 zswap 最多占用物理内存的 20%。

更新 GRUB 并重启:

sudo update-grub
sudo reboot

验证配置结果

重启系统,确认配置是否成功生效。

检查 zswap 状态:执行以下命令,如果返回 Y,说明 zswap 已成功开启。

cat /sys/module/zswap/parameters/enabled
# 预期输出: Y

检查 Swap 状态:再次查看 Swap 信息,确认能看到我们创建的 /swapfile。

swapon --show
# 预期输出: 包含 /swapfile 的信息
AI大语言模型