Linux: Swap-Partition nicht erstellen?

9

Ich habe mich gefragt, seit ich gehört habe, dass Swap verwendet wird, wenn Sie nicht im RAM sind, und dass zu viel Swap schlecht ist, da ich viel RAM (8 GB) habe.

Was ist, wenn ich keine Swap-Partition erstelle?

Benötige ich es auch für den Winterschlaf oder ist es kein Muss?

Mihai Bratulescu
quelle
Sie müssen Swap erstellen, ich habe einmal versucht, keinen Swap zu erstellen, konnte die Installation nicht fortsetzen
Lynob
Was passiert, wenn Sie in Windows installieren? Ich habe das getan und es schien auch ein bisschen langsam für mein Rig im Vergleich zu Windows, aber ich habe die Partition nicht erstellt
Mihai Bratulescu
Ich habe nie versucht, ein Linux in Windows zu installieren. Ich habe immer eine separate Partition erstellt
Lynob

Antworten:

13

Moderne Betriebssysteme benötigen einen Swap Space, um RAM effizient nutzen zu können. Selbst wenn Ihr System über ausreichend RAM verfügt, führt die Verschwendung von RAM zu einem kleineren Puffercache, was eine erhöhte Festplatten-E / A bedeutet. Egal wie viel RAM Sie haben, Sie möchten immer noch, dass das System es effizient nutzt. Effiziente Nutzung bedeutet, Dinge aus dem RAM herauszuholen, auf die äußerst unwahrscheinlich ist, dass jemals zugegriffen wird.

Wenn Sie ein typisches System starten, wird eine große Anzahl von Diensten gestartet. Programme führen Initialisierungscode aus und ändern dabei private Speicherzuordnungen. Einige dieser Dienste werden nie wieder ausgeführt. Viele von ihnen werden nicht stundenlang laufen. Ohne Swap hat das Betriebssystem keine andere Wahl, als die geänderten privaten Speicherzuordnungen, die diesen Diensten zugeordnet sind, für immer im RAM zu belassen. Das ist RAM, das niemals als Festplatten-Cache verwendet werden kann.

Sie möchten also tauschen, ob Sie es brauchen oder nicht.

David Schwartz
quelle
8
"Also willst du tauschen, ob du es brauchst oder nicht." - Scheint, als hätten Sie den Fall gemacht, dass er einen Tausch braucht, ob er es will oder nicht.
Sägemehl
2
Angenommen, ich habe viel RAM und kann es mir leisten, 2 GB zu verschwenden. Warum sollte ich eine Auslagerungsdatei benötigen?
Tarik
1
In diesem Fall benötigen Sie keine Auslagerungsdatei. Aber wie ich schon sagte, du willst eins. Unabhängig davon, ob Sie es sich leisten können, RAM zu verschwenden, sollten Sie RAM nicht ineffizient nutzen wollen , wenn Sie dies nicht müssen.
David Schwartz
Ich verwende einen CLI-Server ohne Swap und er läuft perfekt. Ausführen eines teamspeak3-Servers, apache2, node.js Ich sehe nie, dass mehr als 500 MB RAM verwendet werden. Es stört mich also nicht, RAM "ineffizient" zu nutzen. HAFTUNGSAUSSCHLUSS: Die Webserver-Funktion dieses Servers dient ausschließlich der Entwicklung, daher ist die Last ohnehin immer gering. Und wenn ich während der Entwicklung einen Speicherverlust habe, würde ich es lieber vom OOM-Killer töten lassen, sobald mir der RAM ausgeht, als all diesen Unsinn auf die Festplatte zu schieben.
Native Coder
12

Ich habe ein paar Jahre lang ein Desktop-System ohne Tausch betrieben und es läuft großartig! Es gibt einige Verhaltensweisen, die unterschiedlich sind. Einige davon sind vorteilhaft und andere können Ihnen schaden. Es hängt alles davon ab, was Sie tun.

Ein wesentlicher Unterschied besteht darin, wie sich das System verhält, wenn der Speicher knapp wird:

Wenn keine Swap-Partition vorhanden ist, wird der OOM-Killer sofort ausgeführt. Wenn bei einem Programm Speicherplatz verloren geht, wird dieser wahrscheinlich getötet. Das passiert und Sie stellen das System fast sofort wieder her.

Wenn es ist eine Swap - Partition, schiebt der Kernel den Inhalt des Speichers Swap. Ein fehlerhafter Prozess kann die Speicherzuweisung fortsetzen. Dies geschieht so lange, bis der Swap abgelaufen ist. Dies kann zehn Minuten bis eine Stunde dauern, wenn Sie eine große Swap-Partition haben. Währenddessen wird Ihr System langsamer. Es wird unmöglich, ein Terminal zu öffnen und den Prozess abzubrechen. Normalerweise ziehe ich das Netzkabel aus, wenn dies passiert.

Da ich meine Daten sowieso verlieren werde, wenn das System OOMs hat, bevorzuge ich die erstere Option, um zumindest eine (hohe) Chance auf Wiederherstellung zu haben.

