Meta展示CRAM内存压缩方案 只读性能接近原生DRAM
Meta工程师在LPC 2026展示实验性CRAM内存压缩方案,将硬件压缩内存作为私有NUMA节点提供给Linux,使压缩数据保留页表映射并支持细粒度访问,只读性能接近原生DRAM,目前仍为内核原型。
驱动中国10月8日消息,Meta工程师于10月5日在捷克布拉格举行的Linux Plumbers Conference 2026(LPC 2026)上展示名为CRAM(Compressed RAM)的实验性内存压缩方案。该方案旨在让压缩后的数据继续以内存形式存在,从而减少传统Swap路径带来的软件开销,而非简单替代ZRAM或zswap。
当前Linux常见内存压缩方案包括ZRAM和zswap。ZRAM会在内存中创建压缩块设备,内核需要按照Swap路径处理其中的数据。CRAM的设计不同,压缩数据仍可保持页表映射和页缓存状态,并支持Cacheline及Byte级访问,读取数据时无需像传统方案一样通过缺页异常触发软件解压。LPC官方资料将这一特征列为CRAM区别于ZRAM和zswap的关键。
CRAM的核心思路是将硬件压缩后的内存作为一种特殊的NUMA内存提供给Linux,而不是模拟成块存储设备。LPC资料显示,CRAM会使用一个严格控制的私有NUMA节点,让内核能够继续使用现有的内存管理机制,包括内存迁移、回收、降级、内存气球机制、空闲页报告以及NUMA内存均衡等。
这一设计针对的是传统内存压缩方案中的软件路径开销。对于只读数据,CRAM可以直接从压缩内存中读取,而无需先将数据换入普通内存再解压。在这种模式下,CRAM的表现可以接近原生DRAM水平。LPC官方资料显示,CRAM已经完成实际测试,在TAOBench和FIO基准测试中可以达到接近原生DRAM的性能。
此次演示披露的测试数据显示,在纯读取场景下,CRAM最差情况下可达到每秒约4.89亿次操作,ZRAM约为每秒110万次操作。按照该组数据计算,两者差距约为444倍,并非452倍;官方关于提升452倍的说法可能需要在理想环境中才能实现。
当工作负载包含写入操作时,CRAM的优势会明显收窄。由于压缩数据无法直接在原位置进行修改,写入时需要通过缺页处理将对应Folio迁移回原生NUMA节点,再完成修改。在演示披露的最差写入情况下,CRAM仍达到ZRAM约5.4倍性能,但该数字应理解为特定基准测试结果,而非通用性能结论。
LPC官方资料显示,CRAM目前仍属于经过测试的内核服务原型,并非已经进入Linux主线的成熟功能。Meta工程师Gregory Price介绍称,实现CRAM所需的大部分Linux内核基础机制已经存在,目前需要进一步解决的是如何让实际容量与物理容量不一致的内存设备符合Linux现有的内存模型。
目前CRAM仍处于研发和社区讨论阶段,尚不能视为即将进入Linux主线的正式功能。Meta此次公开的重点是探索如何利用现有Linux内存管理机制支持这种新型压缩内存,而非宣布一项已经完成标准化或商业化部署的产品。