在Linux云服务器上开启zram
前言
zram 也称为 zRAM,先前称为 compcache。是 Linux 内核的核心功能,可提供虚拟内存压缩。
zram 通过在 RAM 内压缩块设备的分页,直到必须使用硬盘的交换空间,避免在磁盘进行分页,从而提高性能。
在本教程中,我将详细说明如何在 Ubuntu 22.04 配置或者启用 zRAM,设置 zRAM 的大小以及如何持久化 zRAM 的配置参数。
如果你使用其他 Linux 系统,请跳转到其他Linux系统
章节。
Ubuntu
安装
Ubuntu 上有对应的 apt 软件包,可以使用进行安装
sudo apt install zram-config
使用
安装后,会同时安装 systemctl 的服务,但是主要还是会依赖 zramctl 这个可执行文件
zramctl -help
配置
修改/usr/bin/init-zram-swapping
,重启即可。下面附有我的配置,创建与 cpu 核心数量相同的块,zram 大小为内存 (不含 swap) 的一半,算法为zstd
#!/bin/sh
modprobe zram num_devices=$(nproc --all)
# Calculate memory to use for zram (1/2 of ram)
totalmem=`LC_ALL=C free | grep -e "^Mem:" | sed -e 's/^Mem: *//' -e 's/ *.*//'`
mem=$((totalmem / 2 * 1024 / $(nproc --all)))
# initialize the devices
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 系统
创建脚本
touch /usr/bin/init-zram-swapping
chmod +x /usr/bin/init-zram-swapping
配置
修改/usr/bin/init-zram-swapping
。下面附有我的配置,创建与 cpu 核心数量相同的块,zram 大小为内存 (不含 swap) 的一半,算法为zstd
#!/bin/sh
modprobe zram num_devices=$(nproc --all)
# Calculate memory to use for zram (1/2 of ram)
totalmem=`LC_ALL=C free | grep -e "^Mem:" | sed -e 's/^Mem: *//' -e 's/ *.*//'`
mem=$((totalmem / 2 * 1024 / $(nproc --all)))
# initialize the devices
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
[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 下的内存压缩,零成本低开销获得成倍内存扩增