RHEL8启用zRAM
zRAM简介
参考:https://www.hi-linux.com/posts/43918.html
https://adtxl.com/index.php/archives/337.html
zRAM(压缩内存)的意思是说在内存中
开辟一块区域压缩数据
……就是说假设原来150MB
的可用内存
现在可以放下180MB
的东西……本身不会提高内存容量
和运行速度
……只是让后台程序
更少被系统砍掉
罢了,为了能得到更多任务运行
……而且这个压缩动作
会加重CPU负担
。
zRAM在安卓手机上得到了广泛的验证
和应用
。
该文档实测
也适用于Centos7
0.安装内核扩展–非必须
# 安装内核扩展包
dnf install -y kernel-modules-extra
1.启用zram内核模块
# 加载zram模块
modprobe zram
# 在系统启动时自动加载zram内核模块
echo zram >/etc/modules-load.d/zram.conf
# 指定ZRAM设备的数量为1
echo "options zram num_devices=1" >/etc/modprobe.d/zram.conf
# 检查内核是否启用zram
lsmod | grep zram
# 查看内核是否支持zram
modinfo zram
2.配置zRAM分区的大小
https://www.jianshu.com/p/c9d0423d7149
官方
建议, 使用总内存
的 30%-50%
作为zram
, 按照压缩率
为50%
计算, 则内存增加30%-50%
左右。
注意:创建大于内存大小两倍的zram几乎没有意义
https://wertherzhang.com/zram/#zram
# 创建一个新文件
vim /etc/udev/rules.d/99-zram.rules
在该文件中,粘贴以下内容(修改disksize属性以适合您的需要):
KERNEL=="zram0", ATTR{disksize}="2G",TAG+="systemd"
重启udev
服务
# 重启udev服务
systemctl restart systemd-udevd.service
重启udev服务
后,会出现/dev/zram0
设备,但只有重启OS
后才可用
3.禁用原swap分区或原swap文件
在/etc/fstab
文件中,注释
掉/swap.img
开头的行(添加#号)。
注释swap分区后关闭swp。
# 关闭swap
swapoff -a
4.调整内核配置
https://zhuanlan.zhihu.com/p/484408336/etc/sysctl.conf
# 优化zarm磁盘读取
vm.page-cluster = 0
# 让内存更有序
## 当页框碎片指数低于该阈值会触发碎片整理
## 默认是 500(介于 0 和 1000 之间的值)
vm.extfrag_threshold = 0
# 使内核配置生效
sysctl -p
5.创建一个zram服务文件
vim /etc/systemd/system/zram.service
[Unit]
Description=Swap with zram
BindsTo=dev-zram0.device
After=dev-zram0.device
After=multi-user.target
[Service]
Type=oneshot
RemainAfterExit=true
ExecStartPre=/sbin/mkswap /dev/zram0
ExecStart=/sbin/swapon -p -1 /dev/zram0
ExecStop=/sbin/swapoff /dev/zram0
[Install]
WantedBy=multi-user.target
必须重启OS
后,启用zram
服务
# 重载配置文件
systemctl daemon-reload
# 启用服务
systemctl enable --now zram
# 查看zram服务
systemctl status zram
6.检查zRAM是否正常工作
重启系统
后,检查zRAM
是否正常工作
# 查看zRAM加载情况
zramctl
# 检查zRAM是否正常工作
cat /proc/swaps
现在,应该看到/dev/zram0
被当作swap。
优化:把 zram 的压缩格式换为 lz4hc
https://bbs.deepin.org/post/247916
sudo dnf install zram-generator-defaults
# or
sudo dnf install zram-generator
配置lz4hc算法
https://www.cnblogs.com/pengdonglin137/p/17893516.html
# 显示支持的压缩算法
cat /sys/block/zram0/comp_algorithm
vim /etc/systemd/zram-generator.conf
[zram0]
# 将 zram 设置为使用全部可用内存
zram-size=ram
# 选择lz4hc压缩算法
compression-algorithm = lz4hc
重启服务
# 重启zram-generator服务
sudo systemctl restart zram-generator.service
配置双层swap
https://www.cnblogs.com/linhaostudy/p/18324329
swap分区的优先级(priority)
在使用多个swap分区或者文件的时候,还有一个优先级的概念(Priority)。
在swapon
的时候,我们可以使用-p
参数指定相关swap空间的优先级,值越小优先级越高,可以指定的数字范围是-1
到32767
。
内核在使用swap空间的时候总是先使用优先级高的空间,后使用优先级低的。
当然如果把多个swap空间的优先级设置成一样的,那么两个swap空间将会以轮询方式并行进行使用。
如果两个swap放在两个不同的硬盘上,相同的优先级可以起到类似RAID0的效果,增大swap的读写效率。