Warum müssen wir den Swap Space doppelt so groß wie unser physisches Gedächtnis einstellen?


11

Wenn wir ein Linux-System einrichten möchten, wird häufig empfohlen, den Swap-Bereich doppelt so groß wie Ihren physischen Speicher festzulegen. Ich möchte wissen, warum wir das brauchen und wie dieser Vorschlag zustande kommt.

Antworten:


8

Die kurze Antwort lautet „Sie haben nicht haben zu“.

Abhängig vom Kernel- / Systemtyp kann es sinnvoll sein, den Swap-Speicher so zu dimensionieren, z. B. finden wir in der Optimierungsmanpage von FreeBSD (7) die folgenden Gründe für eine Swap-Größe, die mindestens das Zweifache der physischen Speichergröße beträgt:

Normalerweise sollten Sie Ihren Swap-Speicher für Systeme mit weniger als 2 GB RAM auf ungefähr das 2-fache des Hauptspeichers oder auf ungefähr das 1-fache des Hauptspeichers skalieren, wenn Sie mehr haben. Wenn Sie jedoch nicht viel RAM haben, möchten Sie im Allgemeinen viel mehr Swap. Es wird nicht empfohlen, weniger als 256 MB Swap auf einem System zu konfigurieren, und Sie sollten die zukünftige Speichererweiterung bei der Dimensionierung der Swap-Partition berücksichtigen. Die VM-Paging-Algorithmen des Kernels sind so optimiert, dass sie die beste Leistung erzielen, wenn mindestens zwei Mal ein Austausch im Vergleich zum Hauptspeicher erfolgt. Wenn Sie zu wenig Swap konfigurieren, kann dies zu Ineffizienzen beim Scannen von VM-Seiten führen und später zu Problemen führen, wenn Sie Ihrem Computer mehr Speicher hinzufügen. Auf größeren Systemen mit mehreren SCSI-Festplatten (oder mehreren IDE-Festplatten, die auf verschiedenen Controllern ausgeführt werden) Es wird dringend empfohlen, Swap auf jedem Laufwerk zu konfigurieren. Die Swap-Partitionen auf den Laufwerken sollten ungefähr gleich groß sein. Der Kernel kann beliebige Größen verarbeiten, interne Datenstrukturen werden jedoch auf das Vierfache der größten Swap-Partition skaliert. Wenn Sie die Swap-Partitionen in der Nähe der gleichen Größe halten, kann der Kernel den Swap-Bereich optimal über die N Festplatten verteilen. Machen Sie sich keine Sorgen, wenn Sie es ein wenig übertreiben. Der Swap-Speicherplatz ist die Rettung von UNIX. Selbst wenn Sie normalerweise nicht viel Swap verwenden, haben Sie möglicherweise mehr Zeit, sich von einem außer Kontrolle geratenen Programm zu erholen, bevor Sie zum Neustart gezwungen werden. Wenn Sie die Swap-Partitionen in der Nähe der gleichen Größe halten, kann der Kernel den Swap-Bereich optimal über die N Festplatten verteilen. Machen Sie sich keine Sorgen, wenn Sie es ein wenig übertreiben. Der Swap-Speicherplatz ist die Rettung von UNIX. Selbst wenn Sie normalerweise nicht viel Swap verwenden, haben Sie möglicherweise mehr Zeit, sich von einem außer Kontrolle geratenen Programm zu erholen, bevor Sie zum Neustart gezwungen werden. Wenn Sie die Swap-Partitionen in der Nähe der gleichen Größe halten, kann der Kernel den Swap-Bereich optimal über die N Festplatten verteilen. Machen Sie sich keine Sorgen, wenn Sie es ein wenig übertreiben. Der Swap-Speicherplatz ist die Rettung von UNIX. Selbst wenn Sie normalerweise nicht viel Swap verwenden, haben Sie möglicherweise mehr Zeit, sich von einem außer Kontrolle geratenen Programm zu erholen, bevor Sie zum Neustart gezwungen werden.

Andere Faktoren können wichtig sein, wenn Sie entscheiden, wie viel Swap-Speicherplatz zugewiesen werden soll, wo er zugewiesen werden soll usw. Wenn Sie beispielsweise einen großen Server mit 128 GB physischem Speicher installieren, ist es wahrscheinlich eine gute Idee, 256 GB Festplattenspeicher nicht für den Austausch zuzuweisen, der niemals verwendet wird.

Auf der anderen Seite ermöglicht es ein gewisser Swap-Speicher häufig, Kernel-Dumps abzurufen (z. B. in Open-, Net- und FreeBSD). Es ist also eine gute Idee, mindestens genügend Swap-Speicherplatz zu haben, um bei Panik einen vollständigen Kernel-Dump zu erhalten.

