【经验分享】用 ZRAM 替代 SWAP,榨干内存的每一分价值

系统安装、升级讨论
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
回复
头像
大宝
帖子: 3060
注册时间: 2008-06-30 22:32
联系:

【经验分享】用 ZRAM 替代 SWAP,榨干内存的每一分价值

#1

帖子 大宝 » 2023-01-01 23:27

一、起因
鄙人的电脑是微软的 Surface Pro3 平板,已经有 7 年的历史,现在安装了 Kubuntu 20.04.3

没在意是动了哪里,近几天,在打字时总感觉出字不顺畅,延迟比较明显,放音乐时也是断断续续的,于时对 CPU 使用率进行检查,一切正常,又对内存进行检查,发现内存使用率不足50%,但 swap 却了用近80%,当时只是开了钉钉(包括在线文档编辑)、WPS、QQ 和 Audacious 而已,虽说 4G 内存放在这年头的确是小了点,但可用内存还剩这么多, swap 却是如此之高的使用率肯定是让人不爽的。

可能有人会说“加内存啊”,不好意,在下的 Surface 平板,有加内存的那点功夫还不如直接买新电脑了,但这年头的经济,买不起啊~
可能有人又会说“扩大 swap 啊”,又是不好意思,鄙人的硬盘才 128G,还做了个双系统,为了节省空间,同时方便切换,又划了个数据分区,硬盘空间实在是紧张啊

于是对 vm.swappiness 进行修改,反复尝试了两天,发现就算把数值改成 1,甚至最后改成 0,只要一开钉钉、微信和 WPS 三件套,swap 使用率就居高不下,若再开个 Edge,总是一卡一卡的。

代码: 全选

sudo swapoff -a && sudo swapon -a
重启 swap,但十几秒后,swap 用量又窜上去了……

之后,又尝试修改了 vm.dirty_ratio、vm.dirty_background_ratio、vm.dirty_expire_centisecs、vm.vfs_cache_pressure 的参数,感觉没啥效果

二、用 ZRAM 替代 SWAP
昨晚躺床上,突然想起以前折腾过一段时间的 zram,用它来替代 swap 行不行呢?
今天一早,测试开始:

1、关闭了 swap,仅使用内存

代码: 全选

sudo swapoff -a
只开了钉钉、微信、QQ 、一个终端(本想着若系统卡顿,立即启用 swap)和 Edge,4G内存几乎被占满,但当在打开 WPS 时,随即系统立即卡死,连在终端中开 swap 的机会给没给,只得强行硬重启

2、安装上了 zram,保持关闭 swap,使用默认的 lzo-rle 压缩格式

代码: 全选

sudo apt install zram-config
同时开了钉钉、微信、QQ 、WPS 和 Edge, zram 虚拟的 swap 占满、内存使用超过 70%,再打开 VLC 时,虽没卡死,但系统已经明显卡顿

3、依然关闭 swap,把 zram 的压缩格式换为 lz4hc
检查支持的压缩格式

代码: 全选

cat /sys/block/zram0/comp_algorithm
支持的压缩格式包括:lzo、lzo-rle、lz4、lz4hc、842、zstd

代码: 全选

sudo nano /usr/bin/init-zram-swapping
找到
echo mem>/sys/block/zram{DEVNUMBER}/disksize
在其【前】添加一行:
echo "lz4hc" > /sys/block/zram${DEVNUMBER}/comp_algorithm
重启电脑,可以看到压缩效率明显提升,如下图,同时开了一堆程序,zram 虚拟的 swap 占满、内存使用接近 65%,此时系统依然流畅
而这种情形,在鄙人的日常使用中,几乎是不可能如此极端的
Screenshot_20230101_222303.jpg
用 ZRAM 替代 SWAP 成功!

三、备招
计划先这样用一段时间,如何还是不行,就采用双层 swap 方式
即:zram + swap 文件
把 zram 虚拟的 swap 设置为最高优先级,真实 swap 设为最低优先级
在 zram 全部用完了之后,才使用真实的 swap 文件
头像
大宝
帖子: 3060
注册时间: 2008-06-30 22:32
联系:

Re: 【经验分享】用 ZRAM 替代 SWAP,榨干内存的每一分价值

#2

帖子 大宝 » 2023-01-02 11:40

听另一个论坛的网友说 zstd 的压缩率、速度等综合性最好,于是换了压缩格式试试,不知是不是测试时太极端了,所以没看出有啥差别
Screenshot_20230102_111541.jpg
头像
懒蜗牛Gentoo
论坛版主
帖子: 7354
注册时间: 2007-03-02 17:36
系统: Linux Mint

Re: 【经验分享】用 ZRAM 替代 SWAP,榨干内存的每一分价值

#3

帖子 懒蜗牛Gentoo » 2023-01-02 18:13

支持一个,原来还能这样搞。虽然暂时用不着,但是也记录仪下
虽然世上没有完美的东西,但这并不影响我们追求完美,因为只有偏执狂才TMD能成功。
10.04新手入门——笨兔兔讲述自己的故事
头像
sunfish
帖子: 989
注册时间: 2008-05-03 1:53

Re: 【经验分享】用 ZRAM 替代 SWAP,榨干内存的每一分价值

#4

帖子 sunfish » 2023-01-09 18:45

docker && kubernetes
回复