Linux設定 · 1 min read · Sep 29, 2025

Linuxシステムのスワップネスを変更する方法

スワップネスとは?

以前にディストリビューションをインストールしたことがあるほとんどのLinuxユーザーは、パーティショニングフェーズ中に「スワップスペース」の存在に気づいたことがあるでしょう(通常は/sda5として見つかります)。これは、通常RAMの容量の少なくとも2倍に設定されるハードドライブ内の専用スペースであり、システムの総仮想メモリを構成します。スワップスペースは、専用のスワップパーティションを作成できない場合に使用できるいわゆるスワップファイルによっても提供されることがあります。ただし、一般的には、スワップパーティションはスワップファイルよりも速度的に好まれます。時折、Linuxカーネルはこのスワップスペースを利用して、RAMからスワップにチャンクをコピーし、物理的に利用可能なメモリよりも多くのメモリを必要とするアクティブプロセスを実行できるようにします。

スワップネスは、LinuxカーネルがRAMの内容をスワップにコピーする頻度と量を定義するカーネルパラメータです。このパラメータのデフォルト値は「60」で、値は「0」から「100」までのいずれかを取ることができます。スワップネスパラメータの値が高いほど、カーネルはより積極的にスワップを行います。

なぜ変更するのか?

デフォルト値はすべての個別の使用ケース、ハードウェア仕様、およびユーザーのニーズに対して同じように効率的であることは不可能な一律の解決策です。さらに、システムのスワップネスは、OSの全体的な機能性と速度パフォーマンスを決定する主要な要因です。つまり、スワップネスがどのように機能するか、そしてこの要素のさまざまな設定がシステムの動作や日常のユーザー体験をどのように改善できるかを理解することが非常に重要です。

RAMメモリは過去に比べてはるかに大きく安価になったため、現在ではスワップファイルをほとんど使用する必要がないほどのメモリを持つユーザーが多くいます。このことから得られる明らかな利点は、スワッププロセスによってシステムリソースが占有されることがなく、キャッシュされたファイルがRAMとスワップの間で無駄に移動されることがないということです。

スワップネスを変更する方法

スワップネスパラメータの値は、/proc/sys/vmにある単純な設定テキストファイルに保存されており、「swappiness」と名付けられています。ファイルマネージャを通じてそこに移動すると、ファイルを見つけて開き、システムのスワップネスを確認できます。また、ターミナルを通じて(こちらの方が速い)次のコマンドを入力することで確認または変更できます:

sudo sysctl vm.swappiness=10

または、私が使用した「10」の値の代わりに「0」と「100」の間の任意の値を指定します。スワップネスの値が正しく希望の値に変更されたことを確認するには、再度ターミナルに次のように入力します:

cat /proc/sys/vm/swappiness

すると、アクティブな値が出力されます。

Linuxスワップネス

この変更はシステムの動作に即座に影響を与え、再起動は必要ありません。実際、再起動するとスワップネスはデフォルト値(60)に戻ります。希望のスワップ値を十分にテストし、信頼性があることがわかった場合は、/etc/sysctl.confに移動して、もう一つのテキスト設定ファイルを開き、スワップネスを決定するために次の行を下部に追加できます:vm.swappiness=”あなたの希望の値をここに”。その後、テキストファイルを保存すれば完了です!

Linuxでのスワップネス値の設定

考慮すべき要因

スワップネスを変更する際に考慮すべき数学的な要素があります。「60」に設定されたパラメータ値は、RAMが40%の容量に達したときにカーネルがスワップを行うことを意味します。「100」に設定すると、カーネルはすべてをスワップしようとします。「10」に設定すると(このチュートリアルで私が行ったように)、RAMが90%満杯のときにスワップが使用されることを意味しますので、十分なRAMメモリがある場合、これはシステムのパフォーマンスを簡単に改善する安全なオプションとなるでしょう。

