
Linux Plumbers Conferenceで披露された新技術「CRAM」が、従来の圧縮メモリの常識を揺るがすものとして注目を集めています。
Metaによって提案されたこの技術は、圧縮データをRAM上で直接扱うことで、ZRAMをはるかに上回る452倍の読み込み速度を実現するものです。まだ研究・検証フェーズにあるものの、Linuxカーネルに採用されればメモリ管理の常識が一変する可能性があります。
メモリ圧縮自体は昔からある仕組みで、Linuxでは主にzswapやZRAMが使われてきました。これらはswap(仮想メモリ)の仕組みを前提としているため、ページフォルトやブロックデバイスとしての扱いによるオーバーヘッドが大きく、圧縮そのものよりも「仕組みの都合」で速度が落ちるのが問題でした。
一方、MetaのGregory Price氏らによって提案されたCRAMは、「圧縮したメモリをswapではなく、RAMとして扱う」という大胆な設計が特徴です。

ポイントは以下の通り:
- 圧縮データをRAM上に保持し、ブロックデバイスとして扱わない
- 専用のNUMAノード(仮想CPUのようなもの)を使い、通常のメモリと同じセマンティクスでアクセスできる
- 読み込みはほぼDRAM速度で可能
- Linuxの既存機能(メモリ移動やバルーニング)をそのまま利用できる
驚異の性能:読み込み452倍、書き込みでも5.4倍
CRAMの性能はログスケールのグラフでも圧倒的で、ZRAMとの比較で以下のような結果が示されています。
- 読み込み:約452倍
- 書き込み:最悪ケースでも5.4倍
書き込み時はページフォルトや元のNUMA領域への移動が必要なため速度は落ちますが、それでも既存方式を大きく上回ります。

「Chicken Bit」と未解決の課題
圧縮メモリは「どれだけ論理的なRAMがあるのか」を正確に把握しづらいという根本的な問題があります。CRAMもこの課題を完全には解決しておらず、今後の研究領域とされています。
安全装置として「Chicken Bit」という仕組みが導入されていますが、容量問題の解決には至っていません。Chicken BitはCRAMが処理に追いつかない状況で、Linux側にCRAMの使用を禁止することで、暴走(poison storm)を防ぐ役割を担います。
まとめ
CRAMはMeta発の技術ということもあり、大規模Linuxサーバーが主なターゲットと見られます。しかし、ZRAMやzswapはSteam Deckのような小型デバイスでも広く使われており、CRAMがLinuxカーネルに取り込まれれば、一般ユーザー環境でも体感できる高速化が期待できそうです。
まだ課題は残るものの、Linuxのメモリ管理に大きな変化をもたらす可能性があり、今後の進展が非常に楽しみなプロジェクトです。
[via Tom's Hardware]
