Linux Kernel Memory Management Swap Space

Linux Kernel Memory Management Swap Space

Teil eins. Der Tauschraum

Um ordnungsgemäß zu arbeiten. Einfach sagen, dass es niemals genug geben kann. Je mehr physikalischer Speicher installiert ist, desto teurer ist es. Meistens ist das Ergebnis ein cleverer Kompromiss zwischen Kosten und Geschwindigkeit, um auf die Speicherzellen zuzugreifen.

Um diesen Kompromiss zu erreichen, kombinieren Sie Unix/Linux -Systeme zwei Arten von Speicher - Physischer Speicher (RAM) und Swap Space. Insgesamt wird dies als virtueller Speicher eines Computersystems bezeichnet. Das physische Gedächtnis ist ziemlich teuer, aber schnell und in Nanosekunden zugänglich. Im Gegensatz dazu ist das Swap -Speicher ziemlich billig, aber langsam und in Millisekunden zugänglich.

Es gibt einige Gründe, warum das Swap -Speicher nützlich ist. Erstens benötigen einzelne Prozesse manchmal mehr Speicher als das System, das physisch besitzt und mehr den Prozessen liefern kann, die es verlangt. Infolgedessen können alle Daten, die im physischen Speicher gehalten werden. Jetzt kommt der Tauschraum ins Spiel, und eine Auswahl von Speicherseiten wird in den Swap -Raum übertragen, um den freien physischen Speicher zu freizugeben.

Zweitens sind nicht alle Daten gleichzeitig im Speicher benötigt. Aus diesem Grund werden weniger verwendete Speicherseiten auf dem Swap -Raum geparkt, um so viel kostenloser physischer Speicher wie möglich zur Verfügung zu haben. Diese Methode wird als der am wenigsten verwendete Seiten -Ersatz -Algorithmus (LRU) bezeichnet [1].

Arten von Tausch

In zwei Varianten existiert der Austauschraum. Version 1 ist eine separate Festplattenpartition, bei der es sich um die sogenannte Tauschpartition handelt. Auf dieser Partition sind keine Dateien gespeichert, sondern Speicherinformationen (Dumps). Version 2 ist einfach eine Datei auf einer Festplatte, die sich im Dateisystem auf Ihrem Harddisk befindet. Version 1 ist bei UNIX/Linux -Systemen BSD und OS X sehr häufig, während Version 2 auf Systemen vorhanden ist, auf denen Microsoft Windows ausgeführt wird. Version 2 kann auch auf UNIX/Linux -Systemen aktiviert werden (siehe unten).

Um zu sehen, welcher Swap -Speicherplatz 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
$

Alternative können Sie eine Anfrage an das Proc -Dateisystem senden und die Befehlskatze /Proc /Swaps ausführen

Dieses Linux -System verfügt über eine Swap -Partition mit einer Größe von ca. 15 GB, in der derzeit über 300 m verwendet werden. Die Prioritätsspalte zeigt an, welchen Austausch zuerst der Platz für die Nutzung verwendet werden soll. Der Standardwert beträgt -1. Je höher der Prioritätswert ist, desto früher wird dieser Tauschraum berücksichtigt. Die Option -S ist die kurze Version von -Summary. Diese Option ist veraltet und wird empfohlen, die Option wie folgt wie folgt zu verwenden: stattdessen:

$ /sbin /swapon --show = Name, Typ, Größe, verwendet, Prio
Namenstypgröße 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 Ausgangsreihenfolge zu erreichen.

Größe tauschen

In der Regel wird empfohlen, die Größe des Swap -Raums doppelt so stark zu sein, wie das System einen physischen Speicher hat. Beachten Sie dies für allgemeine Setups und Desktop-Maschinen. Für Unix/Linux -Server mit einem viel mehr physischen Speicher können Sie die Größe des Swap -Raums auf 50% des RAM senken. Laptops, die Hibernate können, müssen etwas größer sein als das physische Gedächtnis.

Installation

Für eine Swap -Partition wird empfohlen, den Austausch von Anfang an den Austausch von Anfang an in einzelnen Partitionen zu überlegen oder genügend ungenutzten Scheibenraum zu lassen, um sie später und schließlich zu nutzen. Normalerweise fragt Sie während der Konfiguration der zu verwendenden Festplatten die Retup -Routine nach der Größe des Swap -Raums. Als Beispiel sieht dies bei Debian GNU/Linux wie folgt aus:

