前言

使用了Lineage OS一段时间了,偶然发现系统默认没有挂载Zram,没有虚拟交换分区。这容易导致内存达到阈值然后开始杀后台,部分应用也没有预备缓存,启动时重新加载。因此在网上找了相关教程来设置Zram。

注意:此教程仅在xiaomi 8-Lineage OS21-Android14上测试通过,其他机型自行测试,记得备份重要数据。本文只做学习教程,不具备专业性。

准备工作

首先手机需要获取ROOT权限,以更改系统根文件。其次需要一个文件管理器,如RE管理器或者MT管理器。

找到文件

找到修改的文件,文件位于/vendor/etc/fstab.qcom,由于小米8是骁龙845处理器,因此后缀为.qcom。其他处理器自行确认。

fstab文件在Linux系统中是用来存放文件系统的静态信息的文件。文件位于/etc/目录下,可以用以下命令查看。

详情可参考:fatab文件详解

打开后可以看到许多系统启动时跟随挂载的分区。

挂载Zram

编辑fstab.qcom文件,最后一行添加以下内容。

文件结尾再空一行。

参数
1
2
3
4
5
6
7
8
9
10
11
12
13
# /dev/block/zram0: 需要挂载的块
# none: 虚拟交换分区挂载位置通常为none
# swap: 文件系统类型,swap为交换分区
# defaults: 默认挂载选项defaults: rw, suid, dev, exec, auto, nouser, async.
# 常用参数
# auto: 系统自动挂载,fstab默认就是这个选项
# noauto 开机不自动挂载
# nouser 只有超级用户可以挂载
# ro 按只读权限挂载
# rw 按可读可写权限挂载
# user 任何用户都可以挂载
# zramsize: 挂载Zram分区占手机内存的百分比,100%表示挂载与内存同样大小的Zram,系统推荐值100%(推荐值位于: /proc/sys/vm/swappiness)
# 后面两个参数貌似没有生效,可能对于联发科处理器有用,骁龙处理器需要自己编辑/sys/block/zram0文件夹下的文件来更改参数,或者直接终端执行{% copy echo vlu > /sys/block/zram0/xxxx %}更改Zram工作方式(需要重启生效后才能更改)

生效

修改完后保存文件,重启系统。不出意外的话进入系统就有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中,快速读取。


本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。



2024 blog.yoier.com