Linuxの比較的ポピュラーなRAM圧縮実装に、kernel標準機能のzramがあります。zramには2通りの用途があります。
- RAMディスクを作成してブロックデバイスとして利用
- swapをRAMディスク上に保持
zramデバイスを制御するzramctl
コマンドはutil-linux
パッケージに含まれているため、多くの環境で最初から使えるでしょう。
用途が決まっている場合のRAMディスクはzramctl
で作成のうえ、mountして使えます。
より一般的なOS性能に関わるのはZRAM上のswapセットアップです。
もともとLinuxの仮想メモリ機能はRAMに入りきらないオンラインデータなどをディスクのswapfileに退避します。ZRAMはこれを圧縮メモリとして保持します。
Ubuntuではzram-config
をインストールして再起動すると、搭載RAMの50%をZRAMのswapとする構成になります。
swapon
やzramctl --output-all
で有効な構成を確認できます。
初期構成のswapfile有効な状態を維持し、priorityの設定により/dev/zram0
を優先利用する構成になります。
一次的なRAMは減るのですが、swapが圧縮効果で増えI/OはSSDより高速になります。
圧縮にCPUを使いますが、CPU負荷が100%近くになっていない限りはボトルネックにはならないでしょう。
また、副次的な効果としてディスクIOが減るため、書き込み処理で消耗するSSDの保護にも多少は有効でしょう。
ZRAM導入の期待は、おそらくswap in頻度が増える環境のレスポンス向上などです。多くのハードで極端な性能の違いが出るわけではないでしょう。
あらかじめ確たる効果は予測できないため、有効にして挙動を観察したうえで継続判断するのが能率的と言えます。
⁋ 2023/11/13↻ 2024/11/07
中馬崇尋
Chuma Takahiro
Chuma Takahiro