Warum sollte die Swap-Größe gleich oder größer als der RAM sein?

7

Viele sagen, wenn Sie 2 GB RAM haben, sollten Sie einen Swap von 2 GB oder mehr konfigurieren. FWIK Der Ruhezustand benötigt möglicherweise den gleichen Swap, um den Speicher beim Ausschalten beizubehalten. Wenn Sie jedoch über einen großen Arbeitsspeicher verfügen, benötigen Sie im Allgemeinen überhaupt keinen Swap, nicht wahr?

Wenn Sie Linux für Linux-Benutzer ohne Swap installieren, werden Sie vom Installationsprogramm gewarnt, dass Sie kein Swap-Mount hatten. Nein, ich brauche es einfach nicht, weil mein RAM gerade groß genug ist, oder?

Xiè Jìléi
quelle

Antworten:

10

Die Auslagerungsdatei ist nicht einfach ein Puffer , in den Sie laufen müssen, wenn Ihnen der physische Arbeitsspeicher ausgeht. Dies ist eine zu vereinfachte Ansicht der Funktionsweise der Auslagerungsdatei. Sie können jedoch ohne Auslagerungsdatei arbeiten, solange Sie zu 100% sicher sind, dass Sie zu keinem Zeitpunkt die Kapazität Ihres RAM überschreiten. Denn wenn Sie dies tun, stürzt Ihr System ab.

IMO, es ist besser, die Auslagerungsdatei zu behalten und auch zu überwachen, wie oft sie vom System verwendet wird. Wenn Sie nie verprügeln, ist dies kein Problem, und wenn Sie verprügeln, haben Sie ein Problem, das wahrscheinlich noch schwerwiegender wäre, wenn Sie überhaupt keine Auslagerungsdatei ausführen würden.

Es ist wahr, dass wir jetzt mehr RAM haben und es ist billig. Das gilt aber auch für den Speicherplatz. Sofern Sie keine zwingende Einschränkung des Speicherplatzes haben, würde ich empfehlen, bei einer Swap-Datei mit anständiger Größe zu bleiben.

Wenn Sie das Gefühl haben, dass Dinge zu oft auf die Festplatte übertragen werden, können Sie Ihre Swappiness so optimieren , dass sie weniger aggressiv ist.

Chris Thorpe
quelle
Richtig, Swapping kann optimiert werden, und für viele sollte es optimiert werden, da Linux manchmal etwas aggressiv beim Swap ist, wenn die VM-Swappiness zu hoch eingestellt ist. Manchmal wird sogar beschlossen, einen Prozess auszutauschen, wenn sehr viel Cache zurückgefordert werden muss. Persönlich mag ich das nicht so sehr, deshalb neige ich dazu, vm.swappiness auf 10 oder so zu setzen.
Janne Pikkarainen
Einfach gesagt, mein RAM ist 4 GB groß. Ich denke, sogar Linux 32-Bit konnte nicht alle nutzen (da Win32 maximal 3,5 GB nutzen kann). Ich frage mich nur, ob Swap hilft.
Xiè Jìléi
In den von Ihnen erwähnten häufig gestellten Fragen wird auch gezeigt, dass Sie den Swap erhöhen, wenn der RAM zunimmt. Dies gibt den Benutzern die Möglichkeit, dass der Swap immer größer als der RAM sein sollte. Mit zunehmendem RAM würde jedoch weniger Seitenfehler auftreten und der Bedarf an Swapping nimmt ab , Recht? Die richtige Richtlinie sollte also lauten: "Es gibt eine Mindestpräferenz für Swap, z. B. 512 MB. Wenn Ihr RAM klein ist, erhöhen Sie die Swap-Größe." Recht?
Xiè Jìléi
2
Auswahl einer NIT: Wenn einem System der Speicherplatz ausgeht (in diesem Fall Linux), stürzt es nicht unbedingt ab. Es kann jedoch instabil werden, wenn der OOM-Killer aktiviert wird und Prozesse beendet.
Ktower
8

Alle sogenannten "Regeln" zur Swap-Größe waren niemals als Regeln gedacht. Es waren Vereinfachungen, kleine Richtlinien, die Ihnen helfen könnten, eine anständige Zahl zu schätzen, wenn Sie die RAM-Nutzungsmuster der Box nicht kannten oder einfach nicht optimieren wollten.

