- ZRAMは、RAM内に圧縮されたブロックデバイスを作成し、超高速なスワップ領域として機能させる。
- これは従来のSwapパーティションに取って代わるか、あるいはそれを補完し、ハードドライブやSSDのボトルネックを解消します。
- zstdやlz4といった圧縮アルゴリズムのおかげで、要求の厳しいアプリケーションを限られたハードウェア上で実行することが可能になります。
- ほとんどの最新ディストリビューションと互換性があり、Fedoraには既にデフォルトで統合されています。

ブラウザのタブを多数開いたり、負荷の高いゲームを起動したりした際に、コンピュータのメモリが不足しているように感じたことがあるなら、システムがスワップファイルを使用する理由がお分かりでしょう。問題は、LinuxがRAMを解放するためにハードドライブやSSDにデータを書き込み始めると、システムのパフォーマンスが急激に低下し、誰もが嫌うあのイライラするような動作の遅さが生じることです。
この問題を解決するために、ZRAMと呼ばれる画期的な技術が登場しました。ZRAMはデータをハードディスクに送信する代わりに、RAM内に圧縮されたメモリ領域を直接作成します。これにより、コンピュータは物理ストレージにアクセスすることなく、より多くの情報を管理できるようになります。その結果、特に古い機種や性能の低い機種において、パフォーマンスが大幅に向上します。
ZRAMとは一体何で、どのように動作するのでしょうか?
以前はcompcacheと呼ばれていたこのモジュールは、圧縮ブロックデバイスを作成するカーネルモジュールです。リアルタイムで作成および解凍されるZIPファイルのようなものと考えてください。システムが物理RAMがいっぱいになりつつあることを検出すると、データをディスクのスワップ領域にダンプする代わりに、データを圧縮してこのZRAM領域に保存します。
最大の利点は、RAMへのアクセス速度が、高性能なNVMeを含むあらゆるハードドライブよりも桁違いに速いことです。データの圧縮と解凍にはCPUが多少負荷をかけますが、全体的なメリットは圧倒的です。ハードドライブのボトルネックを回避できるため、コンピュータの動作が格段に速くなります。
比較:ZRAMと従来のスワップ
従来のスワップ方式は旧式で、ハードディスク上のパーティションまたはファイルを使用します。信頼性は高いものの、非常に低速です。一方、ZRAMはすべてのデータを揮発性メモリに保持します。両者を比較すると、アクセス速度においてはZRAMが圧倒的に優れていますが、 RAMの物理的な容量によって制限されます。
古いコンピュータなど、メモリ容量が非常に少ないシステムでは、ZRAMはまさに救世主です。従来のスワップパーティションと組み合わせることで、アクティブなデータの圧縮速度と、本当に空き容量がなくなった場合のディスク容量という、両方の利点を享受できます。
DebianおよびUbuntuへのインストールと設定
Fedoraのようなディストリビューションでは、ZRAMはデフォルトで有効になっていますが、DebianやUbuntuのエコシステムでは、通常は手動でインストールする必要があります。インストール手順は非常に簡単で、ターミナルから行います。最初のステップは、`sudo apt install zram-tools`を実行して必要なパッケージをインストールすることです。これにより、すぐに使用できる基本的なツールが提供され、Ubuntuの動作が遅い場合に最適化するのに役立ちます。
インストールが完了すると、設定の中核部分はファイル内にあります。 /etc/default/zramswapここで、システムの動作方法を決定します。管理者権限があれば、NanoやGeanyなどのテキストエディタで編集できます。システムを最大限に活用するためには、以下の2つの基本的なパラメータを調整する必要があります。
- 圧縮アルゴリズム(ALGO): いくつか選択肢があります。
lz4最速ですが、zstd圧縮率が非常に高いため、スペースを最適化するための最も推奨されるオプションです。 - デバイスサイズ(サイズまたはパーセント): 総RAM容量の一定割合(例えば50%)を指定することも、メガバイト単位で固定量を割り当てることもできます。32GBのRAMを搭載したコンピュータの場合、4GBまたは8GB程度を割り当てれば通常は十分です。
ファイルに古いスワップパーティションがある場合 /etc/fstab、理想は その行についてコメントする (先頭に「#」を追加することで)システムがディスクを使用しようとせず、常にZRAMを優先するようにします。変更を保存したら、コンピュータを再起動するだけで効果が現れます。
詳細オプション:zram-generatorとUDEVルール
より精密な制御を求める人や、Arch Linuxのようなディストリビューションを使用する人には、 zram-generatorこのツールを使用すると、ファイルを使用して ZRAM デバイスを構成できます。 /etc/systemd/zram-generator.confここでは、複数のデバイスを定義できます。たとえば、1つはスワップ用、もう1つは 一時ファイル用のRAMディスク(/tmp).
別の方法としては、UDEV ルールと fstab のエントリを使用する方法があります。 /etc/udev/rules.d/カーネルにデバイスを作成するように指示できます zram0 特定のアルゴリズムとあらかじめ決められた起動サイズを使用します。これは、 余分なパッケージのインストールを避ける そして、ネイティブシステムのルールを使用してすべてを管理する。
カーネルのパフォーマンス最適化
ZRAMが真に輝くためには、単に有効化するだけでは不十分です。いくつかのシステムパラメータを調整する必要があります。 /etc/sysctl.d/重要な調整は vm.swappiness の値通常は60ですが、ZRAMの場合は、データをディスクではなく圧縮メモリに移動する際に、システムがより積極的に動作するようにするため、この値を大幅に増やす(最大180まで)ことをお勧めします。
その他の興味深い変更点としては、 vm.page-cluster = 0メモリ内のページ管理を最適化し、 vm.watermark_scale_factorPop!_OS などのディストリビューションですでに使用されているこれらの変更により、 物理RAMと圧縮RAM間の遷移 エンドユーザーにはほとんど気づかれないだろう。
すべてがスムーズに動作していることを確認するには、次のコマンドを使用できます。 zramctlこれにより、使用されたアルゴリズム、保存されたデータ量、そして最も印象的なのは、 データはどの程度圧縮されていますか? (例えば、2GBのデータが実際には400MBのRAMしか占有しなくなったことなど)。
この圧縮スワッピングシステムを実装することで、ハードウェアの性能を最大限に活用し、低速なディスクへの依存度を減らし、システム全体の応答性を向上させることができます。これは、非常に小規模なコンピュータを使用している場合でも、高性能なワークステーションを使用している場合でも同様です。


