Anstieg der Swap-Nutzung ohne hohen Swap-Satz

Anstieg der Swap-Nutzung ohne hohen Swap-Satz

Jeden Samstag kommt es auf einem meiner Server aus mir unbekannten Gründen zu einem Anstieg der Swap-Auslastung. Das ist nicht unbedingt ein Problem, da genügend freier Speicher verfügbar ist, aber ich würde trotzdem gerne wissen, was los ist.

Besonders verblüfft bin ich über eine Situation, in der der Swap-Speicher innerhalb von etwa 20 Minuten von 2 % auf 100 % ausgelastet wird. Wenn dies geschieht, scheint es jedoch keine Erhöhung der Swap-Rate zu geben. Der Server hat eine 8 GB große Swap-Partition, daher würde ich eine Auslagerungsrate von Tausenden von Seiten pro Sekunde erwarten, um den verfügbaren Speicherplatz zu füllen.

Darüber hinaus scheint es zu dem Zeitpunkt, an dem der Server ausgelagert wird, keine Spitze in der Speicherauslastung zu geben.

Kann jemand eine Erklärung für das beobachtete Verhalten geben? Der Server ist RHEL 4.8 (alt, ich weiß) mit einem 2.6.9-Kernel. Ich habe unten einige Ausgaben von sar eingefügt.

Die Swap-Auslastung steigt in etwa 20 Minuten von 2 % auf 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
....

Hier sind die Tauschstatistiken für den gleichen Zeitraum.

$ 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
....

Antwort1

Interessante Tatsache: Die Swap-Nutzung stieg von 0 auf 8 GB ... währenddessen wurde kein einziges Byte auf die Festplatte geschrieben (SAR pswpout/szeigt 0 an). Ich gehe also davon aus, dass der Swap zugewiesen/reserviert, aber nicht verbraucht/verwendet wurde.

Meine beste Vermutung ist, dass Ihr Server verwendet vm.overcommit_memory=2(lesenvm.overcommit_memory-Dokumentation,VM-Überbelegungsabrechnung). In diesem Fall wird jedes zugewiesene Byte als verwendet gezählt. [Ich habe es nicht überprüft].

Vielleicht möchten Sie auch den Thread lesenLinux: Gesamter verwendeter Swap = von Prozessen verwendeter Swap + ??.

Antwort2

Dies beantwortet Ihre Frage zwar nicht direkt, aber das folgende Skript könnte bei Ihrer Untersuchung hilfreich sein. Es zeigt Ihnen, wie viel Swap-Speicher jeder einzelne Prozess verwendet:

Finden Sie heraus, welche Prozesse Swap verwenden

Wenn Sie eine ungefähre Vorstellung davon haben, wann das Auslagern beginnt, können Sie cron so einstellen, dass dieses Skript ungefähr zu dieser Zeit ausgeführt wird.

verwandte Informationen