Jeff Taylor
quelle
Dies war auch meine Erfahrung. Linux kann mit Swap-Thrashing nicht gut genug umgehen, um das fehlerhafte Programm selbst zu beenden. Es ist zuverlässiger, wenn der OOM-Killer es selbst macht. Natürlich ist dies ein schreckliches Design - ein besseres wäre, den störenden Prozess einzufrieren, anstatt ihn zu beenden, und eine nette GUI bereitzustellen, mit der Sie ihn auftauen oder töten können, aber ... Linux.
Timmmm
3
Endlich eine Antwort, die Sinn macht und zu meiner eigenen Erfahrung passt. Ich kann die Gründe für "Sie müssen eine Swap-Partition haben" nicht verstehen. Außer wenn wir das System in den Ruhezustand versetzen möchten.
Tarik
5

Für den Winterschlaf ist ein Tausch erforderlich, andernfalls können Sie ohne ihn problemlos auskommen.

psusi
quelle
Daher sollte die Größe des Auslagerungsbereichs etwas über der Größe des in Ihrem System installierten Speichers liegen.
mdpc
@mdpc, nicht unbedingt; Es muss nur groß genug sein, um den verwendeten RAM aufzunehmen, der nicht verworfen werden kann (dh Daten, die von einer Datei auf der Festplatte gesichert werden).
Psusi
und wie würden Sie das bei der Erstellung einschätzen? Würden Sie nicht so richtig planen und sich auf den schlimmsten Fall vorbereiten, da die Partitionierung im Allgemeinen schwierig zu ändern ist, nachdem sie festgelegt wurde?
mdpc
2

Es ist ein weit verbreitetes Missverständnis zu glauben, dass ein Swap-Bereich die Leistung negativ beeinflusst. Was die Leistung stark beeinträchtigt, ist nicht genügend RAM. Der Swap-Bereich an sich hat keinen negativen Einfluss auf die Leistung, es sei denn, Sie legen keinen Wert auf Zuverlässigkeit. Dies kann sich positiv auf die Leistung auswirken, selbst wenn Sie der Meinung sind, dass Sie über genügend RAM verfügen (und kein RAM-Mangel gemeldet wird).

Grundsätzlich sind drei Fälle zu berücksichtigen:

  • 1: Es gibt genügend RAM für interne Kernel-Anforderungen, damit alle Ihre Anwendungen ihre funktionierenden Seiten im RAM haben und dennoch "freien" RAM für den Puffer-Cache haben, um die meisten heißen Daten des Dateisystems zu speichern.

  • 2: Wie oben, außer dass Sie nicht über genügend freien RAM verfügen, damit der Puffercache vollständig effizient ist.

  • 3: Es ist nicht genügend RAM vorhanden, um die von Ihren Anwendungen verwendeten Seiten zu speichern.

In Fall 1, der die Norm für eine Produktionsmaschine sein sollte, ändert ein Swap-Bereich oder nichts nichts (zumindest auf Linux-basierten Betriebssystemen und anderen Betriebssystemen, die zu viel Speicherplatz beanspruchen).

Im Fall 2 könnte einen Swap - Bereich mit verbessert die Gesamtleistung durch das System zu Seite ermöglicht als sehr selten genutzte Seiten und läßt dann dem Puffer - Cache , um besser ihre Rolle spielen.

In Fall 3 ermöglicht die Verwendung eines Auslagerungsbereichs, dass die Anwendung auf Kosten einer Leistungsverschlechterung aufgrund von Paginierung weiter ausgeführt wird. Wenn Sie jedoch einen Swap-Bereich (oder einen ausreichend großen) verpassen, stürzen Anwendungen zufällig ab. Abhängig von den Betriebssystemeinstellungen kann der OOM-Killer außerdem entscheiden, die speicherhungrigsten Anwendungen zu beenden, wenn ein starker RAM-Bedarf besteht, ohne ihnen die Möglichkeit zu geben, ihre (Ihre) kritischen Daten zu speichern.

Dieser letztere Fall ist einer, bei dem Sie eine Wahl treffen müssen. Es gibt sicherlich einige Anwendungsfälle, in denen das Beenden von Prozessen die bevorzugte Option ist, z. B. Systeme, bei denen die Reaktionszeit entscheidend ist und bei denen der Verlust einer Transaktion / eines Prozesses keine große Sache ist.

In den meisten Situationen glaube ich jedoch, dass es besser ist, dem Benutzer / Administrator die Möglichkeit zu geben, den RAM-Mangel zu bemerken und entsprechend zu handeln, ohne das Risiko einzugehen, Daten zu verlieren.

jlliagre
quelle
1

Wenn Sie keine Auslagerungspartition verwenden möchten, können Sie eine Auslagerungsdatei verwenden: ein Dateisystem-Image, das in einer regulären Datei gespeichert und als Auslagerungsbereich verwendet wird.

In den folgenden Artikeln wird die Vorgehensweise ausführlich erläutert:

