
毎週土曜日、理由はわかりませんが、私のサーバーの 1 つでスワップ使用率が急上昇します。空きメモリは十分あるので必ずしも問題ではありませんが、何が起こっているのか理解したいと思っています。
特に、約 20 分間にスワップの使用率が 2% から 100% に上昇する状況には困惑しています。ただし、この状況が発生すると、スワップ レートは増加しないようです。サーバーには 8 GB のスワップ パーティションがあるため、使用可能なスペースを埋めるためには、1 秒あたり数千ページのページ アウト レートが必要になると予想されます。
さらに、その時点ではサーバーのスワップを引き起こすようなメモリ使用率の急上昇は発生していないようです。
観察された動作について説明できる人はいますか? サーバーは RHEL 4.8 (古いのはわかっています) で、カーネルは 2.6.9 です。以下に sar からの出力をいくつか示します。
スワップ利用率は約 20 分で 2% から 100% に急上昇します。
$ sar -r -f sa12
....
06:00:01 PM kbmemfree kbmemused %memused kbbuffers kbcached kbswpfree kbswpused %swpused kbswpcad
06:10:01 PM 4583856 11847032 72.10 79676 319804 8178056 207864 2.48 19816
06:20:01 PM 4720904 11709984 71.27 38840 225108 8178400 207520 2.47 19124
06:30:02 PM 4839160 11591728 70.55 1404 144948 1968152 6417768 76.53 6227068
06:40:02 PM 4827016 11603872 70.62 1640 145484 10232 8375688 99.88 8182968
06:50:02 PM 4836376 11594512 70.57 844 123304 60 8385860 100.00 8193044
07:00:01 PM 4825764 11605124 70.63 920 128108 4516 8381404 99.95 8188680
....
同じ期間のスワッピング統計は次のとおりです。
$ sar -W -f sa12
....
06:00:01 PM pswpin/s pswpout/s
06:10:01 PM 0.00 0.00
06:20:01 PM 0.00 0.00
06:30:02 PM 0.68 0.00
06:40:02 PM 1.85 0.00
06:50:02 PM 5.07 0.00
07:00:01 PM 8.62 0.00
....
答え1
興味深い事実: スワップ使用量は 0 から 8 GB に増加しました...一方、ディスクには 1 バイトも書き込まれませんでした (sar はpswpout/s
0 を示しています)。したがって、スワップは割り当て/予約されたが、消費/使用されなかったと推測します。
私の推測では、あなたのサーバーはvm.overcommit_memory=2
(読み取り専用)を使用しています。vm.overcommit_memory ドキュメント、VM オーバーコミット アカウンティング)。その場合、割り当てられた各バイトは使用済みとしてカウントされます。[確認していません]。
スレッドも読んでみてくださいLinux: 使用されたスワップの合計 = プロセスによって使用されたスワップ + ??。
答え2
これは質問に直接答えるものではありませんが、次のスクリプトは調査に役立つかもしれません。これにより、個々のプロセスが使用しているスワップ領域の量を知ることができます。
スワッピングがいつ開始されるか大まかにわかっている場合は、その時間帯にこのスクリプトを実行するように cron を設定できます。