Frage zum Swapfile

Azurel

Member
Hallo :)

Ich bin eben bei mir drüber gestolpert, dass mein "Swap" 98% erreicht hat. Ich habe ein 32GB RAM Server (CentOS 6.5) mit 1GB Swap. Sollte man da jetzt irgendwie reagieren? Ich könnte wohl den Swap zurücksetzen mit:
swapoff -a
swapon -a
oder vermutlich den Server restarten.

Ich habe mich bezüglich der Größe von Swap versucht schlau zu machen, aber jede Seite sagt da was anderes. Die Meinung Swap abzuschalten halte ich für Unsinn, aber viele meinen so klein wie möglich und bei 32GB RAM reichen 1-2GB aus.

Offizielle Seiten sagen da ein wenig was anderes. Zum Beispiel steht auf centOS
http://www.centos.org/docs/5/html/Deployment_Guide-en-US/ch-swapspace.html
das ich 34GB Swap anlegen müsste.

Redhat meint dazu:
https://access.redhat.com/documenta...Guide/s2-diskpartrecommend-ppc.html#id4394007

Was ist denn jetzt der sinnvollste Wert für mein System und muss ich den Swap von Zeit zu Zeit leeren? ;)
 
Du musst den Swap nicht leeren, der Kernel entscheidet selbständig wann er welche Daten dort ablegt, wieder holt und ggfls. überschreibt.

Es wäre erst dann Zeit zu handeln, wenn Prozesse tatsächlich vom OOM Killer erwischt werden. Mehr SWAP ist insofern sinnvoll, als das - hypothetisch - ein Punkt kommen könnte, an dem der RAM absolut voll ist, der SWAP auch und immer noch mehr Speicher gebraucht wird. Die Frage ist allerdings, ob der Server dann nicht schon am totalen Limit läuft und 34GB SWAP zu füllen würde auch bedeuten, dass der Server unerträglich langsam läuft, weil ein großer Teil der Daten von der langsamen Platte geholt werden muss.

Da würde ich auch erst einmal schauen, ob nicht irgendwo ein mies programmierter Prozess läuft, der fleißig malloc'd aber nicht mehr free'd.

IMO:
Swap ist sinnvoll und wichtig, weil man dann noch Zeit zu reagieren hat und Anwendungen nicht sofort gekillt werden, nur weil der Speicher aus geht. Hier reicht aber ein relativ kleiner Wert, weil man Swapping trotzdem möglichst selten sehen möchte und wenn massiv geswappt wird wäre der nächste Schritt eh mehr RAM/ein neuer Server. IMO.
 
Ich hätte vielleicht noch hinzufügen sollen; Also genutzt werden von den 32GB RAM aktuell und in der Regel sehr konstant lediglich 9GB. ;)

Deine Aussage verstehe ich so, dass wohl kein Handlungsbedarf besteht. Mich verunsichert nur weiterhin, das Plesk 11.5 mir dies als rotes "Problem" meldet.

Mein Hoster meint dazu:

Grundsätzlich ist die Aussage, des Dokuments welches Sie genannt haben korrekt. Der Swap Speicher sollte mindestens der Menge des installierten Arbeitsspeichers entsprechen. Solange aber noch genügend Speicher für Buffers und Caches frei ist, sind keine Probleme zu erwarten.
 
Last edited by a moderator:
AFAIK(!) bezieht Plesk den als Cache genutzten RAM mit ein, was natürlich völliger Mumpitz ist. Zumindest war das vor einiger Zeit (ich schätze mal 2+ Jahre ist es schon her) der Fall bei einem Server.

Falls ich das falsch verstanden habe und Plesk den Swap meldet: ich vermute, da wird einfach nur abgefragt, ob der Swap voll ist. Das gleichzeitig der RAM kaum ausgelastet ist scheint nicht geprüft zu werden, warum auch immer.
 
Last edited by a moderator:
Ja das mit Plesk ist komisch, btw hat mein Hoster aber sich das nochmal näher angeschaut und gesagt:

Wir haben Ihren Server überprüft und festgestellt das die swappiness Ihres Linux noch auf den Standardwert von 60 gesetzt war, dies führte dazu das die Swapfile stark genutzt wurde.

Wir haben die Erfahrung gemacht das ein Wert von 10 für den Wert zu einem besseren Ergebniss führt und haben die entsprechende Änderung für Sie auch bereits in der /etc/sysctl.conf durchgeführt.
 
Die Plesk-Anzeige dürfte schon korrekt gewesen sein. Der Linux-Kernel fängt ja auch teilweise an, Sachen vorsorglich in den Swap zu schreiben, obwohl noch genug RAM frei ist - dann muß er das nicht mehr machen, wenn das RAM knapp wird. Dabei lagert der Kernel umso mehr aus, wenn mehr RAM im System steckt -> viel RAM und ein ein kleiner SWAP sorgt dann dafür das der SWAP sehr schnell sehr gut gefüllt ist. Standardmäßig fängt der Kernel relativ früh an, den SWAP zu füllen, aber das läßt sich beeinflussen, was dein Hoster ja nun auch getan hat. Das ganze ist auch recht gut im Wiki von Ubuntuusers beschrieben, gilt aber auch für andere Distris.
BTW: Handelt es sich bei deinem Server um einen Root- oder Managed Server? Bei einem Root-Server würde ich mir persönlich Sorgen machen, wenn mein Hoster da einfach Einstellungen im System ändern könnte...
 
Ja das mit Plesk ist komisch, btw hat mein Hoster aber sich das nochmal näher angeschaut und gesagt:

Ich lehne mich mal etwas aus dem Fenster und sage: unnötig.
Es ist ja nicht so, dass es irgendwelche Probleme gibt, wenn der Kernel frühzeitig Dinge auslagert, was Danton ja auch schon gesagt hat.
Mir kommt das eher wie eine Beruhigungspille vor: "ja lieber Kunde, der SWAP ist gefüllt aber damit verhinderst Du das".

Ähnliche Scherze gab es auch bei Android mit "Taskkillern", damit schön viel RAM frei ist. Das war nur das Dümmste was man tun konnte und selbst ein Posting von Frau Dianne Hackborn hat daran nichts ändern können, obwohl sie Software Engineer bei Google ist und an Android arbeitet. Der Mythos lebt bis heute und hat schon fast religiöse Züge "mensch, ohne das Tool ist Android total unbenutzbar!!!1111einseinself".

Bottom line:
in der Regel arbeitet der Kernel sehr, sehr gut und je weniger man ändert, desto weniger Schwierigkeiten gibt es normalerweise. Erst wenn es konkrete, nachvollziehbare Probleme gibt, die man tatsächlich darauf zurückführen kann sollte man etwas ändern.
Solche Tipps rühren oft daher, dass hier Probleme gesehen werden die eigentlich keine sind.

Zum technischen Hintergrund:
Es ist einfach logisch, dass sehr selten genutzte Segmente ausgelagert werden, weil man diese dann schneller wieder alloziieren kann, denn sonst müsste der Kernel mit der Auslagerung beginnen, wenn gerade Speicher angefordert wird, was das System unter dem Strich sogar langsamer macht.
 
Last edited by a moderator:
Es sei auch erwähnt dass im Regelberieb das System drch die Swap-Verwendung schneller wird. Jedes MB RAM das in den Swap wandert und eigentlich nie verwendet wird kann so für Disk Caching eingesetzt werden. Es ist also bei fast allen Serverumgebungen sinnvoll selten etwas Leistung zu sakrifieren um den Regelbetrieb zu beschleunigen.
 
Back
Top