Nun kann es aber vorkommen, dass das komplette RAM voll ist, weil z.B. (sehr) viele Programme gleichzeitig geöffnet sind. An dieser Stelle beginnt der Linux-Kernel, RAM frei zu machen, indem er Teile der im RAM gespeicherten Daten auf die Festplatte schreibt.
Werden die Daten wieder benötigt, so werden diese wieder ins RAM geladen und andere im Moment nicht benötigte Daten werden in den Swap geschrieben. In einem solchen Fall sagt man auch: „das System swappt“.
Nutzt ein System den Swap intensiv, so wird das System durch die häufigen Plattenzugriffe deutlich langsamer und fühlt sich „zäh“ an.
Hat man allerdings keinen Swap und das RAM läuft voll, so beendet der Linux-Kernel nach eigenem Ermessen Programme, um RAM frei zu machen. Dies hat in der Regel Datenverlust zur Folge.
Um genau dies zu verhindern, legt Linux (alle Distributionen) bei der Installation standardmäßig einen Swap-Bereich (= Auslagerungsbereich) an. Neuere Ubuntu-Versionen verwenden hierbei eine Swap-Datei.
Verwendet man noch Xenial oder hat man von einer älteren Ubuntu-Version ein Upgrade durchgeführt, wird statt der Swap-Datei noch eine Swap-Partition verwendet. Dies hat in der Regel keinen Nachteil, es unterscheidet sich aber die Handhabung in manchen Details.
Es lässt sich festlegen, wann der Kernel Daten aus dem Arbeitsspeicher in die Swap-Partition bzw. Swap-Datei verschiebt:
Die swappiness wird mit einem Wert von 0 bis 100 angegeben, wobei mit 0 nicht ausgelagert wird.
Es besteht das Risiko, dass der Arbeitsspeicher bei speicherintensiven Anwendungen voll läuft und das System einfriert, während mit 100 der Arbeitsspeicher kaum genutzt wird. Der Standardwert ist 60, der Kernel neigt also eher zum Auslagern. Pauschal lässt sich kein Wert empfehlen, da es auf das jeweilige System und das Benutzerverhalten ankommt.
Hat das System mehr als 2 GiB Arbeitsspeicher und hantieren die Benutzer nicht mit schwerfälligen Programmen (Bild-/Videobearbeitung, Datenkompression, aufwändig gestaltete Spiele o.ä.), könnte es von Nutzen sein, die swappiness klein zu halten. Andererseits sollte jedoch darauf geachtet werden, dass die Kapazität des Arbeitsspeichers nicht verschwendet wird.
Wurde die swappiness sehr niedrig gesetzt und laufen z.B. viele Programme parallel, kann es leicht passieren, dass der Arbeitsspeicher fast voll ist und genau dann ein Programm gestartet wird, das den Arbeitsspeicher besonders stark belastet. Nun ist der Speicher ausgeschöpft und das System muss nicht nur das ohnehin schwerfällige Programm laden, sondern gleichzeitig auch noch auslagern.
Resultat ist ein völlig ausgelastetes System.
Mit folgendem Befehl lässt sich der aktuelle Wert der swappiness herausfinden:
sysctl vm.swappiness
Das Ergebnis könnte so aussehen:
vm.swappiness = 60
Um die swappiness sofort zu ändern, bspw. auf 25 abzusenken, verwendet man diesen Befehl:
sudo sysctl vm.swappiness=25
Diese Änderung wird vom System jedoch nach einem Neustart vergessen, wenn nicht folgendes in die Systemdatei /etc/sysctl.conf eingetragen wird:
vm.swappiness=25
Comments 1