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