Mit der Zeit wurden die Vereinfachungen zu Folklore und "Regeln", die eingehalten werden mussten, und die relativen Kosten- und Latenzunterschiede zwischen RAM und Festplatte änderten sich allmählich. Heute sind die meisten dieser Regeln bestenfalls bedeutungslos.

Beachten Sie jedoch, dass die Frage nicht "Ich kann alle meine Apps im RAM behalten, ich brauche keinen Austausch" lautet. Die Frage lautet: "Ich habe x RAM. Wie kann ich es am besten für die Ausführung von Apps, Schlaf-Apps und Festplatten-E / A-Pufferung nutzen?".

Die Frage des OP ist mit "Linux" gekennzeichnet, und ich weiß nicht so viel über die Verwaltung des virtuellen Linux-Speichers (ich weiß mehr über Windows und FreeBSD), daher werde ich hier keine vorgeschlagenen neuen Richtlinien anbieten. Ein guter Ort, um mit dem Lesen zu beginnen, wäre dieser Diskussionsthread zwischen den Linux 2.6-Kernel-Entwicklern über den VM-Optimierungsparameter "swappiness".

Wenn Sie Linux ohne Swap installieren, werden Sie vom Installationsprogramm gewarnt, dass Sie kein Swap-Mount hatten.

Das ist nur fest codiertes Verhalten im Installationsprogramm, da ein Tausch fast immer eine gute Idee ist. Viele Linux-Distributionen benötigen möglicherweise den Austausch für den Ruhezustand, aber Sie können dies ändern, wenn Sie möchten .

Nein, ich brauche es einfach nicht [Swap], weil mein RAM gerade groß genug ist, oder?

Falsch. Oder korrigieren Sie kleine Mengen von "Bedarf", Sie brauchen in diesem Fall streng genommen keinen Tausch, aber Ihr PC wird damit schneller sein. Ohne Swap befinden sich alle Ihre Programme im RAM, einschließlich derjenigen, die inaktiv sind und nicht in Kürze ausgeführt werden. Mit Swap können inaktive Programme ausgelagert und der physische RAM für produktivere Dinge verwendet werden - hauptsächlich für die Festplattenpufferung, um zu maskieren, wie langsam die Festplatten-E / A (einschließlich SSD) wirklich ist.

Wenn Sie den Kernel steuern möchten, der zwischen dem Aufheben der Zuweisung von Festplattenpuffern und dem Auslagern von Anwendungscode balanciert, möchten Sie den Optimierungsparameter "swappiness", auf den ich oben verwiesen habe .

Jesper M.
quelle
4

Die verschiedenen Swap-Größenregeln ("Du sollst so viel Swap haben wie du RAM hast", "Du sollst doppelt so viel Swap haben wie du RAM hast") waren sinnvoller, als wir nicht diese wahnsinnigen Mengen an RAM hatten, die wir heute haben.

Meiner Meinung nach ist es während des typischen Gebrauchs völlig unnötig, zu viel zu tauschen. Wenn Ihr typisches Nutzungsmuster der typischen Desktop-Nutzung entspricht - Surfen im Internet, Musik hören, Filme schauen usw. - sollten 2 GB RAM mehr als ausreichend sein. Wenn Sie jedoch gelegentlich etwas sehr speicherintensives tun, z. B. das Rendern sehr komplexer 3D-Szenen, ist es eine gute Idee, etwas auszutauschen. Der Linux-Kernel unterstützt glücklicherweise das dateibasierte Austauschen , sodass Sie bei Bedarf eine Menge Swap konfigurieren können, ohne dass eine Neupartitionierung erforderlich ist, falls aus irgendeinem Grund ein Swap erforderlich ist. Ich habe jedoch nicht versucht, den Ruhezustand mit einem dateibasierten Swap fortzusetzen.

Es ist jedoch schwer vorstellbar, dass ein Szenario, in dem 2 GB RAM und 2 GB Swap nahe an seinen Grenzen ausgeführt werden, eine gute Idee wäre. In diesem Fall wird die meiste Zeit darauf gewartet, dass das Betriebssystem Seiten ein- und auslagert auf die Festplatte und keine echte Arbeit wird erledigt.

