Warum müssen wir den Swap-Speicher doppelt so groß wie unseren physischen Speicher einstellen?

Warum müssen wir den Swap-Speicher doppelt so groß wie unseren physischen Speicher einstellen?

Wenn wir ein Linux-System einrichten wollen, wird häufig empfohlen, den Swap-Speicher doppelt so groß wie den physischen Speicher zu machen. Ich möchte wissen, warum wir das brauchen und wie dieser Vorschlag zustande gekommen ist.

Antwort1

Die kurze Antwort lautet: „Das müssen Sie nicht.habenZu".

Abhängig vom Kernel/Systemtyp kann es sinnvoll sein, den Swap-Speicher so zu dimensionieren, z. B. in FreeBSDstuning(7)Manpage finden wir folgende Begründung für eine Swap-Größe, die mindestens das Doppelte der physischen Speichergröße beträgt:

Sie sollten Ihren Swap-Speicher normalerweise auf etwa das Doppelte des Hauptspeichers für Systeme mit weniger als 2 GB RAM oder etwa das Einfache des Hauptspeichers, wenn Sie mehr RAM haben, bemessen. Wenn Sie jedoch nicht viel RAM haben, werden Sie im Allgemeinen viel mehr Swap wollen. Es wird nicht empfohlen, weniger als 256 MB Swap auf einem System zu konfigurieren, und Sie sollten bei der Dimensionierung der Swap-Partition zukünftige Speichererweiterungen berücksichtigen. Die VM-Paging-Algorithmen des Kernels sind so abgestimmt, dass sie die beste Leistung erbringen, wenn mindestens das Doppelte des Swap-Speichers im Vergleich zum Hauptspeicher vorhanden ist. Wenn Sie zu wenig Swap konfigurieren, kann dies zu Ineffizienzen im VM-Page-Scanning-Code führen und später Probleme verursachen, wenn Sie Ihrem Computer mehr Speicher hinzufügen. Schließlich empfehlen wir Ihnen dringend, auf größeren Systemen mit mehreren SCSI-Festplatten (oder mehreren IDE-Festplatten, die auf verschiedenen Controllern laufen) Swap auf jeder Festplatte zu konfigurieren. Die Swap-Partitionen auf den Festplatten sollten ungefähr gleich groß sein. Der Kernel kann beliebige Größen verarbeiten, aber interne Datenstrukturen skalieren auf das Vierfache der größten Swap-Partition. Wenn Sie die Swap-Partitionen in etwa gleich groß halten, kann der Kernel den Swap-Speicher optimal auf die N Festplatten verteilen. Machen Sie sich keine Sorgen, wenn Sie es ein wenig übertreiben, denn der Swap-Speicher ist die Rettung von UNIX und selbst wenn Sie normalerweise nicht viel Swap verwenden, kann er Ihnen mehr Zeit verschaffen, 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 Sie zuweisen, wo Sie ihn zuweisen usw. Wenn Sie beispielsweise einen großen Server mit 128 GB physischem Speicher installieren, ist es wahrscheinlich eine gute Idee, die Vorzuweisung von 256 GB Festplattenspeicher für Swap zu vermeiden, der nie verwendet wird.

Auf der anderen SeitemancheSwap-Speicher ermöglicht oft das Erstellen von Kernel-Dumps (z. B. in Open-, Net- und FreeBSD). Daher ist es eine gute Idee, mindestens über genügend Swap-Speicher zu verfügen, um im Notfall einen vollständigen Kernel-Dump erstellen zu können.

Es gibt keine absolute Regel, die passtalleFälle. 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-Speichers festlegen, der passtdeinBedürfnisse.

Antwort2

Das ist überhaupt nicht nötig. Ältere Windows-Versionen behandelten jede Seite des zugewiesenen Speichers im Wesentlichen als mmap in der Auslagerungsdatei, sodass Sie mindestens Ihre gesamte physische RAM-Größe in der Auslagerungsdatei benötigten, damit diese nützlich war – das ist heute nicht mehr der Fall und war unter Linux nie der Fall, aber das Gerücht hält sich hartnäckig.

Es gibt jedoch einen Fall, in dem es wünschenswert ist, mindestens so viel Swap wie RAM zu haben – den Ruhezustand. Da Linux die Swap-Datei für den Ruhezustand (auch bekannt als Suspend-to-Disk) verwendet, benötigen Sie genügend Swap, um alle Daten im RAM sowie alle bereits ausgelagerten Daten (abzüglich Cache-RAM) aufzunehmen. Dies gilt natürlich nur für Maschinen, die in den Ruhezustand wechseln müssen, wie z. B. Laptops.

Schließlich kann zu viel Swap einschlechtegal, was andere sagen. Überlegen Sie mal: Wenn Sie 4 GB RAM haben und zusätzlich 8 GB Swap-Speicher benötigen, glauben Sie, dass Ihr System dann noch brauchbar sein wird, trotz all dem Swap-Vorgang auf/von der Festplatte? Es ist oft besser, den speicherfressenden Prozess sofort zu beenden, wenn Ihnen der Speicher ausgeht, als das gesamte System so langsam zu machen, dass es nicht mehr brauchbar ist, wenn es seine ganze Zeit damit verbringt, Daten in den Swap-Speicher zu verschieben und wieder herauszuholen.

Antwort3

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

Moderne Unix-Systeme verhalten sich nicht so, daher ist der Grund für die Regel veraltet (ich glaube, sie war bereits 1992 veraltet und war daher für Linux nie relevant). Aber seltsamerweise hat die Regel überlebt. Wenn Sie sie jetzt befolgen, erhalten Sie virtuellen Speicher, der dreimal so groß ist wie Ihre RAM-Größe, obwohl ursprünglich die doppelte Größe angestrebt wurde.

Nur weil der historische Grund für diese Regel falsch ist, heißt das nicht, dass sie dumm ist. Festplattenspeicher 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, aber dann haben Sie keine Möglichkeit, auszuwählen, welche Programme beendet werden sollen, wenn Ihr RAM voll ist, und das System kann langsamer sein (manchmal ist es besser, RAM als Cache zu verwenden und einen Teil des Programmspeichers auszulagern). Die Zuweisung von zu viel Swap kostet eine winzige Menge RAM (für Kernel-Datenstrukturen) und natürlich Festplattenspeicher (aber heutzutage ist der normalerweise spottbillig, außer auf SSDs). Wenn Sie in den Ruhezustand wechseln möchten, ist genügend Swap für Ihren gesamten virtuellen Speicher erforderlich.

Antwort4

Eine alte Empfehlung, die auf Annahmen über die typische Systemspeicherkapazität, die Speicherbusgeschwindigkeit im Vergleich zur Festplattengeschwindigkeit und den prozentualen Zeitanteil basiert, den Prozesse in verschiedenen Wartezuständen verbringen. Ich bin skeptisch, ob Sie heutzutage mehr als vielleicht die Hälfte des physischen Speichers im Swap-Speicher haben möchten – gerade genug, um zufälliges OOM-Killing zu verhindern, wenn Sie nahezu die volle Speicherauslastung haben. Hängt aber ganz von Ihrer typischen Arbeitslast ab, YMMV usw.

verwandte Informationen