ただし、一部のユーザーは完全なケーキを望んでおり、それはスワップを「1」または「0」に設定することを意味します。「1」は可能な最小の「アクティブスワッピング」設定であり、「0」はスワップを完全に無効にし、RAMが完全に満杯になるまで戻らないことを意味します。これらの設定は理論的にはまだ機能する可能性がありますが、2GB RAM以下の低スペックシステムでテストするとフリーズを引き起こし、OSが完全に応答しなくなる可能性があります。一般的に、全体的なシステムパフォーマンスと応答遅延の間の黄金の意味を見つけるには、かなりの実験が必要です(いつものように)。

よくある質問

Linuxにおけるスワップスペースとは何ですか?

Linuxにおけるスワップスペースは、RAM(ランダムアクセスメモリ)が完全に利用されているときに使用されるハードドライブの一部です。システムがより多くのメモリリソースを必要とし、RAMが満杯になると、メモリ内の非アクティブページがスワップスペースに移動されます。このプロセスは、ハードドライブへのアクセスがRAMへのアクセスよりも遅いため、パフォーマンスのコストを伴いながら、システムに追加のメモリリソースを提供します。

Linuxにおけるスワップネスとは何ですか?

スワップネスは、システムがランタイムメモリをスワップアウトすることをどの程度好むかを制御するLinuxカーネルのパラメータです。スワップネスは0から100の値を持つことができ、低い値はスワップをあまり好まないことを意味し、高い値はスワップをより好むことを意味します。

現在のスワップネス値を確認するにはどうすればよいですか?

ターミナルでcat /proc/sys/vm/swappinessコマンドを実行することで、現在のスワップネス値を確認できます。これにより、現在のスワップネス値が表示され、通常は多くのLinuxディストリビューションでデフォルトで60に設定されています。

スワップネス値を変更するにはどうすればよいですか?

スワップネス値を一時的に変更するには、sudo sysctl vm.swappiness=コマンドを使用し、を希望のスワップネスレベルに置き換えます。変更を永続的にするには、/etc/sysctl.confファイルにvm.swappiness = を追加し、その後sudo sysctl -pを実行します。

スワップネスを増やすとパフォーマンスが向上しますか?

必ずしもそうではありません。スワップネスを増やすと、スワップスペースの使用頻度が高まり、ハードドライブ上のデータへのアクセスがRAMよりも遅いため、システムが遅くなる可能性があります。ただし、メモリが常に満杯でプログラムが終了される状況では役立つことがあります。メモリ内により多くのアプリケーションを保持することと、スワップスペースを使用する際のパフォーマンスコストとのバランスです。

RAMよりも大きなスワップスペースを持つことは良いアイデアですか?

スワップスペースのサイズは、システムの作業負荷と構成に依存します。過去には、スワップスペースはRAMの2倍のサイズを持つべきというのが一般的なルールでした。しかし、現代のシステムは大量のRAMを持っているため、これはしばしば不要です。システムのメモリ使用状況を監視し、理解して調整することがより重要です。

スワップスペースなしでLinuxを実行できますか?

はい、大量のRAMを持つシステムでは、スワップスペースなしでLinuxを実行することが可能です。ただし、スワップスペースがないと、RAMが枯渇したときにアプリケーションが終了したり、システムが不安定になるなどの問題が発生する可能性があります。

スワップネスはSSD(ソリッドステートドライブ)にどのように影響しますか?

スワップネスはSSDを使用するシステムにとって重要な要素となる可能性があります。スワップスペースへの頻繁な書き込みは、SSDの書き込み耐久性制限によりSSDの寿命を短くする可能性があります。ただし、現代のSSDは一般的により耐久性があり、実際の影響はSSDの品質や作業負荷によって異なる場合があります。

稼働中のシステムでスワップスペースのサイズを変更できますか?

稼働中のシステムでスワップスペースのサイズを調整できます。新しいスワップファイルを作成するか、既存のものをサイズ変更し、swaponおよびswapoffコマンドを使用してアクティブまたは非アクティブにできます。サイズ変更がシステムの安定性に干渉しないことを常に確認してください。

システムのスワップ使用状況を監視するにはどうすればよいですか?

スワップ使用状況を監視するには、free -mのようなコマンドを使用してメモリとスワップの使用状況を確認したり、vmstatで詳細な仮想メモリ統計を取得したり、tophtopでリアルタイムのメモリとスワップの使用状況を他のシステムメトリクスと共に監視することができます。

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。