web-dev-qa-db-ja.com

RAM=がほぼ半分の場合に使用されるスワップ

今日、私は次のことを発見したことに気づきました:

enter image description here

ご覧のとおり、RAMはほとんど空きがなく、スワップ領域の使用率が非常に高くなっています。教科書の知識から、Linux OSはRAMを最大限に活用しようとし、RAMが不足すると、最も使用頻度の低いページの一部をRAMから移動すると考えていましたスペースを入れ替えます。

私の理論的な知識が正しくない場合、誰かが私に説明してもらえますか、そしてLinuxの世界で実際にどのように機能するか説明してください。

8
pradeepchhetri

メモリが残っている場合でもカーネルがスワップを使用することは事実ですが、その3分の2以上を使用すると、歴史的にサーバーのメモリが不足している可能性があり、それがスワップを開始した理由です。システムに十分なRAMがあるかどうかを推測するために、sarレポートでスワップ使用量とメモリ使用量を関連付けます。また、dmesgまたはログをチェックして、サーバーのメモリが実際に不足し、oom-killerが起動したかどうかを確認します。

9
Petter H

十分なRAMが解放されていても、Linuxカーネルはメモリページをスワップアウトし始めます。カスタムのswappinessを設定することで、この動作を微調整できます。

http://en.wikipedia.org/wiki/Swappiness

サーバーの場合、ワークロードに常に十分なメモリがある場合は、swappinessを1に設定することをお勧めします。ワークステーションの場合は、デフォルトの60を使用することをお勧めします。

# check the current value
cat /proc/sys/vm/swappiness
60

# swappiness = 1 (swap only if necessary)
echo 1 > /proc/sys/vm/swappiness

# or use sysctl
sysctl -w vm.swappiness=1

/etc/sysctl.confの設定を永続的にするには、次のように設定します。

vm.swappiness=1

そしてそれをリロード

sysctl -w
6
mgabriel

一部のアプリケーションでは、意図的にRAMをスキップして、スワップを直接ハンマーで打ってしまいます。あなたを見ると、Chrome=(そしてある時点ではPhotoshop)です。これらのアプリケーションをスワップしないようにする唯一の方法は、スワップパーティションなしで実行することです。彼らは明示的にそれを要求します。

上記のswappinessの変更は、他のすべての場合にも機能します。ただし、1ではなく10〜20の値をお勧めします。

0
Arthur Kay