前言
zram 也称为 zRAM,先前称为 compcache。是 Linux 内核的核心功能,可提供虚拟内存压缩。
zram 通过在 RAM 内压缩块设备的分页,直到必须使用硬盘的交换空间,避免在磁盘进行分页,从而提高性能。
在本教程中,我将详细说明如何在 Ubuntu 22.04 配置或者启用 zRAM,设置 zRAM的大小以及如何持久化 zRAM的配置参数。
如果你使用其他Linux系统,请跳转到其他Linux系统
章节。
Ubuntu
安装
Ubuntu上有对应的apt软件包,可以使用进行安装
1
| sudo apt install zram-config
|
使用
安装后,会同时安装systemctl的服务,但是主要还是会依赖zramctl这个可执行文件
配置
修改/usr/bin/init-zram-swapping
,重启即可。下面附有我的配置,创建与cpu核心数量相同的块,zram大小为内存(不含swap)的一半,算法为zstd
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| #!/bin/sh
modprobe zram num_devices=$(nproc --all)
totalmem=`LC_ALL=C free | grep -e "^Mem:" | sed -e 's/^Mem: *//' -e 's/ *.*//'` mem=$((totalmem / 2 * 1024 / $(nproc --all)))
for i in $(seq $(nproc --all)); do DEVNUMBER=$((i - 1)) echo "zstd" > /sys/block/zram${DEVNUMBER}/comp_algorithm echo $mem > /sys/block/zram${DEVNUMBER}/disksize mkswap /dev/zram${DEVNUMBER} swapon -p 5 /dev/zram${DEVNUMBER} done
|
其它Linux系统
创建脚本
1 2
| touch /usr/bin/init-zram-swapping chmod +x /usr/bin/init-zram-swapping
|
配置
修改/usr/bin/init-zram-swapping
。下面附有我的配置,创建与cpu核心数量相同的块,zram大小为内存(不含swap)的一半,算法为zstd
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| #!/bin/sh
modprobe zram num_devices=$(nproc --all)
totalmem=`LC_ALL=C free | grep -e "^Mem:" | sed -e 's/^Mem: *//' -e 's/ *.*//'` mem=$((totalmem / 2 * 1024 / $(nproc --all)))
for i in $(seq $(nproc --all)); do DEVNUMBER=$((i - 1)) echo "zstd" > /sys/block/zram${DEVNUMBER}/comp_algorithm echo $mem > /sys/block/zram${DEVNUMBER}/disksize mkswap /dev/zram${DEVNUMBER} swapon -p 5 /dev/zram${DEVNUMBER} done
|
开机自启动,自动挂载zram
创建/etc/systemd/system/zram.service
1 2 3 4 5 6 7 8 9 10 11
| [Unit] Description=Swap with zram After=multi-user.target
[Service] Type=oneshot RemainAfterExit=true ExecStart=/usr/bin/init-zram-swapping
[Install] WantedBy=multi-user.target
|
编辑文件后,运行sudo systemctl enable zram
,重启即可
参考文章
Ubuntu启用zram
如何在 Ubuntu 20.04 开启 zRAM
配置 ZRAM,实现 Linux 下的内存压缩,零成本低开销获得成倍内存扩增