鄙人的电脑是微软的 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
之后,又尝试修改了 vm.dirty_ratio、vm.dirty_background_ratio、vm.dirty_expire_centisecs、vm.vfs_cache_pressure 的参数,感觉没啥效果
二、用 ZRAM 替代 SWAP
昨晚躺床上,突然想起以前折腾过一段时间的 zram,用它来替代 swap 行不行呢?
今天一早,测试开始:
1、关闭了 swap,仅使用内存
代码: 全选
sudo swapoff -a
2、安装上了 zram,保持关闭 swap,使用默认的 lzo-rle 压缩格式
代码: 全选
sudo apt install zram-config
3、依然关闭 swap,把 zram 的压缩格式换为 lz4hc
检查支持的压缩格式
代码: 全选
cat /sys/block/zram0/comp_algorithm
代码: 全选
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%,此时系统依然流畅
而这种情形,在鄙人的日常使用中,几乎是不可能如此极端的
用 ZRAM 替代 SWAP 成功!
三、备招
计划先这样用一段时间,如何还是不行,就采用双层 swap 方式
即:zram + swap 文件
把 zram 虚拟的 swap 设置为最高优先级,真实 swap 设为最低优先级
在 zram 全部用完了之后,才使用真实的 swap 文件