Wie oben erwähnt, können Sie, solange Sie Platz für neue Partitionen auf Ihrem Harddisk haben.

Alternativ kann der Swap -Speicherplatz später auch als Swap -Datei aktiviert werden. Linux unterstützt auf diese Weise, damit Sie es auf eine Weise erstellen, vorbereiten und montieren können, ähnlich der einer Tauschpartition. Der Vorteil dieser Art ist, dass Sie keine Festplatte abgeben müssen, um zusätzlichen Tauschraum hinzuzufügen.

Beispiel. Erstens erstellen wir mit Hilfe des DD -Befehls eine leere Datei. Zweitens verwendet MKSWAP diese Datei, um sie in den Swap -Stil umzuwandeln. Sie können feststellen, 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/null von =/swapfile bs = 1024 count = 524288
524288+0 Datensätze in
524288+0 Datensätze raus
536870912 Bytes (537 MB) kopiert, 0.887744 S, 605 MB/s
# MKSWAP /SWAPFILE
Einrichten von Swapspace Version 1, Größe = 524284 KIB
NO LABE
# Swapon /Swapfile
# SWAPON --Show = Name, Typ, Größe, verwendet, Prio
Namenstypgröße verwendet Prio
/dev/dm -3 partition 15,4g 288,9m -1
/SwappFile -Datei 512m 0b -2
#

Um diese SWAP -Datei zum Startzeit zu verwenden, add, als Administrator, die folgende Zeile zur Datei /etc/fstab:

/SwappFile Keine Swap SW 0 0

Deaktivieren eines Tauschraums

Am wenigsten, aber nicht zuletzt gibt es einen Befehl, um die Tauschdatei wieder zu deaktivieren. Der Befehl heißt Swapoff. Es erfordert einen einzelnen Parameter, der angibt, dass das Swap -Gerät deaktiviert wird. Dieser Befehl deaktiviert die zuvor aktivierte Swap -Datei:

# Swapoff /Swapfile

Auch, Swapoff kann mit der UUID eines Dateisystems arbeiten. Zu machen Swapoff Verwenden Sie die Option auf diese Weise -U gefolgt von der UUID des Dateisystems. Falls es erforderlich ist, alle Tauschräume gleichzeitig zu deaktivieren -A (Lange Option -all) ist sehr praktisch. Der vollständige Befehl ist swapoff -a.

Stimmen des Swap -Ökosystems

Beginnend mit Linux -Kernel -Veröffentlichungen 2.6 Ein neuer Wert wurde eingeführt. Dies wird in der Variablen gespeichert /proc/sys/vm/swappinessund kontrolliert das relative Gewicht, das für den Austausch des Laufzeitspeichers angegeben ist, anstatt Speicherseiten aus dem Systemseiten -Cache zu fallen [2]. Der Standardwert beträgt 60 (Prozent des Speicherfreies, bevor Sie den Swap aktivieren). Je niedriger der Wert ist, desto weniger tauschend wird und desto mehr Speicherseiten werden im physischen Speicher gehalten.

  • 0: Tausch ist deaktiviert
  • 1: Mindestbetragsmenge, ohne ihn vollständig zu deaktivieren
  • 10: Empfohlener Wert zur Verbesserung der Leistung, wenn in einem System ausreichend Speicher vorhanden ist
  • 100: aggressives Austausch

So legen Sie den Wert vorübergehend den Wert in das Dateisystem /proc wie folgt fest:

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

Alternative können Sie die verwenden sysctl Befehl wie folgt:

# sysctl -W VM.Swappiness = 10

So setzen Sie den Wert dauerhaft die folgende Zeile zur Datei hin /etc/sysctl.conf:

VM.Swappiness = 10

Ist Swap noch auf dem neuesten Stand?

Sie können sich fragen, warum wir uns mit diesem Thema befassen. Moderne Computer haben genug physisches Gedächtnis - warum müssen wir uns also 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 Computer bleiben, aber die Software, die Sie von Zeit zu Zeit darauf verwenden, aktualisieren. Derzeit passen sowohl die Hardware als auch die Software aneinander an. In Zukunft kann es sich ändern, und Sie brauchen mehr Speicher als jetzt. Wenn das Upgrade oder Kauf neuer Hardware keine Tauschpartition sparen kann, kann Ihnen ein bisschen Geld sparen.

