ubuntuusers.de » Wiki » Swap

Swap

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

Linux (wie auch so gut wie alle anderen Betriebssystem) versucht, die Betriebssystemkomponenten, aktuell benötigte Programmdaten etc. möglichst komplett im RAM-Speicher zu halten, da der Zugriff auf das RAM deutlich schneller ist als auf Datenträger wie Festplatte, CD, USB Stick usw.

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, in dem er Teile des RAM Speichers auf die Festplatte schreibt, wobei er die Daten in eine spezielle Partitionen schreibt, den sogenannte Swap-Space bzw. die Swap Partition. Werden die Daten wieder benötigt, so werden diese wieder ins RAM geladen und andere im Moment nicht benötigte Daten werden auf die Swap Partition geschrieben. In einem solchen Fall sagt man auch: "das System swapt". Nutzt ein System den Swap Space intensiv, so wird das System durch die häufigen Plattenzugriffe deutlich langsamer und fühlt sich "zäh" an. Hat man allerdings keinen Swap Space 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 immer Datenverlust zur Folge. Um genau dies zu verhindern, legt Ubuntu (so wie alle anderen Distributionen) bei der Installation standardmäßig eine Swap-Partition an.

Auf modernen Computern mit 1024 MB RAM oder mehr swapen die Systeme kaum (es sein denn, man bearbeitet sehr große Audiodateien, bearbeitet mehrere große Bilder mit GIMP oder hat extrem große Office-Dokumente geöffnet etc.). Selbst bei Systemen mit 512 MB RAM hält sich das swapen in Grenzen. Hat man allerdings z.B. ein Xubuntu mit 128 MB RAM, so läuft dieses zwar, aber es wird viel geswapt.

Die Größe der Swap Partition hängt von der Größe des RAMs ab. Als Faustregel gilt, dass die Swap-Partion mindestens so groß wie das RAM sein sollte und höchstens doppelt so groß. Speziell bei "Suspend-to-disk" (Notebooks) gilt die Empfehlung: Swap = RAM + 30%. Zu große Swap-Partitionen bringen keinerlei Vorteile, sondern verschwenden nur Platz auf der Festplatte.

Swap anlegen

Wie oben bereits erwähnt, legt K|X|Ubuntu standardmäßig automatisch eine Swap Partition an, d.h. man muss nichts weiter machen. Möchte man eine neue Swap Partition anlegen, so sollte man hier weiter lesen.

Swap als Datei

Linux bietet auch die Möglichkeit, anstatt einer Partition den Swap Space in eine Datei zu legen, die sogenannte "Auslagerungsdatei". Dieses Verfahren nutzt z.B. Windows standardmäßig.

Um eine Auslagerungsdatei zu erstellen, ist ein Terminal [1] notwendig. Mit

sudo mkdir -p /var/cache/swap/ 

legt man den angegebenen Verzeichnispfad komplett an. Danach kommt

sudo dd if=/dev/zero of=/var/cache/swap/swap0 bs=1M count=512 

Den Wert hinter count= sollte man natürlich anpassen, er gibt die Größe der Auslagerungsdatei in Megabyte an.

Experten-Info:

Die Zeile besagt, dass eine Datei mit dem Namen swap0 mit 512MB Größe angelegt wird. Die Größe ergibt sich aus 1M*512=512MiB, wobei 1M=1 Mio. Byte entspricht. Es ist wichtig, dass die Datei so angelegt wird, da sie dann auf der Festplatte durchgehend nur durch leere Speicherstellen besteht und keine zufälligen Daten enthält. Mehr in den Manpages von Shell/dd und zero.

Um den Speicher zu formatieren, gibt man folgendes ein:

sudo mkswap /var/cache/swap/swap0 

Die Warnung kann man dabei ignorieren. Um nicht jedem beliebigen User die Möglichkeit zu geben, den Swap auszulesen, sollte man

sudo chmod 0600 /var/cache/swap/swap0 

ausführen. Das setzt die Rechte für alle Benutzer außer root auf "kein Lesen, kein Schreiben, kein Ausführen".

Damit das System über den Swap Bescheid weiß, gibt man einfach das hier ein:

sudo swapon /var/cache/swap/swap0 

ein. Ein Neustart ist nicht notwendig.

