UbuntuでZRAMを導入

Linuxの比較的ポピュラーなRAM圧縮実装に、kernel標準機能のzramがあります。zramには2通りの用途があります。

  1. RAMディスクを作成してブロックデバイスとして利用
  2. swapをRAMディスク上に保持

zramデバイスを制御するzramctlコマンドはutil-linuxパッケージに含まれているため、多くの環境で最初から使えるでしょう。
用途が決まっている場合のRAMディスクはzramctlで作成のうえ、mountして使えます。

より一般的なOS性能に関わるのはZRAM上のswapセットアップです。
もともとLinuxの仮想メモリ機能はRAMに入りきらないオンラインデータなどをディスクのswapfileに退避します。ZRAMはこれを圧縮メモリとして保持します。

Ubuntuではzram-configをインストールして再起動すると、搭載RAMの50%をZRAMのswapとする構成になります。 swaponzramctl --output-allで有効な構成を確認できます。
初期構成のswapfile有効な状態を維持し、priorityの設定により/dev/zram0を優先利用する構成になります。

一次的なRAMは減るのですが、swapが圧縮効果で増えI/OはSSDより高速になります。
圧縮にCPUを使いますが、CPU負荷が100%近くになっていない限りはボトルネックにはならないでしょう。

また、副次的な効果としてディスクIOが減るため、書き込み処理で消耗するSSDの保護にも多少は有効でしょう。

ZRAM導入の期待は、おそらくswap in頻度が増える環境のレスポンス向上などです。多くのハードで極端な性能の違いが出るわけではないでしょう。
あらかじめ確たる効果は予測できないため、有効にして挙動を観察したうえで継続判断するのが能率的と言えます。

中馬崇尋
Chuma Takahiro