Der Arbeitsspeicher des Computers ist begrenzt. In den meisten Fällen können Sie aus finanziellen Gründen, wenn auch rein technisch, nicht mehr OP in einem bestimmten Motherboard installieren, als in seinen Spezifikationen vorgesehen ist. Und wenn ja, dann sind Speichermangelsituationen keine Seltenheit, insbesondere bei Multitasking-Betriebssystemen. Dazu gehört Linux, und obwohl es als weniger anspruchsvoll für PC-Ressourcen gilt, kann es auch nicht als ideal bezeichnet werden. Der RAM-Mangel wird auf unterschiedliche Weise gelöst. Eine der optimalsten davon ist die Verwendung einer Datei oder Partition auf der Festplatte, auf der Daten vorübergehend gespeichert werden, die bei Bedarf in den physischen Speicher abgerufen werden..
Was ist Tausch
Unter einem Swap wird in Linux-ähnlichen Betriebssystemen ein Mechanismus zur Organisation des virtuellen Speichers verstanden, bei dem ein Teil der im Arbeitsspeicher (in der Regel selten genutzten) gespeicherten Daten zur Zwischenspeicherung in einen speziellen Abschnitt oder eine Datei auf einer Festplatte verschoben wird oder Solid-State-Disk.
Der gesamte physische Speicher in Linux ist paginiert. Der Inhalt einzelner Seiten wird bei Bedarf auf eine dedizierte Plattenpartition namens Swap Space oder in eine separate Datei (analog der Auslagerungsdatei in Windows) verschoben. Das Verfahren zum Freigeben des Arbeitsspeichers selbst wird als Auslagerung bezeichnet, und die Gesamtgröße des physischen Speichers und des Auslagerungsspeichers wird als Menge des verfügbaren virtuellen Speichers bezeichnet..
Wozu dient der Tausch?
Multitasking bedeutet nicht, viele Programme gleichzeitig zu öffnen. Selbst wenn wir den Browser starten, verwendet er selbst viele Bibliotheken, von denen jede ihren eigenen Speicherbereich verwendet. Jeder neue Tab, jedes geöffnete Dokument enthält immer mehr Seiten Speicher, die zu einem bestimmten Zeitpunkt möglicherweise nicht ausreichen.
Und wenn für die neue Registerkarte keine freien Seiten vorhanden sind, ist das Betriebssystem gezwungen, sich mit dem Freigeben von Speicher zu befassen. Und was freigeben, wenn alle Seiten mit den notwendigen Daten oder Cache belegt sind? Was seltener verwendet wird. Aber früher oder später wird der entladene Code benötigt, aber er befindet sich nicht mehr im Speicher. Diese Situation wird als Seitenfehler bezeichnet, und das Betriebssystem muss sie erneut behandeln. Wenn die fehlenden Daten auf der Festplatte nicht gefunden werden, wird der Vorgang abnormal beendet. Wenn dies der Fall ist, lädt das System den Code von der Festplatte, erfordert jedoch die Freigabe einer bestimmten Anzahl anderer Speicherseiten. Als Ergebnis beginnt ein Prozess namens Thrashing, wenn das Betriebssystem nur das tut, was neue Seiten freigibt, ihren Inhalt löscht und die fehlenden Daten in sie lädt..
Eine Auslagerungsdatei löst dieses Dilemma. Anstatt nur Speicherseiten zu leeren, räumt das System ihren Inhalt auf die Festplatte, was sozusagen die Größe des physischen Arbeitsspeichers erweitert. In diesem Fall wird das Thrashing durch einen einzigen Lese-/Schreibvorgang ersetzt.
Natürlich haben wir den Prozess ziemlich schematisch beschrieben, tatsächlich hat er viele Nuancen und einen ziemlich komplexen Implementierungsalgorithmus. In jedem Fall sieht das Bild wie folgt aus: Wenn man die Auslagerungsdatei groß genug macht, werden selten genutzte und unveränderte Daten, bei einem Defizit im Arbeitsspeicher, "verlässt" sie auf die Festplatte, von der sie beliebig oft extrahiert werden kann .
Wenn die Auslagerungsdatei / Partition klein ist, nützt es wenig, denn früher oder später ist der freie Speicherplatz darauf erschöpft und dann beginnt wieder das "Tanzen" mit ständigen Lese-Schreib-Operationen auf die Auslagerungsdatei, was wird das System verlangsamen.
Um die Frage nach der Notwendigkeit von Swap unter Linux zu beantworten, können wir Folgendes sagen:
- es hilft, das System zu entladen, wenn ein Programm eine Menge an physischem Speicher anfordert, die das System nicht hat. In solchen Fällen analysiert der Linux-Kernel, auf welche Seiten am wenigsten zugegriffen wird, schreibt deren Inhalt auf die Festplatte und weist dem aktuellen Prozess die erforderliche Anzahl von Seiten zu;
- Die Besonderheit vieler Programme besteht darin, dass zum Zeitpunkt ihres Starts einige der Seiten mit Daten belegt sind, die nur zum Zeitpunkt der Initialisierung des Prozesses / der Anwendung verwendet werden. Das System kann und sollte diese Seiten in den Swap verschieben und das OP entladen.
Aber es ist nicht so einfach. Swap ist auch nicht ohne Nachteile, deren Hauptsache die Geschwindigkeit von Schreib- / Lesevorgängen von der Festplatte ist. Es genügt zu sagen, dass diese Geschwindigkeit beim Betrieb mit physischem Speicher in Nanosekunden gemessen wird (siehe nur die Eigenschaften von RAM-Chips), während sie bei einer Festplatte Millisekunden, also mehrere Größenordnungen mehr, beträgt. SSD-Laufwerke haben deutlich höhere Datenaustauschraten, sind aber aufgrund der langsamen Schnittstelle immer noch nicht mit RAM zu vergleichen. Es stellt sich also heraus, dass das System bei häufigem Leeren von Speicherseiten im Swap auch langsamer arbeiten kann.
Dies passiert besonders häufig, wenn der Computer als Server verwendet wird, und bei Linux ist es die Mehrheit der PCs. Wenn es an Speicher mangelt, sind Datenbanken normalerweise die ersten, die darunter leiden, und wenn es MySQL ist, dann droht ihr Untergang durch die Unzugänglichkeit der Site oder ihrer Seiten, daher ist es so wichtig, dass Server einen großen Swap haben Abschnitt - lassen Sie die Site besser funktionieren, als sie vollständig unzugänglich ist ...
So erstellen und konfigurieren Sie eine Auslagerungsdatei am Beispiel von Ubuntu
Das Verfahren zum Erstellen einer Auslagerungsdatei ist ziemlich komplex und erfordert bestimmte Kenntnisse im Umgang mit der Befehlszeile.
Und die erste Stufe - wir müssen herausfinden, ob dem System eine Partition oder Datei für den Swap zugewiesen ist.
Unter Ubuntu auf Swap prüfen
Wir verwenden den Befehl:
swapon -s
oder
free –m
Wenn Swap nicht vorhanden ist, erhalten Sie im ersten Fall einen leeren resultierenden String, im zweiten eine Tabelle der virtuellen Speichernutzung, in der der Swap-String Nullen enthält.
Wenn keine Auslagerungsdatei vorhanden ist, müssen Sie entscheiden, ob es möglich ist, eine zu erstellen.
Überprüfen des freien Speicherplatzes
Wir führen den Befehl aus
df -h
Eine Tabelle ähnlich der folgenden wird angezeigt:
Die Festplatte hat etwa 23 GB freien Speicherplatz, was mehr als genug ist, um eine Auslagerungsdatei zu erstellen.
Welche Größe soll Swap erstellen?
Die Größe der Auslagerungsdatei hängt von vielen Faktoren ab:
- wie viel RAM ist im System;
- wie sind die verwendeten Programme / Anwendungen zusammengesetzt;
- ob Sie beabsichtigen, in den Schlafmodus zu wechseln;
- ob Dateien mit vertraulichen Daten verwendet werden.
Der Hauptaspekt ist natürlich die Größe des physischen Speichers. Bei einer Größe von weniger als 2 GB ist die Sawp-Datei 1,5-2 mal größer, d. h. bis zu 4 GB.
Wenn Sie 3-4 GB RAM haben, entscheiden Sie zuerst, ob Sie den Schlafmodus verwenden möchten. Wenn ja, ist es ratsam, die Größe der Auslagerungsdatei in Höhe von 110-115% des Arbeitsspeichers zu wählen, wenn nicht, wäre die ideale Option eine Auslagerungsdatei derselben Größe.
Wenn Sie einen leistungsstarken Computer haben und der Arbeitsspeicher 6 GB überschreitet, wählen Sie die Größe der Auslagerungsdatei unter Linux basierend auf der Hälfte des Arbeitsspeichers. Wenn Sie den Ruhezustand verwenden möchten, müssen Sie möglicherweise experimentieren, um herauszufinden, wie viel RAM für den Ruhezustand verwendet wird, und einen Wert basierend auf Ihren Ergebnissen auswählen. Glücklicherweise können Sie jederzeit eine Auslagerungsdatei erstellen, nicht unbedingt während der Linux-Installation.
Empfohlene Auslagerungsdateigrößen unter Linux in der Fedora-Dokumentation
Erstellen einer Auslagerungsdatei unter Linux
Es gibt mehrere Optionen zum Erstellen einer Auslagerungsdatei unter Linux, von denen eine als traditionell und die andere als schnell gilt.
Schauen wir uns zunächst einen schnellen Weg an, nämlich einen Befehl zu verwenden:
fallocate -l 2G /swapfile
Hier gibt der zweite Parameter die Größe der zu erstellenden Datei in GB an (wenn Sie keinen Buchstaben angeben, interpretiert das System den Parameter in KB, dies muss berücksichtigt werden).
In diesem Fall wird die Datei erstellt und ist sofort nach der Ausführung des Befehls verfügbar, daher empfiehlt es sich, diese Methode zu verwenden.
Die zweite Option, traditionell:
dd if=/dev/zero of=/swapfile bs=1М count=2096
Hier gibt der Parameter bs an, in welchen Einheiten wir die Größe eines Blocks für die Auslagerungsdatei festlegen. In diesem Fall 1 Megabyte. Der Parameter count gibt die Anzahl solcher Blöcke an, die der Auslagerungsdatei zugewiesen sind, und die Summe beträgt die gleichen 2 GB wie bei der ersten Option.
Der dd-Befehl selbst bedeutet unter Linux Byte-Kopieren, der if-Parameter gibt an, woher kopiert werden soll, in unserem Fall ist es / dev / zero - eine spezielle Datei mit null Bytes. Der Parameter of gibt an, dass wir diese Null-Bytes in die Datei / Auslagerungsdatei schreiben.
Beachten Sie, dass bei der Verwendung dieses Befehls keine Fehler zulässig sind. Wenn Sie den Parameter of falsch eingeben, besteht die Möglichkeit, dass wichtige Daten beschädigt werden.
Wenn Sie eine unzureichende Größe der Auslagerungsdatei angegeben haben (dies kann viel später klar werden), können Sie die Größe des Ubuntu-Swaps erhöhen oder einfach ändern, indem Sie den aktuellen deaktivieren (wir werden Ihnen später sagen, wie das geht) und ihn neu erstellen nach dem hier angegebenen Algorithmus, der die richtige Größe angibt.
So verbinden Sie eine Auslagerungsdatei
Die Auslagerungsdatei ist aus Sicht des Betriebssystems wichtig, und ihre Bearbeitung kann zu ihrem Absturz führen. Daher ist es wichtig, den Swap-Zugriff auf den folgenden Befehl einzuschränken:
chmod 600 /swapfile
Als Ergebnis hat nur der Root-Benutzer das Recht, darauf zu lesen und zu schreiben (analog zu admin in Windows).
Eine weitere Anpassung der Auslagerungsdatei besteht darin, /auslagerungsdatei mit dem Befehl in eine Auslagerungsdatei zu konvertieren
mkswap /swapfile
Und der letzte Befehl, dessen Aktion darin besteht, Swap mit dem System zu verbinden (aktivieren):
swapon /swapfile
Es ist jetzt voll funktionsfähig.
Swap zum Startup hinzufügen
Um die Auslagerungsdatei nicht nach jedem Neustart mit dem letzten Befehl des vorherigen Abschnitts mit dem System zu verbinden, geben Sie mit einem beliebigen Texteditor, der bei jedem Linux-Boot verwendet wird, eine Zeile in die Datei /etc/fstab ein:
/swapfile none swap defaults 0 0
Nach dem Neustart des Computers können Sie die Korrektheit der Operation mit dem Befehl free –m überprüfen.
So löschen Sie den Swap in Ubuntu
Manchmal kann es notwendig sein, vorübergehend Speicherplatz freizugeben, und oft ist die Auslagerungsdatei der einzige brauchbare Kandidat für diesen Zweck.
Das Clearing des Swaps (bzw. das Herunterfahren) erfolgt mit dem Befehl
swapoff –a
Die Aktivierung erfolgt durch den Befehl
swapon -a
RAT. Es wird nicht empfohlen, den Swap auf diese Weise zu deaktivieren, da die Daten einfach auf Null zurückgesetzt werden, ohne sie in den RAM zu übertragen. Wenn die Anzahl der gelöschten Daten diejenigen enthält, die von Systemprozessen verwendet werden, kann das System abstürzen.
Wenn Sie die Auslagerungsdatei nicht mehr verwenden möchten, können Sie die Auslagerung wie folgt entfernen:
cat /proc/swaps (определяем местоположение swap-файла)
swapoff / dir / swapXXXXX (deaktiviere die Auslagerungsdatei, hier ist dir das Ergebnis des vorherigen Befehls, dh das Verzeichnis mit der Datei, und swapXXXXX ist der Name der Auslagerungsdatei selbst)
rm /dir/swapXXXXX (удаляем файл с диска)
Wenn Sie Swap zum Startup hinzugefügt haben, müssen Sie es von dort entfernen, indem Sie die entsprechende Zeile in der Datei /etc/fstab entfernen (zum Beispiel mit dem gedit-Editor).
Denken Sie jedoch daran, dass das System ohne eine Auslagerungsdatei instabil sein kann, insbesondere bei einer geringen Menge an RAM. Daher wird dringend davon abgeraten, die Auslagerungsdatei zu löschen, ohne eine neue zu erstellen.