Möglicherweise haben Sie von einer Funktion namens Suspend to Disk oder Hibernate -Modus gehört [3]. Ihre Maschine wird schlafen. Bevor dies dies tut, muss es seinen aktuellen Zustand irgendwo aufbewahren. Jetzt kommt der Swap -Raum ins Spiel und fungiert als Container, um diese Daten aufrechtzuerhalten. Sobald die Maschine beim nächsten Mal aufwacht, wenn die gesamten Daten aus dem Swap -Raum gelesen werden, in den Speicher geladen werden, können Sie weiterhin dort arbeiten, wo Sie zuvor angehalten haben.

Das System muss, wenn nur ein dauerhaftes Speichergerät verfügt, Ihre Dateien beim Austausch auf demselben Gerät lesen und schreiben. Sie werden eine enorme Verbesserung feststellen, wenn Sie ein zweites Gerät haben und das Swap -Gerät von widersprüchlichen Dateizugriffen trennen können.

Die Swap -Datei muss Daten über das Dateisystem übergeben. Dies fügt eine Indirektionschicht hinzu, damit der Kern einen zusammenhängenden logischen Adressraum gibt, mit dem der Kernel arbeiten kann. Dies fügt zusätzliche Speicheraufwand und CPU -Zyklen hinzu. Mit einer RAW -Tauschpartition erhalten Sie die besten Ergebnisse.

Abschluss

Noch heute ist das Wissen über den Tausch von wesentlicher Bedeutung. Dieses Thema ist Teil des Wissens, das für die Übergabe des Linux Professional Institute Certificate Level 1 (LPIC 1) erforderlich ist. Die meisten Prüfungen enthalten ein oder zwei Fragen zu diesem Thema.

Swap Space hilft Ihrem Linux -System (Kernel), den Speicher schnell zu organisieren, wenn es benötigt wird. Um mit Ihnen geöffnet zu sein, ist der Austauschraum nicht unbedingt erforderlich, falls Ihr System Tonnen von RAM hat. Bei Notfällen hilft es Ihrem System, zu überleben. Deshalb würde ich niemals den Weg eines traditionellen Setups ohne Austauschplatz verlassen.

Die Kombination von Swap und SSD wird auf kontroverse Weise diskutiert, da die Anzahl der Scheiben auf einer SSD ziemlich begrenzt ist. Sowohl Swap- als auch temporäre Dateien sind erstellt, um viele Daten zu schreiben. Andererseits haben moderne SSDs mehr als genug zusätzlichen Platz (7%), um mit Sektorfehlern fertig zu werden. Auf der sicheren Seite sein: Wenn möglich, haben Sie einen separaten Swap auf einer herkömmlichen Festplatte - verwenden Sie RAMDISK noch eine SSD, zumindest für den Swap. Ihr Linux -System wird Ihnen für diese Entscheidung danken.

Um zu vermeiden, dass der Tauschplatz auf Ihrem SSD eingesetzt wird, können Sie stattdessen ZRAM verwenden [5,6]. Dies ist virtueller Swap, der in RAM komprimiert ist, auch ZSWAP. Diese Technologie ermöglicht ein komprimiertes Blockgerät im Speicher. Sobald kein Speicher mehr linke Speicherseiten mehr auf dieses Blockgerät übertragen werden. Dies führt zu einer geringeren Nutzung von Swap und hilft auch, die Lebensdauer Ihres Harddisks zu verlängern.

Links und Referenzen

  • [1] Andrew. S. Tanenbaum: Der am wenigsten verwendete (LRU) -Seitenersatzalgorithmus in modernen Betriebssystemen
  • [2] Wikipedia: https: // en.Wikipedia.org/wiki/wackiness
  • [3] Power Management/Suspend und Hibernate, Arch Linux Wiki
  • [5] Zram über Debian GNU/Linux
  • [6] Das Linux -Kernel -Archiv über ZRAM

Linux Memory Management -Serie

  • Teil 1: Linux Kernel Memory Management: Swap Space
  • Teil 2: Befehle zum Verwalten von Linux -Speicher
  • Teil 3: Optimierung der Linux -Speicherverwendung

Anerkennung

Der Autor bedankt sich bei Mandy Neumeyer und Gerold Rupprecht für seine Unterstützung, während er diesen Artikel vorbereitet hat.