利用可能なRAMが2GしかないRHEL 7システムがあります。
free -g
total used free shared buff/cache available
Mem: 31 28 0 0 1 2
Swap: 15 9 5
vm.swappiness = 100
だから私たちは/etc/sysctl.conf
10の代わりにinを使ってswappinessを最大に増やすことに決め、sysctl -p
その設定を適用しました。
しばらくして、状態を再確認してください。
free -g
total used free shared buff/cache available
Mem: 31 28 0 0 2 2
Swap: 15 9 5
ご覧のとおり、新しいスワップ可能性の設定にもかかわらず、free -g
使用可能なRAMは2Gのままです。なぜ?ここに問題がありますか?
15Gを見ると予想使用される交換。
また、以下の事項を確認しました。
cat /proc/sys/vm/swappiness
100
したがって、すべてが新しい設定に従って機能しますが、free
同じ状況を示す必要があります。どうなりますか?
答え1
設定swappiness
が期待どおりに機能しています。増加により、swappiness
システムが他のものよりもスワップを好むことはありません。増加はswappiness
ページキャッシュとスワップのバランスに影響を与えます。カーネルが物理メモリを使用可能にする必要がある場合は、通常、2つの戦略のいずれかを使用して削除できます。つまり、ページキャッシュからページを削除できます(その内容がディスクにあるため)。または、ページをスワップすることをswappiness
決定します。ある戦略を他の戦略より好む程度です。 0(最小値)に設定すると、swappiness
カーネルはさまざまなハイウォーターマークに達するまでスワップを防ぎ、ページキャッシュからページを削除します。 100(最大値1)に設定すると、カーネルがスワップとスワップを等しく考慮することを意味します。ページキャッシュ。
カーネルがより多くのメモリを必要とする場合にのみ、新しい設定の影響を見ることができます。つまり、キャッシュに使用されるメモリ量が減少する前にスワップ使用量が増加することがわかります。
swappiness
カーネルがより多くのメモリを使用可能に保つことはできません。物理メモリは常に無料ではなく使用するのが最善です。したがって、カーネルには物理メモリを先制的に解放する(利用可能なメモリを増やす)インセンティブはありません。
バラよりRHEL 7 パフォーマンス調整ガイドより多くの情報を知りたいです。
¹ RHEL 7 では、最新のカーネルは最大 200 の値を受け入れ、RAM ベースのスワッピングに役立ちます。
答え2
解決策は以下を追加することですvm.watermark_scale_factor
(素晴らしい記事このトピックについて)
sudo sysctl -w vm.watermark_scale_factor=1000
あなたが探している効果があるはずです:
使用可能なメモリが10%未満に低下すると、10 := watermark_scale_factor / 100
カーネルは目を覚ます(ここでは)。スワフードしたがって、メモリページはスワップ領域にスワップされます(またはキャッシュページは破棄されます)。これ実際には異なりますvm.swappiness
)空きメモリが20%に達するまで
便利な参考資料:https://www.kernel.org/doc/Documentation/sysctl/vm.txt