UbuntuでZRAMを設定する方法!メモリ割り当てと圧縮アルゴリズムの変更手順
ZRAMは、CPUパワーの一部を犠牲にすることで、実質的に利用できるRAMを増やせる優れたソリューションです。しかし、ZRAMに割り当てるメモリ量を増減させたり、圧縮アルゴリズムを変更したりするには、どうすればよいのでしょうか。また、どのような場面でこうした変更が有効になるのか。本記事では、UbuntuにおけるZRAMの設定方法を詳しく解説します。
現在のZRAMの状態を確認する
多くのユーザーは、zram-configスクリプトを使って、UbuntuやMintなどの互換ディストリビューションでZRAMを利用しています。これは、ZRAMを最も手軽に活用できる方法だからです。以下のコマンドでインストールできます。
sudo apt install zram-config
デフォルト設定では、ZRAMは搭載RAMの半分の容量に設定され、CPUコアごとに1つのパーティションへ分割されます。以下のコマンドで確認できます。
cat /proc/swaps
スクリーンショットでは、通常のスワップファイル(「/var/cache/swap/swapfile」のエントリ)と8つのZRAMボリュームが共存している様子がわかります。筆者のシステムはRAM 8GB搭載で、ZRAMボリュームを合計すると4GB、つまりRAM全体の半分となっています。ただし、ワークロードによっては、このサイズを変更したほうがよい場合もあります。
- マルチメディアや動画を扱う場合、これらのデータはあまり圧縮が効かないため、ZRAMのサイズを小さくして、実際のスワップ領域を大きくするのがおすすめです。
- 逆に、大規模なデータベースなど圧縮率の高いデータを扱う場合は、ZRAMのサイズを増やすことでシステムの応答性を向上させられます。
もうひとつ検討したい調整ポイントが、ZRAMが使用する圧縮アルゴリズムです。デフォルトではCPUへの負荷が軽いLZOまたはLZO-RLEが使われます。しかし、近年のCPUであれば、より新しいZSTDアルゴリズムのほうが高い圧縮率を実現でき、CPU負荷の増加もほとんど気になりません。10年以内に製造されたPCなら、旧式のLZO系アルゴリズムの代わりにZSTDを使う価値があります。
現在ZRAMが使用しているアルゴリズムは、zramctlコマンドで確認できます。ターミナルにzramctlと入力してEnterキーを押すと、ZRAMスワップの一覧が表示されます。
zramctlは、ほとんどのディストリビューションに標準で含まれています。もし存在しない場合は、util-linuxパッケージの一部なので、以下のコマンドでインストールできます。
sudo apt install util-linux
ただし、ZRAMの動作を細かく制御するには、本体のスクリプトを編集する必要があります。まずは、使用するメモリ量の変更から始めましょう。
ZRAMのサイズを変更する
ZRAMの設定を変更するには、binフォルダ内にある実行スクリプトを編集します。ターミナルで以下のコマンドを入力してください。
sudo nano /usr/bin/init-zram-swapping
ZRAMが使用するRAMの量を変更するには、次の行を編集します。
mem=$(((totalmem / 2 / ${NRDEVICES}) * 1024 ))
この行は、以下のような簡単な計算に基づいて、ZRAMが使用するRAMの量を決定しています。
totalmem: PCに搭載されているRAMの総容量/ 2: totalmemを2で割る(RAM総量の半分という意味)/ ${NRDEVICES}: その値をPCのコア数で割る* 1024: 上記の結果に1024を掛ける
1と3の部分は変更できませんし、変更すべきでもありません。一方、2と4の値を調整することで、ZRAMが使用するメモリ量を自由に微調整できます。
/ 2を/ 4に変更すると、RAM総量は2ではなく4で割られるため、ZRAMはRAMの半分ではなく4分の1のみを使用します。RAMの全容量をZRAMに割り当てるのは避けるべきなので、この値は/ 2のままにするか、ZRAMの使用メモリを減らしたい場合に大きくするのが賢明です。
- 同様に、
/ 2はそのままにして1024を512に減らしても、各デバイスに割り当てられるRAMが半分になるため、同じ効果が得られます。逆にZRAMにもっと多くのメモリを使わせたい場合は、この値を1536に増やしましょう。
ZRAMの圧縮アルゴリズムを変更する
圧縮アルゴリズムも、同じスクリプト内で変更できます。
まず、現在使用中の圧縮アルゴリズムを確認しましょう。
cat /sys/block/zram0/comp_algorithm
高度なカスタム設定では、パーティションごとに異なるアルゴリズムを組み合わせることも可能ですが、デフォルト設定ではすべてのZRAMパーティションが同じアルゴリズムを使用します。そのため、すべてを確認する必要はなく、上記のコマンドでは最初の1つだけをチェックすれば十分です。
筆者の環境では、すでにZSTDアルゴリズムが使用されていました(上のスクリーンショットで括弧内に表示されているもの)。ZSTDは現在、圧縮率・速度・リソース消費のバランスにおいて最良の選択肢とされているため、このままにしておきましょう。ただし、デフォルト設定のままの場合は、LZOまたはLZO-RLEが有効になっているはずです。これを変更するには、先ほど編集したinit-zram-swappingスクリプトに戻り、次の行を探してください。
echo $mem > /sys/block/zram${DEVNUMBER}/disksize
この行をコピーして、すぐ下に貼り付け、同じコマンドを2行並べます。元の行は、先ほどの計算結果を各ZRAMボリュームのサイズとして割り当てる役割を持ちますが、コピーした行は圧縮アルゴリズムの指定に利用します。
- 1行目(コピー元)はそのまま残し、コピーした行の冒頭にある
$memをzstdに置き換えます。 - 同じ行の末尾にある
disksizeをcomp_algorithmに置き換えます。
編集後の行は次のようになります。
echo zstd > /sys/block/zram${DEVNUMBER}/comp_algorithm
このように編集した行は、comp_algorithmパラメータの値としてzstdを出力するようになります。
別のアルゴリズムを使いたい場合は、上記コマンド内のzstdを希望するアルゴリズム名に置き換えてください。
編集が完了したらファイルを保存し、PCを再起動して結果を確認しましょう。
変更したスワップが実際に使用される状態で、負荷をかけた際のシステムパフォーマンスを必ずチェックしてください。動作が重くなったりカクついたりする場合は、設定しすぎている可能性があるため、値を控えめに戻しましょう。逆に快適に動作しているなら、さらなる増強の余地があるかもしれません。
UbuntuでZRAMを設定する方法を習得したところで、より高性能なPCの構築をお考えなら、Linux向けPCを自作する際の注意点もあわせてチェックしておきましょう。
-
Windows 10/8/7のPCでRAMを解放する方法|動作が遅いときの対処法
パソコンの動作が遅くなるほどストレスを感じるものはありません。その主な原因のひとつがCPU使用率の高さです。つまり、PC上のアプリケーションがCPUやRAMの使用限界を超えてしまい、システム全体の速度が低下している状態です。こうした動作の遅さを解消するには、RAMを解放することが有効です。 Windows PCが遅くなる原因は、メモリリークや予期しない電源トラブルなど、さまざまな要因が考えられます。これらはユーザー側ではコントロールしにくいものですが、PCの動作が重くなったときには、各種ツールや方法を使ってRAMを解放することで改善できます。 まずは、RAMとは何か、そしてPCの動作低下を防
-
ノートパソコンにRAMを自分で増設・交換する方法【初心者向けDIY解説】
前回の記事でRAMについて詳しく学んだ方の中には、そろそろメモリのアップグレードを検討し始めた方もいるかもしれません。RAMを更新する理由はさまざまですが、その一つが「動作が遅くなったPC」への不満です。 そう、古いPCは特にWindows 10などの比較的新しいOSと組み合わせると、動きが重くなりがちです。さらに、近年のソフトウェアはシステムリソースへの要求がどんどん高まっています。 だからこそ、システムとの互換性さえあれば、RAMのアップグレードやメモリ追加は効果的なのです。しかし、業者に依頼せず自分で作業するにはどうすればいいのでしょうか? RAMモジュールの購入にお金を使い果たしてしま