table of contents
swapon(2) | System Calls Manual | swapon(2) |
BEZEICHNUNG¶
swapon, swapoff - Auslagerung von Hauptspeicherbereichen (Swapping) auf ein Gerät oder in eine Datei starten/beenden
BIBLIOTHEK¶
Standard-C-Bibliothek (libc, -lc)
ÜBERSICHT¶
#include <sys/swap.h>
int swapon(const char *pfad, int swap_schalter); int swapoff(const char *pfad);
BESCHREIBUNG¶
swapon weist den Auslagerungsbereich für Hauptspeicherbereiche der Datei oder dem blockorientierten Gerät zu, das in pfad angegeben wurde. swapoff beendet das Auslagern von Hauptspeicherbereichen in der Datei oder dem blockorientierten Gerät, das in pfad angegeben wurde.
Falls der Schalter SWAP_FLAG_PREFER im swapon()-Argument swap_schalter angegeben wurde, hat der neue Auslagerungsbereich für Hauptspeicherbereiche eine höhere Priorität als der vorgegebene. Die Priorität ist in swap_schalter kodiert als:
(prio << SWAP_FLAG_PRIO_SHIFT) & SWAP_FLAG_PRIO_MASK
Falls der Schalter SWAP_FLAG_DISCARD im swapon()-Argument swap_schalter angegeben wurde, werden freigegebene Auslagerungsseiten für Hauptspeicherbereiche verworfen, bevor sie erneut benutzt werden, falls das Gerät mit dem Auslagerungsbereich für Hauptspeicherbereiche die Aktionen zum Verwerfen oder Kürzen (»discard« und »trim«) unterstützt. (Dies könnte die Leistung auf einigen Festspeichergeräten (SSD) verbessern, was aber oft nicht der Fall ist.) Siehe auch die ANMERKUNGEN.
Diese Funktionen können nur von einem privilegierten Prozess (einem, der über die CAP_SYS_ADMIN-Capability verfügt) benutzt werden.
Priorität¶
Jeder Auslagerungsbereich für den Arbeitsspeicher hat eine Priorität, hoch oder niedrig. Die Standardpriorität ist niedrig. Innerhalb der Auslagerungsbereiche mit niedriger Priorität werden neue Bereiche niedriger als bereits vorhandene Bereiche priorisiert.
Alle mit _swap_schalter_ gesetzten Prioritäten sind hoch, höher als der Standardwert. Beim Aufruf kann die Priorität auf einen beliebigen nicht negativen Wert gesetzt werden. Höhere Werte bedeuten höhere Prioritäten.
Auslagerungsbereiche werden gemäß ihrer Priorität reserviert, solche mit der höchsten Priorität als erste. Ein höher priorisierter Bereich wird zunächst vollständig genutzt, bevor ein Bereich mit niedrigerer Priorität verwendet wird. Sind mehrere Bereiche mit derselben Priorität definiert und sind alle Bereiche mit höherer Priorität bereits vollständig genutzt, so werden neue Speicherseiten unter den gleich priorisierten Bereichen reihum reserviert.
Ab Linux 1.3.6 befolgt der Kernel diese Regeln gewöhnlich, aber es gibt auch Ausnahmen.
RÜCKGABEWERT¶
Bei Erfolg wird Null zurückgegeben. Bei einem Fehler wird -1 zurückgegeben und errno gesetzt, um den Fehler anzuzeigen.
FEHLER¶
- EBUSY
- (Für swapon()) Der angegebene pfad wird bereits als Auslagerungsbereich für Hauptspeicherbereiche benutzt.
- EINVAL
- Die Datei pfad existiert, bezieht sich aber weder auf eine normale Datei noch auf ein Blockgerät;
- EINVAL
- (swapon()) Der angegebene Pfad enthält keine gültige Auslagerungssignatur oder befindet sich in einem speicherinternen Dateisystem wie beispielsweise tmpfs(5).
- EINVAL (seit Linux 3.4)
- (swapon()) Ein unzulässiger Schalter wurde in swapflags angegeben.
- EINVAL
- (swapoff()) pfad ist derzeit kein Auslagerungsbereich.
- ENFILE
- Die systemweite Beschränkung für die Gesamtzahl offener Dateien wurde erreicht.
- ENOENT
- Die Datei pfad existiert nicht.
- ENOMEM
- Das System verfügt nicht über ausreichenden Speicher, um das Auslagern von Hauptspeicherbereichen zu starten.
- EPERM
- Der Aufrufende verfügt nicht über die Capability CAP_SYS_ADMIN. Alternativ wird die maximale Anzahl der Auslagerungsdateien für Hauptspeicherbereiche benutzt; Lesen Sie die folgenden ANMERKUNGEN.
STANDARDS¶
Linux.
GESCHICHTE¶
Das Argument swapflags wurde in Linux 1.3.2 eingeführt.
ANMERKUNGEN¶
Die Partition oder der Pfad müssen mit mkswap(8) vorbereitet werden.
Es gibt eine Obergrenze für die Anzahl der benutzbaren Auslagerungsdateien von Hauptspeicherbereichen, die in der Kernel-Konstante MAX_SWAPFILES definiert wird. Vor Linux 2.4.10 hatte MAX_SWAPFILES den Wert 8; seit Linux 2.4.10 hat sie den Wert 32. Seit Linux 2.6.18 ist die Grenze um zwei herabgesetzt (daher 30), seit Linux 5.19 wird die Grenze um 3 herabgesetzt (daher: 29), falls der Kernel mit der Option CONFIG_MIGRATION erstellt wurde (die zwei Einträge in der Auslagerungstabelle von Hauptspeicherbereichen für die Seiten-Migrationsfunktionen von mbind(2) und migrate_pages(2) reserviert). Seit Linux 2.6.32 wird die Grenze ferner um eins herabgesetzt, falls der Kernel mit der Option CONFIG_MEMORY_FAILURE erstellt wurde. Seit Linux 5.14 ist die Beschränkung weiter auf 4 reduziert, falls der Kernel mit der Option CONFIG_DEVICE_PRIVATE gebaut wurde. Seit Linux 5.19 ist die Grenze weiter um 1 herabgesetzt, falls der Kernel mit der Option CONFIG_PTE_MARKER erstellt wurde.
Verwerfen von Auslagerungsseiten von Hauptspeicherbereichen wurde in Linux 2.6.29 eingeführt, dann wurde es in Linux 2.6.36 vom Schalter SWAP_FLAG_DISCARD abhängig gemacht, wodurch immer noch die ganze Auslagerung von Hauptspeicherbereichen beim Aufruf von swapon() verworfen (»discard«) wird, sogar, wenn das Schalter-Bit nicht gesetzt ist.
SIEHE AUCH¶
ÜBERSETZUNG¶
Die deutsche Übersetzung dieser Handbuchseite wurde von Ralf Demmer <rdemmer@rdemmer.de>, Chris Leick <c.leick@vollbio.de>, Mario Blättermann <mario.blaettermann@gmail.com>, Helge Kreutzmann <debian@helgefjell.de> und Joachim Schnitter <joachim.schnitter@software-logistik.de> erstellt.
Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.
Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die Mailingliste der Übersetzer.
2. Mai 2024 | Linux man-pages (unveröffentlicht) |