Sicher will man die Auslagerungsdatei auch nach einem Neustart wieder verwenden. Dazu einfach die Datei /etc/fstab in einem Editor mit Rootrechten [2] öffnen und dort diese Zeile anhängen:

/var/cache/swap/swap0    none    swap    sw      0 0

Swap Partition nachträglich erstellen

Falls man die Swap Partition neu erstellen möchte und das bei der Installation vergessen hat, erstellt man eine Swap-Partition [3] und formatiert diese Mithilfe des mkswap Befehls:

sudo mkswap /dev/xxxx 

Anschließend kann die Partition eingebunden werden:

sudo swapon -U UUID 

Um die Partition dauerhaft einzubinden, öffnet man die Datei /etc/fstab mit Root-Rechten [2]. In der Datei fügt man folgende Zeile ein, welche entsprechend angepasst werden muss.

/dev/xxxx none swap sw 0 0

oder in neueren Ubuntu-Versionen:

UUID=.... none swap sw 0 0

Wenn man den Ruhezustand nutzen möchte (oder Probleme mit der Anzeige des Bootsplash hat), muss man zuerst die UUID herausfinden, das geht über folgenden Befehl im Terminal [1]:

ls /dev/disk/by-uuid -al 

Danach muss die Datei /etc/initramfs-tools/conf.d/resume mit Root-Rechten [2] editiert werden und folgende Zeile eingefügt und mit der eigenen <UUID> angepasst werden:

RESUME=UUID=<UUID>

Zuletzt muss das initrd-Image neu geschrieben werden, das geht über folgenden Terminalbefehl:

sudo update-initramfs -u 

Swapnutzung einstellen

Wie aggressiv Daten in den swap ausgelagert werden, lässt sich einstellen. Der Befehl

sudo sysctl -a | grep "vm.swappiness" 

im Terminal [2] sollte folgende Ausgabe bringen:

vm.swappiness = 60

Der Wert der Variablen kann zwischen 0 und 100 liegen. Der Wert 0 bedeutet, dass der Kernel den Auslagerungsspeicher auf der Festplatte (swap) nur dann nutzt, wenn es nicht anders geht. Der Wert 100 bedeutet das genaue Gegenteil. Es wird so früh wie möglich ein unbenutzter Speicherbereich in den Swapspeicher geschoben.

Siehe dazu auch: http://kerneltrap.org/node/3000 {en} . (Anmerkung: Bei der Diskussion auf Kerneltrap gab es kaum zwei gleiche Meinungen. Es muss wohl jeder selbst herausfinden, was ihm am Besten gefällt.)

Um den Wert On-The-Fly zu ändern, gibt man folgendes Kommando ein:

sudo sysctl vm.swappiness=25 

Um den Wert dauerhaft zu ändern, muss man einen Eintrag in der Datei /etc/sysctl.conf erstellen [2]:

vm.swappiness=25

oder einen anderen Wert eintragen, je nach Geschmack.

Swap überwachen

Mit

swapon -s 

kann man jederzeit den Stand des Swap überprüfen. Dazu sind normalerweise auch keine Root-Rechte notwendig, d.h. auch unprivilegierte Benutzer können den Befehl ausführen.

Alternativ hilft hier unter GNOME das Programm "System-> Systemverwaltung -> Systemüberwachung". Im Reiter "Ressourcen" kann man die Belegung von Swap sehen. Man kann auch ein Systemmonitor Applet zum Gnome Panel hinzufügen.

Nutzt man KDE 3, so kann man das Programm "K-Menü -> System -> Systemüberwachung - Performancemonitor" nutzen. Bei KDE4 ist das entsprechende Programm im Menü in "Programme -> System -> Systemmonitor" zu finden, der Reiter "Systemlast" zeigt mitunter auch die Swapnutzung an.

Unter Xfce kann man sich die Belegung von Swap anzeigen lassen, in dem man den Menüpunkt "Applications -> System -> Systemüberwachung", Reiter "Ressourcen" wählt. Oder, in dem man zum Xfce Panel das Plugin "Systemauslastung" hinzufügt.


Diese Revision wurde am 20. September 2009 um 17:39 Uhr von noisefloor erstellt.
Dieser Seite wurden folgende Begriffe zugeordnet: System

Passwort vergessen?