Linux Kernel

Swap Space für die Linux-Kernel-Speicherverwaltung

Swap Space für die Linux-Kernel-Speicherverwaltung

Teil eins. Der Swap-Raum

Um richtig zu funktionieren, ist ein Computer auf eine ausreichende Menge an Arbeitsspeicher angewiesen. Einfach sagen, dass es nie genug geben kann. Je mehr physischer Speicher installiert ist, desto teurer ist es. Das Ergebnis ist meist ein cleverer Kompromiss zwischen Kosten und Geschwindigkeit für den Zugriff auf die Speicherzellen.

Um diesen Kompromiss zu erreichen, kombinieren UNIX/Linux-Systeme zwei Arten von Speicher – physischer Speicher (RAM) und Swap-Space. Zusammenfassend wird dies als virtueller Speicher eines Computersystems bezeichnet. Physischer Speicher ist ziemlich teuer, aber schnell und innerhalb von Nanosekunden zugänglich. Im Gegensatz dazu ist Swap-Speicher eher billig, aber langsam und innerhalb von Millisekunden zugänglich.

Es gibt einige Gründe, warum Swap-Speicher nützlich ist. Erstens benötigen einzelne Prozesse manchmal mehr Speicher, als das System physisch besitzt, und können den Prozessen, die dies benötigen, mehr zur Verfügung stellen. Dadurch können nicht mehr alle Daten, die im physischen Speicher gehalten werden, dort gespeichert werden stored. Jetzt kommt der Swap Space ins Spiel und eine Auswahl von Speicherseiten wird in den Swap Space übertragen, um physischen Speicher freizugeben.

Zweitens werden nicht alle Daten gleichzeitig im Speicher benötigt. Aus diesem Grund werden weniger genutzte Speicherseiten im Swap-Bereich geparkt, um so viel freien physischen Speicher wie möglich zur Verfügung zu haben. Diese Methode wird als der am wenigsten zuletzt verwendete Page Replacement Algorithm (LRU) bezeichnet [1].

Tauscharten

Swap Space existiert in zwei Varianten. Version 1 ist eine separate Festplattenpartition, die sogenannte Swap-Partition. Auf dieser Partition sind keine Dateien gespeichert, aber Speicherinformationen (Dumps). Version 2 ist einfach eine Datei auf einer Festplatte, die sich im Dateisystem Ihrer Festplatte befindet. Version 1 ist auf UNIX/Linux-Systemen, BSD und OS X sehr verbreitet, während Version 2 auf Systemen mit Microsoft Windows existiert Microsoft. Version 2 kann auch auf UNIX/Linux-Systemen aktiviert werden (siehe unten).

Um zu sehen, welcher Auslagerungsbereich auf Ihrem UNIX/Linux-System aktiv ist, führen Sie den folgenden Befehl in einem Terminal aus:

$ /sbin/swapon -s
Dateiname      Typ       Größe        Verwendet      Priorität
/dev/dm-3   Partition  16150524   316484  -1
$

Alternativ können Sie eine Anfrage an das proc-Dateisystem senden und den Befehl cat /proc/swaps . ausführen

Dieses Linux-System hat eine Swap-Partition mit einer Größe von ca. 15 GB, in der derzeit über 300M verwendet werden. Die Spalte Priorität zeigt an, welcher Swap Space zuerst verwendet werden soll. Der Standardwert ist -1. Je höher der Prioritätswert, desto früher wird dieser Swap Space berücksichtigt. Die Option -s ist die Kurzversion von -summary. Diese Option ist veraltet und es wird empfohlen, stattdessen die Option -show wie folgt zu verwenden:

$ /sbin/swapon --show=NAME,TYP,GRÖSSE,BENUTZT,PRIO
NAME       TYP       GRÖSSE   VERWENDET PRIO
/dev/dm-3 Partition 15,4G 307,1M   -1
$

Die Option -show akzeptiert eine Liste von Werten, die die Spaltenüberschriften darstellen. Um eine bestimmte Ausgabereihenfolge zu erreichen, wählen Sie die gewünschten Spaltenüberschriften und deren Reihenfolge.

Größe tauschen

Als allgemeine Regel wird empfohlen, dass die Größe des Swap-Speichers doppelt so groß ist, wie das System über physischen Speicher verfügt. Beachten Sie dies für allgemeine Setups und Desktop-Computer. Bei UNIX/Linux-Servern mit viel mehr physischem Speicher können Sie die Größe des Swap-Speichers auf 50 % des RAM reduzieren lower. Laptops, die in den Ruhezustand versetzt werden können, müssen etwas größer als der physische Speicher sein.

Installation