Und auf der Serverseite möchten Sie nicht, dass Ihr Server niemals ausgetauscht wird. Es ist in Ordnung, wenn ein nicht so häufig verwendeter Prozess zum Austauschen übertragen wird. Wenn er jedoch ausgetauscht werden muss, damit die aktiven Prozesse überleben, sind Sie in großen Schwierigkeiten.

Janne Pikkarainen
quelle
3

Hier sind einige Faktoren, die zur Faustregel "Maximale Größe des vom Motherboard unterstützten physischen RAM + 1 MB" beitragen.

Full Core Dumps . Wenn nicht genügend Swap vorhanden ist, um einen vollständigen Core-Dump zu verarbeiten, können Sie möglicherweise bestimmte Systempaniken nicht diagnostizieren.

Einige Betriebssysteme verwenden Ihren Swap Space, um ihren Kern zu sichern, wenn das System in Panik gerät. Sie (oder die Entwickler des Betriebssystems) können diesen Core-Dump verwenden, um zu diagnostizieren, warum. Die meisten modernen Betriebssysteme führen einen "Mini-Dump" durch, der erheblich kleiner als die Gesamtmenge an RAM ist. Wenn das Problem jedoch schwierig ist, ist möglicherweise ein vollständiger Core-Dump erforderlich.

Core-Dump-Metadaten. Manchmal gibt es auch eine kleine Menge von Metadaten, die mit dem Core-Dump einhergehen. Das Hinzufügen einer zusätzlichen 1M zur Swap-Größe wird dies abdecken.

Vorbereiten von RAM-Upgrades im Voraus . Systeme ohne maximal installierten RAM können in Zukunft aktualisiert werden. Richten Sie den Swap ein, um darauf vorbereitet zu sein, anstatt zu versuchen, Monate (oder Jahre) später weitere Swaps hinzuzufügen.

Royce Williams
quelle
Das spätere Hinzufügen von Swap ist keine große Sache, wenn Sie LVM verwenden. Mir ist klar, dass nicht jeder LVM verwendet, aber es ist heute häufig genug, dass es erwähnenswert ist.
Rob Russell
Ein fairer Punkt. Da die Frage nicht Linux-spezifisch ist, habe ich die Antwort OS-unabhängig beibehalten - aber für Linux ist LVM in der Tat ein Faktor.
Royce Williams
2

Dies ist für Server weniger kritisch als für Desktops, da Sie niemals einen Server in den Ruhezustand versetzen möchten.

Die Zuweisung von 2 GB aus einem 500-GB-Laufwerk ist jedoch billiger (ein halbes Dutzend Cent pro Gigabyte) als der Kauf von mehr RAM. Der Unterschied zwischen "groß genug" und "zu viel" besteht darin, dass die Architektur dies nicht mehr unterstützt.

Beachten Sie, dass Sie seit dem 2.6-Kernel auch eine Auslagerungsdatei verwenden können , sodass Sie das Auslagern vollständig vermeiden können, bis Sie eine Verwendungsanalyse haben, um dies zu rechtfertigen.

Andrew
quelle
"Sie werden niemals einen Server in den Ruhezustand versetzen wollen". Hm, da bin ich mir nicht sicher. Es könnte nützlich sein für zB kurze Arbeiten an der Stromversorgung ...
Sleske
2
@sleske, wenn man bedenkt, wie selten ein solches Ereignis sein sollte, scheint es kaum sinnvoll, eine Maschine so zu konfigurieren, dass nur dafür der Ruhezustand möglich ist.
John Gardeniers
@John: Nun, wenn es wichtig ist, Ausfallzeiten auf ein Minimum zu beschränken, kann der Ruhezustand eines Servers Ihnen ein oder zwei Minuten Betriebszeit verschaffen, was sich möglicherweise lohnt. Ich habe es jedoch noch nie in der Produktion gesehen.
Sleske
0

Um es in den FAQ zu formulieren, benötigen Sie mehr Swap als Speicher, damit Suspend-to-Disk ordnungsgemäß funktioniert.

In den Versionshinweisen für Ubuntu / Lucid wird dies ebenfalls erwähnt, da das Installationsprogramm nicht hell genug ist, um es selbst herauszufinden.

Ansonsten brauchen Sie nicht wirklich viel, aber der Festplattenspeicher ist billig. Abgesehen von der 2-GB-Grenze für 32-Bit-Boxen ist dies kein großes Problem.

Steve-o
quelle