前言
使用了Lineage OS一段时间了,偶然发现系统默认没有挂载Zram,没有虚拟交换分区。这容易导致内存达到阈值然后开始杀后台,部分应用也没有预备缓存,启动时重新加载。因此在网上找了相关教程来设置Zram。
注意:color:yellow~~此教程仅在xiaomi 8-Lineage OS21-Android14上测试通过~~,MI8 dipper最新版系统分区发生重大改变,手动adb sideload更新到最新版后此方法将不可用,其他机型自行测试,记得备份重要数据。本文只做学习教程,不具备专业性。准备工作
首先手机需要获取ROOT权限,以更改系统根文件。其次需要一个文件管理器,如RE管理器或者MT管理器。
找到文件
找到修改的文件,文件位于/vendor/etc/fstab.qcom,由于小米8是骁龙845处理器,因此后缀为.qcom。其他处理器自行确认。
fstab文件在Linux系统中是用来存放文件系统的静态信息的文件。文件位于/etc/目录下,可以用以下命令查看。
详情可参考:fatab文件详解。打开后可以看到许多系统启动时跟随挂载的分区。
挂载Zram
编辑fstab.qcom文件,最后一行添加以下内容。
文件结尾再空一行。1 | # /dev/block/zram0: 需要挂载的块 |
生效
修改完后保存文件,重启系统。不出意外的话进入系统就有Zram分区了。可通过Devcheck等软件查看。默认压缩算法为lzo,查看/sys/block/zram0/comp_algorithm文件,里面有系统支持的压缩算法。
修改压缩算法为lz4(请先确保系统支持)。
基准测试Benchmarks
Compressor | Ratio | Compression | Decompression |
---|---|---|---|
zstd 1.3.4 -1 | 2.877 | 470 MB/s | 1380 MB/s |
zlib 1.2.11 -1 | 2.743 | 110 MB/s | 400 MB/s |
brotli 1.0.2 -0 | 2.701 | 410 MB/s | 430 MB/s |
quicklz 1.5.0 -1 | 2.238 | 550 MB/s | 710 MB/s |
lzo1x 2.09 -1 | 2.108 | 650 MB/s | 830 MB/s |
lz4 1.8.1 | 2.101 | 750 MB/s | 3700 MB/s |
snappy 1.1.4 | 2.091 | 530 MB/s | 1800 MB/s |
lzf 3.6 -1 | 2.077 | 400 MB/s | 860 MB/s |
结尾
开启Zram,确实可以多挂几个后台,并且保持运行。但如果长时间后台运行会受到电源策略限制。部分应用可以预缓存,加快启动速度。经常读取文件也会在预存Zram中,快速读取。
LineageOS 22 Zram设置
原理
通过magisk模块,配置post-fs-data.sh(在文件系统初始化后执行,适合挂载和早期配置)脚本挂载Zram。
声明
该教程在xiaomi 8-Lineage OS22.1-Android15上测试通过。其他设备自行测试。测试前注意备份重要数据。
测试是否支持
查看系统是否存在/sys/block/zram0/disksize文件。如果有,那么在Android终端依次执行如下命令。
1 | # 设置 zram 大小为 4GB (4*1024*1024*1024=4294967296) |
通过上述命令就已经在系统创建并启用了Zram交换分区。
输入下面命令检查交换分区是否启用。
如果上述设置执行成功,那么可以继续教程。
安装Magisk模块
安装Magisk模块在系统启动使自动配置。也可方便停用。
MagiskZram下载
MagiskZram仓库地址
post-fs-data.sh
1 |
|