Bei einer Swap-Partition wird empfohlen, gleich zu Beginn der Aufteilung der Festplatte in einzelne Partitionen an den Swap-Speicherplatz zu denken oder genügend freien Festplattenspeicher zu lassen, um ihn später eventuell zu verwenden. Normalerweise fragt die Setup-Routine bei der Konfiguration der zu verwendenden Platten nach der Größe des Swap-Space. Unter Debian GNU/Linux sieht dies beispielsweise wie folgt aus:

Wie oben erwähnt, können Sie, solange Sie Platz für neue Partitionen auf Ihrer Festplatte haben, Swap-Partitionen mit Befehlen wie fdisk und swapon erstellen und einbinden.

Alternativ kann der Auslagerungsspeicher auch nachträglich als Auslagerungsdatei aktiviert werden. Linux unterstützt diese Methode, sodass Sie sie ähnlich wie eine Swap-Partition erstellen, vorbereiten und mounten können. Der Vorteil dieser Methode besteht darin, dass Sie eine Festplatte nicht neu partitionieren müssen, um zusätzlichen Swap-Speicherplatz hinzuzufügen.

Als Beispiel erstellen wir eine Datei namens /swapfile mit einer Größe von 512M und aktivieren diese als zusätzlichen Swap-Space. Zuerst erstellen wir mit Hilfe des dd-Befehls eine leere Datei. Zweitens verwendet mkswap diese Datei, um sie in den Swap-Stil umzuwandeln. Möglicherweise stellen Sie fest, dass der Inhalt der Datei wie eine Partition behandelt wird und eine entsprechende UUID zugewiesen wird. Drittens aktivieren wir dies mit swapon. Schließlich zeigt der Befehl swapon -show zwei Swap-Einträge an - eine Partition und die neu erstellte Datei.

# dd if=/dev/zero of=/swapfile bs=1024 count=524288
524288+0 Datensätze in
524288+0 Datensätze aus
536870912 Byte (537 MB) kopiert, 0,887744 s, 605 MB/s
# mkswap /swapfile
Einrichten von Swapspace Version 1, Größe = 524284 KiB
kein Label, UUID=e47ab7fe-5efc-4175-b287-d0e83bc10f2e
# swapon /swapfile
# swapon --show=NAME,TYP,GRÖSSE,BENUTZT,PRIO
NAME      TYP       GRÖSSE   VERWENDET PRIO
/dev/dm-3 Partition 15,4G 288,9M   -1
/swapfile-Datei       512 M      0B   -2
#

Um diese Auslagerungsdatei beim Booten zu verwenden, fügen Sie als Administrator die folgende Zeile zur Datei hinzu /etc/fstab:

/swapfile  none   swap  sw   0   0

Deaktivieren eines Auslagerungsbereichs

Zu guter Letzt gibt es noch einen Befehl, um die Auslagerungsdatei wieder zu deaktivieren. Der Befehl heißt Austausch. Es erfordert einen einzigen Parameter, der angibt, dass das Swap-Gerät deaktiviert werden soll. Dieser Befehl deaktiviert die zuvor aktivierte Auslagerungsdatei:

# swapoff /Swapfile

Ebenfalls, Austausch kann mit der UUID eines Dateisystems arbeiten. zu machen Austausch handele so nutze die Option -U gefolgt von der UUID des entsprechenden Dateisystems. Falls es notwendig ist, alle Swap Spaces auf einmal zu deaktivieren, die Option -ein (lange Option -all) ist ganz praktisch. Der vollständige Befehl ist Auslagerung -a.

Tuning des Swap-Ökosystems

Beginnend mit Linux-Kernel-Releases 2.6 wurde ein neuer Wert eingeführt. Dies wird in der Variablen gespeichert /proc/sys/vm/swappinessund steuert die relative Gewichtung des Auslagerns des Laufzeitspeichers im Gegensatz zum Löschen von Speicherseiten aus dem Systemseiten-Cache [2]. Der Standardwert ist 60 (Prozent des freien Speichers vor dem Aktivieren des Swaps). Je niedriger der Wert, desto weniger Swapping wird verwendet und desto mehr Speicherseiten werden im physischen Speicher gehalten.

Um den Wert vorübergehend festzulegen, legen Sie den Wert im /proc-Dateisystem wie folgt fest:

# echo 10 > /proc/sys/vm/swappiness

Alternativ können Sie die sysctl Befehl wie folgt:

# sysctl -w VM.Wechselhaftigkeit=10

Um den Wert dauerhaft festzulegen, fügen Sie der Datei die folgende Zeile hinzu /etc/sysctl.conf:

vm.Wechselhaftigkeit = 10

Ist Swap noch aktuell?

Sie fragen sich vielleicht, warum wir uns mit diesem Thema beschäftigen. Moderne Computer haben genug physischen Speicher – warum müssen wir uns darum kümmern?? Es gibt einige Gründe, warum diese Technologie mehr wert ist als ein Gedanke.

