Arch Linux Setup Zram

on 2024-09-28

zram 介绍

zram, 是一个用于在内存中创建压缩的块设备的 Linux 内核模块, 即带实时磁盘压缩的内存盘, 通过 zram 创建的块设备可以用作 swap 或是内存盘

将数据在内存中进行压缩, 意味着实际占用的物理内存比原始数据要少, 可以有效地增加了可用内存

同时 zram 不进行磁盘 I/O 操作, 对比磁盘 swap, 不会明显的降低系统性能

开启 zram

启动 zram 有很多种方式, 以下选用 zram-generator 进行开启

  1. 安装软件包

    yay -S zram-generator
    
  2. 编辑配置文件

    sudo vim /etc/systemd/zram-generator.conf
    

    在其中写入一下内容

    # /etc/systemd/zram-generator.conf
    [zram0]
    zram-size = ram / 2
    compression-algorithm = lz4
    

    设置中的 zram 大小实际是指最大未被压缩的数据量, 同时 zram 设备在创建后并不会消耗内存, 因此在设置时你可以将 zram 大小设置的与物理内存相同甚至更大

    压缩算法选择

    算法压缩速度解压速度压缩率CPU 占用备注
    LZO非常快非常快较低适用于实时数据处理, 低 CPU 需求场景
    LZO-RLE中等对于高重复工作的场景有更好的压缩率
    LZ4极快极快较低压缩与解压速度最快, CPU 占用少, 适合快速内存交换场景
    zstd中等压缩率最高, 但所需资源多, 适合内存需求大, 但 CPU 需求少的场景
  3. 重载配置

    sudo systemctl daemon-reload
    
  4. 启动服务

    sudo systemctl start systemd-zram-setup@zram0.service
    

    zramN 需要与配置文件中的设备名保持一致

  5. 检查

    使用 zramctl 命令可查看当前的数据压缩情况

    zramctl
    # 将会输出类似的结果
    NAME       ALGORITHM DISKSIZE DATA COMPR TOTAL STREAMS MOUNTPOINT
    /dev/zram0 lz4           415M   4K   70B   20K       4 [SWAP]
    

    查看支持的压缩算法

    sudo cat /sys/block/zram0/comp_algorithm
    # 当前使用的算法将被框出
    lzo lzo-rle [lz4] zstd