ZRAM 是内核的内存优化模块,先划定一片区域,然后将压缩过后的硬盘数据放入该区域,以实现高速读取。目前 Linux 6.2 已合并 ZRAM 中对多个压缩流的支持 ,作为内存管理相关补丁的一部分。
Google 工程师一直致力于实现 ZRAM 中的多压缩流支持,似乎准备在 Chrome 操作系统上使用它。ZRAM 中的多压缩流支持在每个 CPU 的基础上处理多个压缩流,其主要思想是不同的压缩算法具有不同的特性,ZRAM 在使用算法组合时可能会从中受益,比如有些速度很快但压缩率较低的压缩算法,可以使用速度较慢但压缩率较高的辅助算法来减压。
根据 ZRAM 的文档介绍,此功能有几个用例:
-
大页面重新压缩:zstd 或 defalte 可以成功压缩大页面(在综合 ChromeOS 测试中约占大页面的 50%),lzo 无法压缩的 IOW 页面。
-
空闲页面重新压缩:空闲 / 冷页面位于内存中,如果我们重新压缩这些空闲页面,我们可能会减少 zsmalloc 内存使用。
用户空间有很多方法来控制 zram 重新压缩的行为和影响:应该重新压缩什么类型的页面、大小水印等,这使得 ZRAM 的压缩更灵活。
合并最新补丁后,ZRAM 设备新增了 “recomp_algorithm” 和 “recompress” 两个 sysfs 属性,可以用来完成二级压缩算法的管理。启用 ZRAM_MULTI_COMP 选项的 ZRAM 设备最多允许支持四种不同的压缩算法。