Joseph R.
quelle
Was ist der Unterschied zwischen einer Auslagerungsdatei und einer Auslagerungspartition? und was würde passieren, wenn ich keine hätte?
Mihai Bratulescu
Geschwindigkeit des Zugriffs ....
mdpc
2
Wenn verwendet JA ist es ziemlich wichtig. Wenn Sie eine Partition verwenden, ist die Adressierung einfach. Wenn Sie eine Datei verwenden, müssen Sie den gesamten Dateisystem-Overhead ausführen, um eine Auslagerungsdatei zu verwenden, und Sie können NICHT garantieren, wo sich die Segmente auf der Festplatte befinden.
Mdpc
2
@mdpc Der Overhead des Dateisystems ist ab Kernel 2.6 vernachlässigbar. Metadaten, Cache und Dateisystemcode werden umgangen. Auf unformatierte Plattenblöcke wird einfach direkt zugegriffen.
Jlliagre
1
@mdpc Eine Auslagerungsdatei sollte nicht wesentlich fragmentiert sein, es sei denn, Sie erstellen sie kürzlich. Darüber hinaus ist der Swap-Zugriff selten sequentiell, sondern aufgrund der Funktionsweise von Demand Paging meist zufällig, sodass die Fragmentierung kein Problem darstellen sollte.
Jlliagre
0

Es ist ein bisschen gefährlich, aber Sie können ohne Swap Space laufen. Wenn Sie jedoch den verfügbaren Speicherplatz endgültig überschreiten, stürzt Ihr System fast sofort ohne Vorankündigung ab.

Was Swap Ihnen im Grunde gibt, ist ein erweitertes, aber weitaus langsameres für Ihr Gedächtnis. Wenn Sie überschreiten, werden Sie anfangen zu tauschen, es wird wirklich das Leben aus Ihrem System nehmen ... JEDOCH, indem Sie die fehlerhaften Prozesse abbrechen, können Sie Ihr System trotzdem retten.

Einige Programme bestehen darauf, Swap-Speicher zuzuweisen (aber nicht zu verwenden), andere sind Datenbankprogramme, wenn ich mich recht erinnere. Wenn Sie keinen Swap-Speicherplatz haben, können Sie die möglicherweise ausgeführten Programme einschränken.

Schließlich ist SWAP GÜNSTIG, da Sie den Bereich nicht sichern müssen. (Ich hoffe, dass Sie einer dieser hervorragenden Systemadministratoren sind, die ihre Systeme sichern).

Also erstelle es.

Meine Faustregel war früher 2 * Speichergröße ..... aber jetzt bin ich in vielen Fällen mit 1 * Speichergröße in Ordnung, benutze aber im Allgemeinen 1,5 * (Speichergröße). Sie müssen nicht so viel schaffen, aber ich würde ... vor allem, wenn Sie irgendeine Art von Produktionsarbeit machen.

Oh ja, und für den Winterschlaf ist ein Tausch erforderlich, um ein Gesamtbild des Gedächtnisses zu erhalten. Und daher sollte die Größe, wenn Sie den Ruhezustand in Betracht ziehen, MINDESTENS (1 * Speichergröße) + 100 MB betragen. Die 100 MB sind für den möglichen Overhead vorgesehen, der im Prozess benötigt wird.

mdpc
quelle
Also ... für einige Programme benötigen Sie einen Swap-Bereich, damit sie ausgeführt werden können? Ich mache mir keine Sorgen, dass mir der RAM mit 8 GB ausgeht (obwohl nicht unmöglich)
Mihai Bratulescu
Die 2x-Speichergrößenregel ist alt und veraltet. Aber ein Tausch ist keine schlechte Idee. Es wird nicht zu viel Speicherplatz verwendet, sodass Sie den verwendeten Speicherplatz nicht verpassen. Es wird normalerweise nicht verwendet, wenn Sie über genügend RAM verfügen, und es ermöglicht Ihnen, den Core auf Ihren Swap zu übertragen.
Hennes
@ Hennes - lesen Sie meine Notiz ... "war früher"
mdpc
0

Linux-Swap scheint eine ziemlich schwierige Anforderung zu haben, sobald Speicherdruck besteht. Das Symptom ist, dass, wenn fast der gesamte RAM von aktiven Prozessen verwendet wird, das System hart blockiert und die Festplatte wild läuft.

Warum?

Seiten ohne Sicherungsdatei (normalerweise aus der dynamischen Speicherzuweisung) können nicht aus dem RAM entfernt werden, wenn kein Swap vorhanden ist. Der Kernel greift auf Seiten mit einer Sicherungsdatei zurück, auch wenn sie tatsächlich bald wieder benötigt werden, d.h. e. Müll auch ohne Tausch!

Weitere Details zu diesem subtilen Problem finden Sie in diesem Blogbeitrag.

Fazit : Immer einen Tausch haben.

Und für die Größe als grobe Richtlinie verwenden Sie etwas zwischen 4 und 8 GB, auch für Systeme mit viel RAM, vorausgesetzt, Sie halten keinen Ruhezustand. Weitere Informationen finden Sie in der Dokumentation von Red Hat zum Swap Space .

nalply
quelle