Zram & Swap机制

zRAM & Swap机制:

通过 swap 机制,系统可以将内存分配给需求更迫切的进程。但由于 swap 机制需要进行 I/O 操作,所以一定程度上会影响系统性能。那么是否存在一种能够节省内存,而且对性能影响较少的机制呢?

在 Linux-3.14 引入了一种名为 zRAM 的技术,zRAM 的原理是:将进程不常用的内存压缩存储,从而达到节省内存的使用。

zRAM 机制建立在 swap 机制之上,swap 机制是将进程不常用的内存交换到磁盘中,而 zRAM 机制是将进程不常用的内存压缩存储在内存某个区域。所以 zRAM 机制并不会发生 I/O 操作,从而避免因 I/O 操作导致的性能下降。
zRAM原理:

由于 zRAM 机制是建立在 swap 机制之上,而 swap 机制需要配置 文件系统 或 块设备 来完成的。所以 zRAM 虚拟一个块设备,当系统内存不足时,swap 机制将内存写入到这个虚拟的块设备中。也就是说,zRAM 机制本质上只是一个虚拟块设备。

在开启了 zRAM 机制的情况下,当系统内存不足时,内核会进行如下操作:

通过 swap 机制从系统中查找一些进程不常用的内存。

将这些不常用的内存交换到 zRAM 块设备中,而 zRAM 块设备首先会对这些不常用的内存进行压缩,然后存储起来。

把不常用的内存压缩存储到 zRAM 块设备后,swap 机制会把这些不常用的内存归还给内核。

当进程访问到这些被交换到 zRAM 块设备的内存时,swap 机制将会通过 zRAM 块设备解压这些内存,并且重新建立与进程的地址映射关系。

qcom605平台

device/rootdir/etc/init.qcom.post_boot.sh :

configure_memory_parameters
--configure_zram_parameters:
    # Zram disk - 75% for Go devices.
    # For 512MB Go device, size = 384MB, set same for Non-Go.
    # For 1GB Go device, size = 768MB, set same for Non-Go.
    # For 2GB Go device, size = 1536MB, set same for Non-Go.
    # For >2GB Non-Go devices, size = 50% of RAM size. Limit the size to 4GB.
    # And enable lz4 zram compression for Go targets.
    
--enable_swap:
    SWAP_ENABLE_THRESHOLD=1048576
    ro.vendor.qti.config.swap=true
    # Enable swap initially only for 1 GB targets

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值