用最专业的眼光看待互联网
立即咨询在当前内存资源紧张、价格飙升的情况下,Meta 的工程师们正在致力于为Linux系统研发一种新型的压缩内存技术,即压缩内存(Compressed RAM,简称「CRAM」)。这一技术利用硬件卸载的方式进行内存压缩,允许以缓存行或字节的层面进行访问,相比于 ZRAM 和 Zswap 等现有方案,CRAM 在性能上表现出色,尤其是在读取速度上,接近于原生 DRAM 的表现。10月5日,Meta 工程师格雷戈里·普赖斯(Gregory Price)在布拉格举行的 Linux Plumbers Conference(LPC 2026)上详细介绍了这一Linux压缩内存项目。CRAM所需的多个组件已成功整合到主线内核中,对于使用 Zswap 或 ZRAM 的用户,CRAM 提供接近于原生 DRAM 的读写速度。在仅进行读取的情况下,数据访问速度与原生 DRAM 相当。在内存写入速度方面,CRAM 远超 ZRAM、Zswap 及普通交换等方案。
在如今这个对 Linux 内存容量需求不断提升的时代,CRAM 的出色表现让人印象深刻。在只读测试中,匿名页的使用量达到46 GB,写入比例为0,而各方案的可用物理内存均为36 GB。测试结果显示,在偏斜访问情形下,DRAM 的操作上限为每秒 3.25 亿次,CRAM 为 3.21 亿次,ZRAM(使用 zstd 算法)仅约 970 万次,磁盘交换约 310 万次,Zswap(同样使用 zstd)约 32 万次。而在均匀随机访问的最坏情况下,DRAM 上限达到了4.98 亿次,CRAM为4.89亿次,ZRAM 约110万次,磁盘交换约36万次,Zswap 约4.3万次。图表清晰显示了各方案在 DRAM 上的表现,便于观察缺页开销,其中 Zswap 还面临与方案本身无关的回收操作停顿,导致相关数据的可靠性受限。
在仅进行读数据操作时,CRAM 的速度几乎与 DRAM 一致。但当引入写入操作后,CRAM 能量优势依然明显,相较于 ZRAM、Zswap 和普通磁盘交换均有显著的速度提升。处理写入操作时,CRAM 会触发缺页,将页面拷回 DRAM 进行处理,而读取操作则不会产生缺页。CRAM 支持完整的缓存行和字节粒级访问,基准测试中,在纯读取的情况下,其最差情况下操作速度可达每秒4.89亿次,而 ZRAM 仅为每秒110万次,足足领先了452倍。即使在加入20%写入负载的情况下,由于压缩数据无法直接原地覆盖,CRAM 的速度依然是 ZRAM 的5.4倍。
普赖斯在会上强调,CRAM 不仅仅是交换分区的实现,而是硬件压缩的充分利用。他还分享了一些关键机制,包括写控制(如先只读,在需要写入时再将页面提升)、分配控制(使用内存量可能超过物理容量)、利用气球内存动态调整、应用普通页而非 ZONE_DEVICE 以及如何进行资源监测和内存不足处理(OOM)。他指出,内核已在一定程度上满足了这些需求。
当前,Linux 系统对增大可用内存容量的迫切需求有目共睹。接下来 CRAM 将如何进一步发展,相关代码也希望能在不久的将来完全并入上游,为社区提供更强劲的内存处理能力。
地址:金昌市先退殿16号