Zuweisen von Swap-Speicherplatz mit KVM

Zuweisen von Swap-Speicherplatz mit KVM

Betrachten Sie das folgende Szenario: Ein Host mit 2 GiB betreibt einige Gäste mit KVM. Jeder Gast benötigt normalerweise nicht viel Speicher; jedem werden 256 MiB zugewiesen und er betreibt Dienste, die hauptsächlich Däumchen drehen. Gelegentlich benötigen die Gäste jedoch mehr Speicher. Im Moment hat jeder Gast wenig RAM, aber seinen eigenen Swap-Speicher. Mir ist aufgefallen, dass ein kleiner Teil des Swap-Speichers verwendet wird. Ich hatte nie Probleme mit dieser Konfiguration, aber nur aus Neugier:

Was ist die optimale Swap-Allokationsstrategie?

  1. Weisen Sie jedem Gast seinen eigenen Swap-Speicherplatz von der jeweiligen Festplatte zu und weisen Sie den Gästen nur wenig Speicher vom Host zu. (Das mache ich jetzt.)
  2. Weisen Sie dem Host eine größere Menge an Swap-Speicherplatz zu und den Gästen gar keinen, und weisen Sie den Gästen mehr Speicher zu.

Würde Memory Ballooning helfen, die Gedächtnisleistung zu verbessern?

Antwort1

"Gelegentlich brauchen Gäste mehr Speicher" klingt nach einer guten Anwendung vonÜberbelegung des Speichers. Die Idee ist, dass Sie jedem Gast eine große Menge an Speicher zuweisen (mehr als Sie tatsächlich vergeben können), weil er diesen im Allgemeinen nicht verwendet. Dann führen Sie die Berechnungen durch, um sicherzustellen, dass Sie genügend Swap-Speicher haben, den die Gäste im schlimmsten Fall tatsächlich auf die Festplatte auslagern können, wenn sie tatsächlich alleTunNutze den gesamten Speicher.

Der Swap-Speicherplatz wird auf dieGastgeberMaschine, und sie muss gehorchen

Host-Swap-Speicherplatz = Summe des gesamten Gastspeichers + empfohlener Host-Swap-Speicherplatz

damit es sicher ist.

Wenn Sie also 10 Gäste und 2 GiB RAM haben, könnten Sie mit etwas wie

  • 512 MiB RAM pro Gast (512 * 10 = 5120 MiB insgesamt)
  • 2 GiB Swap auf dem Host

Das bedeutet, dass Ihr Host-Swap-Speicherplatz mindestens 512 * 10 + 2048 = 7168 MiB groß sein sollte, um dies sicher handhaben zu können, vorausgesetzt, Sie können dem Host 2 GiB Swap-Speicherplatz reservieren (für diesen geringen Host-Speicher wird dies empfohlen).

Testen Sie diese Art von Setups immer zuerst, um sicherzustellen, dass Ihr Computer damit zurechtkommt. Benchmarking ist noch besser und ermöglicht es Ihnen, mit verschiedenen Loadouts zu experimentieren und dasjenige auszuwählen, das am besten funktioniert.

Antwort2

@ndt hat ein gutes Verfahren. Mein Szenario ist anders, also wende ich eine andere Methode an.

Mein Server hat viele Gäste, alle führen eine einzelne Anwendung aus, normalerweise einen Web-/Mail-/Dateiserver. Die darin enthaltenen Daten sind sehr wichtig, daher werden sehr häufig Backups und Snapshots erstellt. Je kleiner und einfacher das Disk-Image ist, desto besser. Ich erstelle also eigentlich keine Swap-Partition, sondern eine Swap-Datei. Da ich keine Gäste mit hohem Verarbeitungs- oder sogar Speicherbedarf habe, haben sie einen kleinen Festplattenspeicher und wenig Speicher. Die Swap-Datei befindet sich im Rootfs.

Diese Konfiguration spart viel Platz und vereinfacht die Wartung. Wie gesagt, es unterscheidet sich von anderen Situationen.

Antwort3

Die akzeptierte Antwort ist falsch:

Sie sollten außerdem den Swap-Speicherplatz auf der VM aktivieren, damit diese erkennt, dass RAM ausgelagert wird, und vermeiden, ihn für den Festplattencache und die E/A-Puffer zu verwenden.

Wenn Sie den Swap nur auf dem Host aktivieren, glaubt die VM, dass sie über verfügbaren realen RAM verfügt und wird diesen verwenden, während dieser auf dem Host ausgelagert wird, was zu unnötigen Engpässen und Einfrieren führt. Das ist der größte Fehler, den Sie machen können.

Sie sollten außerdem ein anderes virtuelles Laufwerk als Auslagerungslaufwerk verwenden, da Sie davon keinen Snapshot/eine Sicherungskopie zusammen mit Ihren anderen Datenlaufwerken erstellen möchten.

Da der Swap-Speicherplatz volatil sein kann, können Sie für eine bessere Leistung auch cache=unsafe oder zram/zswap verwenden.

Denken Sie auch daran, dass Swapping sinnvoll ist, da dadurch inaktiver RAM freigegeben wird, der später für den Festplattencache und die E/A-Puffer wiederverwendet werden kann.

verwandte Informationen