今日、私は次のことを発見したことに気づきました:
ご覧のとおり、RAMはほとんど空きがなく、スワップ領域の使用率が非常に高くなっています。教科書の知識から、Linux OSはRAMを最大限に活用しようとし、RAMが不足すると、最も使用頻度の低いページの一部をRAMから移動すると考えていましたスペースを入れ替えます。
私の理論的な知識が正しくない場合、誰かが私に説明してもらえますか、そしてLinuxの世界で実際にどのように機能するか説明してください。
メモリが残っている場合でもカーネルがスワップを使用することは事実ですが、その3分の2以上を使用すると、歴史的にサーバーのメモリが不足している可能性があり、それがスワップを開始した理由です。システムに十分なRAMがあるかどうかを推測するために、sarレポートでスワップ使用量とメモリ使用量を関連付けます。また、dmesgまたはログをチェックして、サーバーのメモリが実際に不足し、oom-killerが起動したかどうかを確認します。
十分な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
一部のアプリケーションでは、意図的にRAMをスキップして、スワップを直接ハンマーで打ってしまいます。あなたを見ると、Chrome=(そしてある時点ではPhotoshop)です。これらのアプリケーションをスワップしないようにする唯一の方法は、スワップパーティションなしで実行することです。彼らは明示的にそれを要求します。
上記のswappinessの変更は、他のすべての場合にも機能します。ただし、1ではなく10〜20の値をお勧めします。