Linux: Speicher ist frei, aber Swap wird verwendet. Warum?

11

Hier sind Munins Diagramme.

Speichernutzung: http://koryagin.com/w/q/memory-day.png

Swap in / out: http://koryagin.com/w/q/swap-day.png

Warum beschließt Linux, den Cache zu vergrößern und Swap zu verwenden, wenn die RAM-Größe viel größer ist als der von Programmen verwendete Speicher?

Pavel Koryagin
quelle
2
Das Linux-VM-Subsystem wurde in den letzten Jahren stark auf Puffer- und Cache-Speicher abgestimmt. Anwendungen, die Speicher belegen, aber nichts tun , werden auf die Festplatte gemischt. Dies erhöht die Reaktionsfähigkeit und Leistung. Wenn Sie keine Leistungsprobleme feststellen, sollten Sie sich darüber keine Sorgen machen müssen.
Bart Silverstrim

Antworten:

17

Ihr Server hat wahrscheinlich einige speicherfressende und / oder inaktive Prozesse mit vielen inaktiven Seiten. Der Linux-Kernel zieht es vor, inaktive Teile von Programmen auszutauschen, da der Speicher höchstwahrscheinlich besser als Cache verwendet wird.

Wenn Sie dieses Verhalten ändern möchten, spielen Sie mit vm.swappinesssysctl tunable, aber seien Sie gewarnt, es ist nicht so einfach, die Kernel-Entwickler / Distribution-Betreuer zu überlisten. :-)

Haben Sie während dieses Swap-Spikes Leistungsprobleme auf Ihrem Server oder haben Sie aus Neugier gefragt?

Janne Pikkarainen
quelle
Ich habe keine Leistungsprobleme auf diesem bestimmten Server. Aber bei einem anderen, bei dem die Situation nicht so klar ist, denke ich darüber nach, was ich tun soll. Kann eine Linux-Speicherverwaltungslogik nicht der Grund für PHP-FPM-Fehler sein, wenn sie keinem der bekannten PHP-Probleme entspricht? Also generell zugunsten der Neugier.
Pavel Koryagin
Übrigens verarbeitet dieser Server sehr wenige Datenmengen intensiv mit einem festen Satz von Skripten, sodass er keine intensiven E / A-Vorgänge haben sollte. Warum will Linux einen so großen Cache haben?
Pavel Koryagin
Linux speichert Dateien, Dateimetadaten, Verzeichniseinträge usw. stark zwischen. Befehl ausprobieren slabtop.
Janne Pikkarainen
Danke vielmals. Es wird eine Weile dauern, um zu verstehen, was mit slabtopInformationen zu tun ist .
Pavel Koryagin
Lassen Sie das im Vollbildmodus laufen, wenn Ihr Chef an Ihrer Kabine vorbeigeht und sich in seinen Augen zum Guru macht. :-) Ein weiterer netter Befehl "Oh, das sieht sicher schwer zu verstehen aus" ist systat -vmstatin FreeBSD (wahrscheinlich auch in anderen BSDs).
Janne Pikkarainen
1

Sie sollten versuchen, mit dem Swappiness- Parameter zu spielen . Wie Sie sehen können, hat Ihr System beim Versuch, die Größe des Dateicaches zu erhöhen, mit dem Auslagern begonnen. Dies ist normal, wenn swappines nicht 0 ist.

Alex
quelle