Denken Sie daran, dass Sie eine Weile bei Ihrem Gerät bleiben, aber die Software, die Sie darauf verwenden, von Zeit zu Zeit aktualisieren können. Aktuell passen sowohl die Hardware als auch die Software zueinander. In Zukunft kann es sich ändern, und Sie benötigen mehr Speicher als jetzt. Wenn Sie keine neue Hardware aufrüsten oder neue Hardware kaufen, können Sie mit einer Swap-Partition etwas Geld sparen.

Sie haben vielleicht schon von einer Funktion namens Suspend to Disk oder Ruhezustand gehört [3]. Ihre Maschine wird schlafen. Zuvor muss es seinen aktuellen Zustand irgendwo speichern. Jetzt kommt der Swap Space ins Spiel und fungiert als Container, um diese Daten zu speichern. Sobald die Maschine das nächste Mal aufwacht, werden die gesamten Daten aus dem Swap Space gelesen, in den Speicher geladen und Sie können dort weiterarbeiten, wo Sie zuvor aufgehört haben.

Wenn das System nur über ein permanentes Speichergerät verfügt, muss es Ihre Dateien lesen und schreiben, während es auf demselben Gerät ausgetauscht wird. Sie werden eine enorme Verbesserung sehen, wenn Sie ein zweites Gerät haben und das Auslagerungsgerät von widersprüchlichen Dateizugriffen trennen können.

Die Auslagerungsdatei muss Daten durch das Dateisystem übertragen. Dies fügt eine Indirektionsebene hinzu, um den Anschein zu erwecken, dass es einen zusammenhängenden logischen Adressraum gibt, mit dem der Kernel arbeiten kann. Dies fügt zusätzlichen Speicher-Overhead und CPU-Zyklen hinzu. Die besten Ergebnisse erzielen Sie mit einer Raw-Swap-Partition.

Fazit

Auch heute noch ist das Wissen über Swap essenziell. Dieses Thema ist Teil der Kenntnisse, die zum Bestehen des Linux Professional Institute Certificate Level 1 (LPIC 1) erforderlich sind. Die meisten Prüfungen enthalten ein oder zwei Fragen zu diesem Thema.

Swap Space hilft Ihrem Linux-System (Kernel), Speicher bei Bedarf schnell zu organisieren. Um mit Ihnen offen zu sein, ist Swap-Speicher nicht unbedingt erforderlich, falls Ihr System viel RAM hat. Im Notfall hilft es Ihrem System zu überleben. Deshalb würde ich nie den Weg eines traditionellen Setups ohne Swap Space verlassen.

Die Kombination von Swap und SSD wird kontrovers diskutiert, da die Anzahl der Disc-Schreibvorgänge auf einer SSD recht begrenzt ist. Sowohl Swap- als auch temporäre Dateien sind so aufgebaut, dass sie viele Daten schreiben. Andererseits haben moderne SSDs mehr als genug zusätzlichen Speicherplatz (7%), um Sektorausfälle zu bewältigen. Zur Sicherheit: nach Möglichkeit einen separaten Swap auf einer herkömmlichen Festplatte durchführen - keine Ramdisk, keine SSD verwenden, zumindest zum Swap [4]. Ihr Linux-System wird es Ihnen für diese Entscheidung danken.

Um zu vermeiden, dass der Swap-Speicher auf Ihrer SSD gespeichert wird, können Sie stattdessen ZRAM verwenden [5,6]. Dies ist Virtual Swap Compressed in RAM, auch als zSwap bezeichnet. Diese Technologie ermöglicht ein komprimiertes Blockgerät im Speicher. Sobald kein Speicherplatz mehr vorhanden ist, werden Speicherseiten auf dieses Blockgerät übertragen. Dies führt zu weniger Swap-Nutzung und hilft auch, die Lebensdauer Ihrer Festplatte zu verlängern.

Links und Referenzen

Linux-Speicherverwaltungsserie

Danksagung

Der Autor bedankt sich bei Mandy Neumeyer und Gerold Rupprecht für die Unterstützung bei der Erstellung dieses Artikels.

Beste Linux-Distributionen für Gaming im Jahr 2021
Das Linux-Betriebssystem hat sich weit von seinem ursprünglichen, einfachen, serverbasierten Aussehen entfernt. Dieses Betriebssystem hat sich in den ...
So erfassen und streamen Sie Ihre Gaming-Sitzung unter Linux
In der Vergangenheit galt das Spielen von Spielen nur als Hobby, aber mit der Zeit verzeichnete die Spieleindustrie ein enormes Wachstum in Bezug auf ...
Beste Spiele zum Spielen mit Handtracking
Oculus Quest hat kürzlich die großartige Idee des Hand-Trackings ohne Controller vorgestellt. Mit einer ständig steigenden Anzahl von Spielen und Akti...