swappinessを構成するにはどうすればよいですか?


345

swappinessを設定するための、段階的でシンプルで簡単な方法が必要です。


17
ワンライナーsudo bash -c "echo 'vm.swappiness = 15' >> /etc/sysctl.conf"
redanimalwar

8
@redanimalwarまたsudo sysctl -p、sysctl.confファイルから新しいswappiness値をロードするために実行する必要があります。そうしないと、変更は次の再起動時に適用されます。
ウォルディリアス

回答:


509

Linuxカーネルは、swapinessと呼ばれるスワップファイルの使用頻度を制御する調整可能な設定を提供します。

swappiness設定が0の場合、絶対に必要な場合(メモリが不足している場合)を除いてディスクが回避されます。swapiness設定が100の場合、プログラムはほぼ瞬時にディスクにスワップされます。

Ubuntuシステムにはデフォルトの60が付属しています。これは、メモリ使用量がRAMの約半分である場合、スワップファイルがかなり頻繁に使用されることを意味します。以下を実行することにより、ご使用のシステムのswappiness値を確認できます。

one@onezero:~$ cat /proc/sys/vm/swappiness
60

4 GBのRAMがあるので、これを10または15に減らします。その後、スワップファイルは、RAMの使用率が約80または90パーセントの場合にのみ使用されます。システムのswappiness値を変更するには/etc/sysctl.confrootとして開きます。次に、この行をファイルに変更または追加します。

vm.swappiness = 10

変更を有効にするために再起動します。

システムの実行中に値を変更することもできます:

sysctl vm.swappiness=10

また、同じ効果を得るために再起動する代わりに実行swapoff -aswapon -aてからルートとしてスワップをクリアすることもできます。

スワップ式を計算するには:

free -m (total) / 100 = A

A * 10

root@onezero:/home/one# free -m
             total       used       free     shared    buffers     cached
Mem:          3950       2262       1687          0        407        952
-/+ buffers/cache:        903       3047
Swap:         1953          0       1953

合計は3950/100 = 39.5 * 10 = 395です

つまり、RAMの10%(395 MB)が残っていると、スワップの使用が開始されます。


                                          助けて 。Ubuntu スワップ

                                           交換性とは

swappinessパラメータは、カーネルがプロセスを物理メモリからスワップディスクに移動する傾向を制御します。ディスクはRAMよりもはるかに遅いため、プロセスがメモリから積極的に移動されすぎると、システムとアプリケーションの応答時間が遅くなる可能性があります。

  • swappiness 0〜100の値を設定できます。
  • swappiness=0
    • カーネルバージョン3.5以降:スワップを無効にします。
    • 3.5より古いバージョンのカーネル:物理メモリからのプロセスのスワップを可能な限り回避します。
  • swappiness=1
    • カーネルバージョン3.5以降:完全に無効化せずに、最小限の交換可能性。
  • swappiness=100
    • プロセスを物理メモリから積極的にスワップし、スワップキャッシュに移動するようにカーネルに指示します。

http://en.wikipedia.org/wiki/Swappinessを参照してください

Ubuntuのデフォルト設定はswappiness=60です。swappinessのデフォルト値を減らすと、おそらく典型的なUbuntuデスクトップインストールの全体的なパフォーマンスが向上します。の値をswappiness=10推奨しますが、自由に実験してください。


91%でスワップの使用を開始しました:

ここに画像の説明を入力してください 私がRAMを利用するために、私のシステムおよびVMを構成してきたように90% 、で90%まったくスワップありませんでした。

その後、Firefox&Shutterなどのアプリケーションをいくつか開きましたが、RAMの使用率が90%を超えているため、スワップが開始されました。


118
Swappinessが100の場合、プログラムはすぐにスワップアウトされません。また、60または90の値は、RAMが60または90%満杯のときにスワップが使用されることを意味しません。これは、キャッシュからページを盗むか、十分でないときにメモリを解放するためにスワップアウトするかを選択する比率です。値を小さくするとキャッシュからページを盗むことを強く好み、値を大きくするとページをスワップアウトしようとすることを強く好みます。この設定は、メモリが(ほぼ)すべて使用されると効果があり、カーネルは一部を解放する方法を選択する必要があります。
-psusi

67
実行中のプログラムによって占有されていないRAMがディスクキャッシュとして使用されることを指摘する必要があります。したがって、swappinessを減らすことにより、プログラムがスワップアウトされない可能性を高めますが、同時にサイズを小さくします。ディスクキャッシュを使用すると、ディスクアクセスが遅くなる可能性があります。したがって、実際のパフォーマンスに対するこの設定の影響はそれほど単純ではありません...もちろん実験を歓迎しますが、デフォルトは主題について十分に理解している人々によって設定されていると思われます:)
Sergey

14
@Sergeyと皮肉なことに、RAMが小さい人は、パフォーマンスを向上させるために遭遇する可能性のあるすべてのトリックを試す可能性が最も高く、60歳以上が最高の人物になる可能性が高いということです。RAMのトン数が10に設定されているのは、そうすることで失われるほど多くは増えないからです。
ジョンハンナ

6
@Freedom_Ben:参照してくださいlinuxatemyram.com :)
セルゲイ

5
ただ、ここで同様の議論を残す- unix.stackexchange.com/questions/88693/...を
イライジャ・リン・
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.