Warum Ihre VM kein Swap hat
Swap lässt eine Maschine so tun, als hätte sie mehr Speicher, als sie hat. Auf Enterprise-Flash kostet dieses Vortäuschen Storage-Verschleiß und eine Latenzklippe, also dimensionieren wir stattdessen den RAM.
In diesem Artikel 5 Abschnitte
- RAM antwortet in etwa 100 Nanosekunden. Schnelles Flash antwortet in etwa 100 Mikrosekunden. Eine Workload, die in den Swap fällt, läuft auf Speicher, der grob tausendmal langsamer ist.
- Swapping verwandelt einen RAM-Mangel in Storage-Verschleiß und eine Latenzklippe. Die Workload scheitert langsamer und verwirrender, statt klar zu scheitern.
- Wir dimensionieren stattdessen den RAM. Der Sizing Desk fragt nach Ihrer echten Ausgabe von free -m, bevor er irgendetwas vorschlägt.
Die virtuellen Maschinen, die wir bauen, werden ohne Swap ausgeliefert. Wenn einer der Speicher ausgeht, ist der Ausfall sofort und sichtbar, und die Lösung ist ein Gespräch über RAM. Auf einem Datenblatt liest sich das wie eine Auslassung, also hier die Begründung in voller Länge. Nichts davon hängt von unserer Hardware ab. Sie können das Argument auf jede VM anwenden, die Sie irgendwo betreiben.
Swap existiert, damit eine Maschine über ihren physischen Speicher hinaus laufen kann
Swap ist das Überlaufventil des Kernels. Wenn der physische Speicher knapp wird, verschiebt er die Seiten, die er für die kältesten hält, auf die Platte und gibt den frei gewordenen RAM dem, der gerade fragt. Die Maschine darf mehr Speicher melden, als das Silizium hält, jede Allokation darf gelingen, und die Wahrheit kommt später, als Latenz, sobald ein Prozess eine Seite anfasst, die am Ende doch auf der Platte lag.
Dieser Tausch ergab Sinn, als er erfunden wurde. RAM war knapp und teuer, Maschinen wurden von vielen Jobs geteilt, und ein Batch-Job, der über Nacht kroch, war besser als einer, der starb. Jeder Teil dieses Kontexts hat sich seither umgekehrt: RAM ist pro Gigabyte so günstig wie nie, die Maschine gehört Ihnen allein, und die Workloads sind interaktive Dienste, bei denen ein zehnfacher Latenzausschlag von einem Ausfall nicht zu unterscheiden ist. Das Überlaufventil blieb trotzdem in den Voreinstellungen, denn Voreinstellungen überleben ihre Gründe.
Aus dem RAM zu fallen kostet Sie drei Größenordnungen
Der Fall gegen Swap ist Arithmetik, bevor er Philosophie ist. Speicher und Storage sitzen auf verschiedenen Stockwerken des Latenzgebäudes, und die Treppe dazwischen ist lang.
- CPU-CACHE
- etwa eine Nanosekunde
- RAM
- etwa 100 Nanosekunden
- SCHNELLES FLASH
- etwa 100 Mikrosekunden, tausendmal langsamer als RAM
- EIN PAGE FAULT IN DEN SWAP
- der volle Storage-Roundtrip, plus Warteschlange, auf dem heißesten Pfad, den Ihre Workload hat
Die genauen Werte variieren je nach Hardware. Die Abstände zwischen den Stockwerken nicht. Unter echtem Speicherdruck nimmt die Maschine diese Treppe ununterbrochen: Der Kernel wirft Seiten hinaus, die Workload holt sie sofort wieder herein, und die CPU verbringt ihre Zyklen mit Warten auf den Storage. Der Load Average steigt, während der nützliche Durchsatz zusammenbricht.
~0,1 bis 1 ms
100 ns
~10.000×
Swap verbrennt Enterprise-Flash, um einen Dimensionierungsfehler zu verbergen
Auf rotierenden Platten war Swap nur langsam. Auf Flash ist er außerdem zersetzend. Swap-Verkehr ist das schlimmste Muster, das Sie Flash zumuten können: ein ununterbrochener Strom kleiner zufälliger Schreibzugriffe, die aus keinem anderen Grund existieren, als dass der Maschine RAM fehlt. Jeder dieser Schreibzugriffe altert eine Zelle, um eine Illusion aufrechtzuerhalten.
Und die Workload bekommt für den Verschleiß nichts zurück. Sie humpelt im Storage-Tempo, bis der Druck endet oder jemand eingreift. Das Array unter Ihrer VM ist hier HPE 3PAR All-Flash, und seine Aufgabe ist, Ihre Daten schnell zu liefern. Seine Schreibausdauer als vorgetäuschten Speicher auszugeben ist zu jedem Preis ein schlechter Tausch, weshalb wir das Gespräch über die Dimensionierung lieber vorab führen, als es mit Paging zu überdecken.
Ohne Swap erzeugt Speichererschöpfung eine Log-Zeile statt eines Rätsels
Das stärkste Argument ist diagnostisch, und wer je einer langsamen Woche durch einen Monitoring-Stack nachgejagt ist, kennt es schon. Mit Swap sieht ausgehender Speicher nach allem aus, nur nicht nach ausgehendem Speicher. Die Latenz steigt in jedem Dienst gleichzeitig, in keinem Log erscheint ein Fehler, und die Dashboards zeigen überallhin, wo das Warten spürbar ist, meist auf die Datenbank und den Storage. Teams verlieren Tage an diese Jagd, und Swap stellt sie auf einer einzigen Maschine her, routinemäßig, per Design.
- Die Latenz steigt in jedem Dienst gleichzeitig, ohne Fehler in irgendeinem Log
- Die Dashboards beschuldigen die Datenbank, dann den Storage, dann das Netzwerk
- Das Array schluckt einen Strom kleiner zufälliger Schreibzugriffe, deren einzige Aufgabe ist, den Mangel zu verbergen
- Die Diagnose kommt Tage später, nachdem jemand die Graphen korreliert hat
- Der Kernel beendet den größten Verursacher und nennt ihn im Log
- Der Ausfall hat einen Zeitstempel, einen Prozessnamen und eine Speichersumme
- Das Array gibt seine Schreibzugriffe für echte Daten aus
- Die Lösung ist ein Gespräch über die Größenänderung am selben Tag
Ein Speichergraph auf einer Maschine ohne Swap sagt bis zum Rand die Wahrheit.
Wir dimensionieren den RAM ehrlich und fragen nach Ihrem echten free -m
Die ehrliche Lösung für einen Speichermangel ist dieselbe, seit Paging erfunden wurde: mehr RAM oder ein kleineres Working Set. Also stecken wir dort den Aufwand hinein. Der Sizing Desk fragt nach der tatsächlichen Ausgabe von free -m Ihrer aktuellen Maschine, bevor er irgendetwas vorschlägt, denn die Spalte available dieses Befehls beendet Diskussionen, die Adjektive nie beenden werden, und dieselbe Messung, die den Bedarf an Swap beseitigt, verkleinert meist auch das Angebot.
Die vollständige Methode, mit durchgerechneten Beispielen für jede Zahl, die wir abfragen, steht in Wie man einen Server dimensioniert. Auf Hardware in unserem Eigentum sitzt die Reserve bereits in der Maschine, die Sie bezahlt haben, sodass ihre Bereitstellung an Ihrer Spitze nichts extra kostet, was die letzte wirtschaftliche Ausrede dafür beseitigt, Storage als Überlauf-RAM zu behandeln.
Klare Antworten
Braucht der Kernel nicht etwas Swap, um gut zu laufen?+
Der Kernel kann Swap nutzen, um wirklich kalte Seiten auszulagern und den zurückgewonnenen RAM dem Platten-Cache zu geben, und auf einer chronisch knappen Maschine hilft das am Rand. Der Rand ist das Problem. Er bringt ein paar Prozent effektiven Speicher, verbirgt aber, ob die Maschine überhaupt groß genug ist, und verwischt jeden Speichergraphen, auf den Sie sich später verlassen werden. Auf einer richtig dimensionierten Maschine rundet sich der Gewinn durch kalte Seiten auf nichts, und die diagnostische Klarheit einer harten Speichergrenze ist um 3 Uhr morgens weit mehr wert.
Wie finde ich heraus, wie viel RAM ich tatsächlich nutze?+
Führen Sie free -m über eine echte Spitze hinweg aus und lesen Sie die Spalte available. Die vollständige Methode, mit durchgerechneten Beispielen für jede Zahl, steht in unserem Beitrag zur Dimensionierung, Wie man einen Server dimensioniert. Wenn diese Spalte sagt, dass es wirklich knapp ist, lautet die Antwort mehr RAM, und wir sagen es so.
Kein Swap ist eine kleine Entscheidung, die aus größeren folgt: Maschinen nach echten Zahlen statt nach Rechnungen dimensionieren, und ernsthafte Hardware darunterlegen, damit die Zahlen in einer schlechten Nacht halten. Das Gespräch über RAM ist günstiger als das Rätsel, das es verhindert.
Dimensionieren Sie den RAM ehrlich
Der Sizing Desk geht von den tatsächlichen Zahlen Ihrer Maschine aus und schlägt einen Build aus unseren echten Bausteinen vor. Wenn Ihre Zahlen weniger sagen, dimensioniert er Sie kleiner.
Sizing Desk öffnenSie haben das Ende erreicht.
Setzen Sie das Gelesene um
Was betreiben Sie?
Erzählen Sie uns von Workload, Traffic und Anforderungen an die Wiederherstellung. Beginnen Sie mit dem Server-Konfigurator oder besprechen Sie die Details mit einem Ingenieur.
Geschrieben von den Ingenieuren, die die beschriebene Infrastruktur bauen und betreiben.Mit einem Ingenieur sprechen
