zramは、
Linuxカーネルに組み込まれたモジュールであり、RAM上に圧縮されたブロックデバイスを作成する機能を提供します。これは、いわゆる
RAMディスクの一種であり、データを圧縮した状態でRAM内に保持することで、メモリの効率的な利用を可能にします。zramで作成されたブロックデバイスは、スワップ領域としてだけでなく、一時ファイル用のストレージとしても利用できます。
zramの概要
zramは、もともと「compcache」(圧縮キャッシュ)という名前で知られていました。その名前が示すように、当初は圧縮されたキャッシュとして機能することが主な目的でした。zramは、
Linuxカーネルのドライバーステージング領域で4年間の開発期間を経て、2014年3月30日にリリースされたバージョン3.14で、メインラインの
Linuxカーネルに統合されました。その後、
Linuxカーネルバージョン3.15(2014年6月8日リリース)以降では、複数の圧縮ストリームと複数の圧縮アルゴリズムをサポートするようになりました。これにより、利用可能な圧縮アルゴリズムとして、
LZ4、LZO、ZSTD、842などが利用可能になり、デフォルトでは速度と圧縮率のバランスが良い「LZO-RLE」が選択されています。
zramの利用方法
zramの最も一般的な利用方法は、一時ファイル(/tmp)用のストレージとスワップ領域です。特に、スワップ領域として使用される場合、zramはzswapに似た動作をします。zswapは、スワップページ用のカーネル内圧縮キャッシュであり、zramも同様に機能します。ただし、初期のzramはハードディスクをバッキングストアとして利用できなかったため、zswapとは異なり、使用頻度の低いページをディスクに移動することができませんでした。`CONFIG_ZRAM_WRITEBACK`が導入されてからは、この制限は解消されています。一方で、zswapではバッキングストアが必須であるのに対し、zramは必ずしも必要ではありません。
zramのメリット
zramをスワップとして利用すると、
Linuxはより効率的にRAMを使用できるようになります。圧縮された状態でメモリページを保持することで、同じ量のRAMをアプリケーションメモリやディスクキャッシュとして使用するよりも、多くのメモリページを保持できます。特に、メモリ容量が限られた環境では、zramの有効性が顕著になります。たとえば、2012年にはUbuntuが、RAMの少ないコンピューターでzramをデフォルトで有効にすることを検討していました。
zramは、組み込みデバイスや
ネットブックなどのローエンドデバイスにとってもメリットがあります。これらのデバイスは、通常、フラッシュベースのストレージを使用しますが、フラッシュストレージはライトアンプリフィケーションによって寿命が制限されます。スワップ領域としても使用されるフラッシュストレージの消耗を、zramをスワップとして利用することで効果的に削減し、デバイスの寿命を延ばすことができます。また、zramを使用することで、スワッピングを必要とする
LinuxシステムのI/Oが大幅に削減されます。
zramの採用事例
2013年以降、Googleの
ChromeOSではデフォルトでzramが使用されています。また、Androidのバージョン4.4以降にもzramが含まれています。さらに、
Lubuntuはバージョン13.10からzramの使用を開始しました。これらの事例からも、zramが様々な環境で有効な技術であることがわかります。
関連項目
- - Linuxスワップ
- - en:Swap partions on SSD
- - zswap
参考文献
- - zram Linuxカーネルのドキュメント
- - Linux用のCompcache、Compressed Caching
- - Compcache:インメモリ圧縮スワッピング 、2009年5月26日、LWN.net、Nitin Gupta作
- - カーネル内メモリ圧縮 、2013年4月3日、LWN.net、Dan Magenheimer著
- - 圧縮キャッシュ:ハンドヘルドコンピュータの仮想メモリ圧縮 、2000年3月16日、 Michael J. Freedman著