Zram

zramは、以前はcompcacheと呼ばれた、RAMに圧縮ブロックデバイスを作成するLinuxカーネルモジュールで、いわゆるRAMディスクであるが、中間ファイル出力をしないオンザフライでの「ディスク」の圧縮である。 zramで作成されたブロックデバイスは、スワップまたは汎用RAMディスクとして使用できる。 zramの最も一般的な2つの使用法は、一時ファイル（/ tmp）用ストレージと、スワップ「ディスク」である。 当初、zramには後者の機能しかなかったため、元の名前は「compcache」（「圧縮キャッシュ」）だった。

概要 
Linuxのドライバーステージング領域で4年の歳月を経て、2014年3月30日にリリースされたバージョン3.14で、zramはメインラインのLinuxカーネルに導入された。  Linuxカーネルバージョン3.15以降（2014年6月8日リリース）以降、zramは複数の圧縮ストリームと複数の圧縮アルゴリズムをサポートしている。 圧縮アルゴリズムには、 LZ4 、 LZO 、 ZSTD 、 842、およびそれらの修正が含まれる。 デフォルトは「LZO-RLE」で、速度と比率のバランスが非常に良い。 他のほとんどのシステムパラメータと同様に、圧縮アルゴリズムはsysfsを介して選択できる。  

圧縮スワップ空間として使用される場合、zramはzswapに似ていて、汎用RAMディスクではなく、スワップページ用のカーネル内圧縮キャッシュである。 CONFIG_ZRAM_WRITEBACKが導入されるまで   、zswapとは異なり、zramはハードディスクをバッキングストアとして使用できなかった。つまり、使用頻度の低いページをディスクに移動できない。 一方、zswapではバッキングストアが必要だが、zramでは必要ない。 

zramをスワップに使用する場合、zswapと同様に、Linuxにとっては、RAMを効率的に使えるようになる。OSにとっては、同じ量のRAMをアプリケーションメモリやディスクキャッシュとして使うのに比べて、メモリページを圧縮スワップの中に保持する方がより多くのメモリのページを保持できる。これは、メモリが少ないマシンで特に効果的である。  2012年、UbuntuはRAMが小さいコンピューターでzramをデフォルトで有効にすることを簡単に検討した。  

zram / zswapを使用した圧縮スワップスペースは、 組み込みデバイスやネットブックなどのローエンドハードウェアデバイスにもメリットをもたらす。 このようなデバイスは、通常、 フラッシュベースストレージを使用していますが、これはライトアンプリフィケーションによって寿命が限られていますし、スワップ領域を提供するためにも使われる。 zramをスワップとして使うと、そのようなフラッシュベースのストレージにかかる摩耗の量を効果的に削減し、その結果、使用可能な寿命を延ばしる。 また、zramを使用すると、スワッピングを必要とするLinuxシステムのI / Oが大幅に削減される。   

2013年以降、GoogleのChromeOSはデフォルトでzramを使用している。 Androidのバージョン4.4以降には、zramが含まれている。  Lubuntuは、バージョン13.10で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著 
メモリ管理