Es gibt keine absolute Regel, die für alle Fälle geeignet ist. Sie müssen sich über das Verhalten Ihres spezifischen Systems informieren, lernen, wie es funktioniert, über die beabsichtigte Verwendung des Systems nachdenken und die beste Größe des Swap-Space festlegen, die Ihren Anforderungen entspricht.


5

Das musst du überhaupt nicht. In alten Windows-Versionen wurde jede Seite des zugewiesenen Speichers im Wesentlichen als mmap in der Auslagerungsdatei behandelt. Sie benötigten also mindestens Ihre gesamte physische RAM-Größe in swap, um nützlich zu sein - dies ist heute nicht mehr der Fall und war es nie Fall unter Linux, aber das Gerücht bleibt bestehen.

Es gibt jedoch einen Fall, in dem mindestens so viel Swap wie RAM wünschenswert ist - Ruhezustand. Da Linux die Auslagerungsdatei für den Ruhezustand verwendet (auch bekannt als Suspend-to-Disk), benötigen Sie genügend Auslagerungsdaten, um alle Daten im RAM sowie alle bereits ausgelagerten Daten (minus Cache-RAM) zu speichern. Dies ist nur bei Computern der Fall, die in den Ruhezustand versetzt werden müssen, z. B. Laptops.

Schließlich kann es eine schlechte Sache sein, zu viel Tausch zu haben, ungeachtet dessen, was andere sagen. Denken Sie: Wenn Sie über 4 GB RAM verfügen und zusätzlich 8 GB Swap benötigen, ist Ihr System Ihrer Meinung nach weiterhin verwendbar. Was macht es bei all dem Austausch auf / von der Festplatte? Es ist oft besser, den Memory-Hogging-Prozess sofort zu beenden, wenn Ihnen der Speicher ausgeht, als das gesamte System auf ein unbrauchbares Maß zu verlangsamen, wenn es anfängt, seine gesamte Zeit damit zu verbringen, Daten in und aus dem Swap zu sammeln.


1

Vor langer Zeit gab es eine gängige Unix-Variante (ich glaube, es war ein BSD, aber ich kann die Referenz derzeit nicht finden), die jede virtuelle Speicherseite im Swap-Bereich zuweist. Wenn Sie also so viel Swap wie RAM hätten, wäre die Größe Ihres virtuellen Speichers immer noch dieselbe wie Ihr RAM. Die übliche Empfehlung war dann, doppelt so viel Swap wie RAM zu haben, wodurch der virtuelle Speicher doppelt so groß wie der RAM wurde.

Moderne Unices verhalten sich nicht so, daher ist der Grund für die Regel veraltet (ich denke, sie war bereits 1992 veraltet, daher war sie für Linux nie relevant). Aber seltsamerweise hat die Regel überlebt. Wenn Sie es jetzt befolgen, erhalten Sie virtuellen Speicher, der dreimal so groß ist wie Ihr RAM, während die ursprüngliche Absicht darin bestand, doppelt so viel zu erhalten.

Nur weil der historische Grund für die Regel falsch ist, heißt das nicht, dass sie dumm ist. Der Speicherplatz ist billiger geworden, daher kann es sinnvoll sein, mehr Swap zuzuweisen. Wie viel Swap Sie haben sollten, hängt stark davon ab, wie viel RAM Sie haben und wie Sie es verwenden. Sie können ein System ohne Swap ausführen, haben dann aber keine Möglichkeit zu wählen, welche Programme beendet werden sollen, wenn Ihr RAM voll ist, und das System ist möglicherweise langsamer (manchmal ist es besser, RAM für den Cache zu verwenden und Programmspeicher auszutauschen aus). Das Zuweisen von zu viel Swap kostet eine kleine Menge RAM (für Kernel-Datenstrukturen) und natürlich Speicherplatz (aber heutzutage ist das normalerweise spottbillig, außer auf SSDs). Wenn Sie in den Ruhezustand wechseln möchten, müssen Sie über genügend Swap für Ihren gesamten virtuellen Speicher verfügen.


Windows macht das auch: Wenn der Speichermanager über genügend Swap-Speicher verfügt, speichert er dort auch eine Kopie der Seiten, die sich im Speicher befinden (ausgehend von den zuletzt geänderten, denke ich). Wenn er sie also austauschen muss, kann er dies einfach tun indem Sie die Seiten aus dem Speicher werfen.
pqnet

0

Eine alte Empfehlung, die auf Annahmen über die typische Systemspeicherkapazität, die Speicherbusgeschwindigkeit im Vergleich zur Festplattengeschwindigkeit und den Prozentsatz der Zeit basiert, die Prozesse in verschiedenen Wartezuständen verbringen. Ich bin skeptisch, dass Sie heutzutage mehr als die Hälfte des physischen Speichers im Swap-Bereich benötigen - gerade genug, um zufälliges OOM-Killing zu verhindern, wenn Sie nahezu die volle Speicherauslastung erreichen. Dies hängt jedoch vollständig von Ihrer typischen Arbeitsbelastung, YMMV usw. ab.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.