在Linux云服务器上开启zram

2023 年 8 月 22 日 星期二(已编辑)
/
这篇文章上次修改于 2025 年 2 月 3 日 星期一,可能部分内容已经不适用,如有疑问可询问作者。

阅读此文章之前,你可能需要首先阅读以下的文章才能更好的理解上下文。

在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 下的内存压缩,零成本低开销获得成倍内存扩增

使用社交账号登录

  • Loading...
  • Loading...
  • Loading...
  • Loading...
  • Loading...