在布拉格举行的 Linux Plumbers Conference 上,Meta 工程师 Gregory Price 展示了一项针对 Linux 内核的内存压缩技术——Compressed RAM(CRAM)。面对当前内存供应短缺、价格高企以及容量需求不断增长的现状,Meta 团队致力于开发这一硬件卸载压缩方案。

与现有的 ZRAM 和 Zswap 相比,CRAM 的核心优势在于其支持对压缩内存进行缓存行(cacheline)或字节级别的访问。这种机制使得 CRAM 能够提供接近原生 DRAM 的性能表现。测试数据显示,对于只读数据,CRAM 的速度可与原始 DRAM 持平;而在涉及写入操作时,其性能也显著优于 ZRAM、Zswap 以及传统交换空间。
据 Tom's Hardware 报道,CRAM 的技术实现并未将自身伪装为块设备,而是使用了一个私有 NUMA 节点(本质上是一个“幽灵 CPU”)。这一设计允许 Linux 内核继续利用其完整的内存语义来管理 CRAM,包括页面迁移和内存气球(ballooning)等功能。由于数据存储在 RAM 中并被当作 RAM 处理,且具备全粒度的访问能力,因此在读取模式下几乎没有延迟,仅需承担硬件卸载压缩带来的开销。
尽管在包含写入操作的场景下性能会有所下降,但提升依然显著。在最极端的测试案例中(20% 的写入比例),CRAM 的速度比 ZRAM 快 5.4 倍。虽然这一倍数远低于纯只读场景下的 452 倍,但仍具有巨大的性能优势。造成读写性能差异的主要原因在于,直接写入压缩数据会导致数据损坏,因此系统需要触发缺页中断并将 folios 迁移回原始的 NUMA 域。
值得注意的是,支撑 CRAM 所需的绝大多数独立组件已经合并至 Linux 主线内核。鉴于 Meta Platforms 的业务背景,该技术的直接目标显然是大型 Linux 服务器集群。然而,ZRAM 和 Zswap 在整个 Linux 生态系统中应用广泛,从 Steam Deck 这样的受限设备到许多默认启用这些功能的发行版均有所覆盖。如果剩余的底层实现问题得以解决,CRAM 有望进入内核主线,并为各类 Linux 设备带来可观的性能加速。





