Zram机制的实现,依靠swap机制
未打开zram时,totalswap为0
init.rc中配置swapon-all
fstab中配置zramsize
device中加copyfile添加编译fstab
zram介绍
大幅提升性能,探索ZRAM技术的无限可能性 - 知乎 (zhihu.com)
怎么配置zram:
配置Swap空间对于提高系统性能、管理内存压力是非常重要的。Swap空间是磁盘上的一部分,它作为物理内存(RAM)的扩展被使用。在物理内存用尽时,Linux系统会将部分内存中的数据转移到Swap空间中。下面我将详细介绍如何配置Swap空间。
### 使用交换分区(Swap Partition)
1. **创建交换分区**
使用`fdisk`或`gdisk`工具来创建一个新的分区。在这个例子中,我们使用`fdisk`。(假设使用的设备为`/dev/sda`) ```bash sudo fdisk /dev/sda ``` 在`fdisk`的提示下创建一个新分区,并设置分区类型为`swap`(分区类型代码为`82`)。
2. **格式化交换分区**
创建分区后,使用`mkswap`格式化为swap分区。 ```bash sudo mkswap /dev/sdaN # /dev/sdaN替换为你的分区名,比如/dev/sda3 ```
3. **启用交换分区**
使用`swapon`命令来启用此交换分区。 ```bash sudo swapon /dev/sdaN ```
4. **设置开机自动挂载**
编辑`/etc/fstab`文件,添加一行以使得这个交换分区在系统启动时自动挂载。 ```bash echo '/dev/sdaN swap swap defaults 0 0' | sudo tee -a /etc/fstab ```
### 使用交换文件(Swap File)
1. **创建交换文件**
使用以下命令创建一个指定大小的交换文件。以下命令创建了一个4GB的文件: ```bash sudo fallocate -l 4G /swapfile # 或者使用dd命令 # sudo dd if=/dev/zero of=/swapfile bs=1G count=4 ``` 2. **设置交换文件的权限**
出于安全考虑,设置交换文件的权限为600。 ```bash sudo chmod 600 /swapfile ```
3. **创建交换空间**
使用`mkswap`来将文件设置为交换空间。 ```bash sudo mkswap /swapfile ```
4. **启用交换文件**
使用`swapon`命令启用交换文件。 ```bash sudo swapon /swapfile ```
5. **设置开机自动挂载**
编辑`/etc/fstab`文件,添加以下行以使得这个交换文件在系统启动时自动挂载。 ```bash echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab ``` 按照以上的步骤,你可以选择使用交换分区或交换文件来配置Swap空间。选择哪种方式取决于你的具体需求和偏好。记得在修改分区或文件之前,最好做好数据备份。
参考:chatgpt回答
zram调试手段:
1、先看手机中CONFIG_ZRAM是否已经打开了,zcat /proc/config.gz | grep "ZRAM"
2、看cat /sys/block/zram0/disksize, 是否有配置,非0才是对的
3、grep "swapon" -Rn vendor/etc/, 看哪个脚本去swapon了,另外在opengrock上也去搜索,swapon
4、看它的源码,为什么没有跑到,有没有可能只是lunch时,项目没有配置好。
zram检查:
cat /sys/block/zram0/disksize
cat /sys/block/zram0/comp_algorithm
cat ./vendor/etc/fstab.enableswap
free -m
cat /proc/meminfo
cat /proc/zraminfo(kernel4.19后移除)
其他:
zram lz4 和 lzo 算法性能评估比较:lz4优于lz0。具体表现:单线程读提升10%,写提升30%;多线程读写相当;压缩率相当。