zram
概要

通常、物理メモリが不足すると、使用頻度の低いデータはハードディスクやSSDのスワップ領域へ退避される。しかしストレージへの読み書きはメモリに比べて大幅に低速であり、頻繁なスワップは処理速度の低下を招く。zramはこの退避先をメモリ内部の圧縮領域に置き換えることで、低速なストレージへのアクセスを避ける。
データの圧縮と展開にはCPUの処理能力を使うが、多くの環境ではストレージアクセスより短時間で完了するため、全体としての応答性は向上しやすい。圧縮アルゴリズムには「LZ4」や「Zstandard」(zstd)などが用いられ、圧縮率と処理速度のバランスに応じて選択できる。
zramはUbuntuやFedoraなどの主要なLinuxディストリビューション、およびLinuxから派生したAndroid OSやChrome OSなどで採用されている。搭載メモリが限られるスマートフォンでは、バックグラウンドのアプリケーションをメモリ上で効率よく保持する手段として用いられる。組み込み機器やIoT機器でも、コストを抑えつつ動作の安定性を確保する手段として利用される。パソコン向けの軽量なディストリビューションでも、インストール時にzramをスワップとして自動設定する例が増えている。
zramはオペレーティングシステム(OS)内部の機能として透過的に働くため、その上で動くプログラムが直接zramを意識する必要はない。PythonやRubyで書かれたアプリケーションを多数起動するWebサーバ環境や、コンテナ仮想化技術で多数のシステムを一台の物理サーバに集約する環境では、メモリ消費量が課題になりやすく、zramによる実質的なメモリ容量の増加が有効に働く。なお、zramに割り当てる容量が大きすぎると却って利用可能なメモリを圧迫する場合がある。搭載メモリ量やCPU性能に応じて、割り当てる容量や圧縮アルゴリズムを調整することが望ましいとされる。