[Share Experiences] 【转帖】linux 开启 ram 内存压缩
Tofloor
poster avatar
王猛龙
deepin
2024-12-11 19:09
Author

为了方便自己使用,我在写一遍

原文链接

注意,cpu 太次的 就别用了,低于 Intel 10th 的 就别试!!!

  1. 开启/加载 zRAM 模块

    $ sudo modprobe zram num_devices=1
    # 然后再执行命令,看看是否有如下打印
    $ lsmod  | grep zram
    zram                   36864  0
    
  2. 持久化开启/加载 zRAM 模块

    • 载入zRam

      $ echo "zram" | sudo tee -a /etc/modules-load.d/zram.conf
      
    • 创建模块的配置文件

      $ echo "options zram num_devices=1" | sudo tee -a /etc/modprobe.d/zram.conf
      
  3. 配置zRam

    • 可以运行 cat 命令查看两个文件来确定 zRAM 文件的大小和压缩算法

      $ cat /sys/block/zram0/disksize # 如果没配置过大小,运行结果是 0
      $ cat /sys/block/zram0/comp_algorithm # 运行结果是 [lzo-rle] lzo 
      
    • 通过两个文件设置 zRAM 文件的大小和压缩算法
      大小按照你电脑内存大小改,如果小于等于16gb ,就写 16G, 如果大于16gb,比如32gb,可以用一半 写成16G 或者 32G
      我是32gb 的内存,系统监视器里显示是 31.2GB,所以我就用 30G

      $ echo "30G" | sudo tee /sys/block/zram0/disksize
      $ echo "lzo" | sudo tee /sys/block/zram0/comp_algorithm
      
  4. 持久化 zRAM 配置

    $ echo 'KERNEL=="zram0", ATTR{disksize}="30G",TAG+="systemd"' | sudo tee  /etc/udev/rules.d/99-zram.rules
    $ echo 'KERNEL=="zram0", ATTR{disksize}="30G", ATTR{comp_algorithm}="lzo", TAG+="systemd"' | sudo tee  /etc/udev/rules.d/99-zram.rules
    
  5. 激活 zRAM

    $ sudo mkswap /dev/zram0
    $ sudo swapon /dev/zram0
    
  6. 自动挂载 zRAM

    $ sudo vim /etc/systemd/system/zram.service
    # 加入如下内容:
    [Unit]
    Description=Swap with zram
    After=multi-user.target
    
    [Service]
    Type=oneshot
    RemainAfterExit=true
    ExecStartPre=/sbin/mkswap /dev/zram0
    ExecStart=/sbin/swapon /dev/zram0
    ExecStop=/sbin/swapoff /dev/zram0
    
    [Install]
    WantedBy=multi-user.target
    # wq 后保存文件,再运下边命令
    $ sudo systemctl enable zram
    
    
    
  7. 重启电脑

Reply Favorite View the author
All Replies
王猛龙
deepin
2024-12-11 19:23
#1

重启后输入 sudo systemctl status zram 打印如下:

image.png

Reply View the author
liuyongzhang
deepin
2024-12-11 20:17
#2

这个更简单

https://bbs.deepin.org/post/270814

deepin的方式:
先安装
sudo apt install systemd-zram-generator
修改配置文件
sudo deepin-editor /usr/lib/systemd/zram-generator.conf
写入:

[zram0]
compression-algorithm = zstd
zram-size = ram / 2
swap-priority = 100

这里创建了一个使用zstd压缩、大小为所有可用内存容量一半的zram swap 设备(ram/2表示大小为 RAM大小的1/2;也可以设置为4G、512M这样的值)

详细扩展参数看:https://github.com/systemd/zram-generator

启用服务:

systemctl daemon-reload
systemctl start /dev/zram0

调用 zramctl 或 swapon 以确认设备已创建并正在使用中。

$zramct
lNAME       ALGORITHM DISKSIZE DATA COMPR TOTAL STREAMS MOUNTPOINT
/dev/zram0 lzo-rle       4.8G   4K   80B   12K       4[SWAP]

注意:在动完磁盘和相关操作重启之前一定要更新一下initramfs

sudo update-initramfs -c -k all

Reply View the author
zmqsybzc
deepin
2024-12-11 22:28
#3

其实低于10代的或许也能试试,i9-9980XE也是低于10代的joy (我记得这玩意儿有18核心36线程,多核能跟12700K比)

Reply View the author
王猛龙
deepin
2024-12-12 11:30
#4

可以在磁盘管理中查看是否成功:

image.png

Reply View the author
哄哄
deepin
2024-12-18 11:17
#5
zmqsybzc

其实低于10代的或许也能试试,i9-9980XE也是低于10代的joy (我记得这玩意儿有18核心36线程,多核能跟12700K比)

这个跟cpu性能够不够没有很大的关系了,内存压缩一般是内存不够用的才开,舍得买好cpu不舍得多买一张内存条?怕cpu拉高了调一下压缩等级不就好了

Reply View the author