Linux-Server mit oder ohne Swap-Partition bereitstellen?

Wir schreiben das Jahr 2025. Die Frage, ob man Linux-Server mit oder ohne Swap-Partition betreiben sollte, spaltet die Linux-Gemeinschaft in einer Weise, wie wir es seit dem Editor War nicht mehr gesehen haben…

So könnte ein spannender Film für Sysadmins anfangen, oder? Ich möchte aber keinen Streit vom Zaun brechen, sondern bin an euren Erfahrungen und Gedanken interessiert. Daher freue ich mich, wenn ihr euch die Zeit nehmt, folgende Fragen in den Kommentaren zu diesem Beitrag oder in einem eigenen Blogpost zu beantworten.

  • Stellt ihr Linux-Server mit Swap-Partition bereit und wie begründet ihr eure Entscheidung?
  • Hat euch die Swap-Partition bei sehr hoher Speicherlast schon mal die Haut bzw. Daten gerettet?
  • War der Server während des Swapping noch administrierbar? Falls ja, welche Hardware wurde für die Swap-Partition genutzt?

Eine kleine Mastodon-Umfrage lieferte bisher folgendes Bild:

Schaue ich mir meine eigenen Server an, so ergibt sich ein gemischtes Bild:

  • Debian mit LAMP-Stack und Containern: 16 GB RAM & kein Swap
  • RHEL-KVM-Hypervisor 1: 32 GB RAM & 4 GB Swap
  • RHEL-KVM-Hypervisor 2: 128 GB RAM & kein Swap
  • RHEL-Container-Host (VM): 4 GB RAM & 4 GB Swap

Bis auf den Container-Host handelt es sich um Bare-Metal-Server.

Ich kann mich nicht daran erinnern, dass jemals einem dieser Systeme der Hauptspeicher ausgegangen ist oder der Swapspeicher genutzt worden wäre. Ich erinnere mich, zweimal Swapping auf Kunden-Servern beobachtet zu haben. Die Auswirkungen waren wie folgt.

Im ersten Fall kamen noch SCSI-Festplatten im RAID zum Einsatz. Die Leistung des Gesamtsystems verschlechterte sich durch das Swapping so stark, dass bereitgestellten Dienste praktisch nicht mehr verfügbar waren. Nutzer erhielten Zeitüberschreitungen ihrer Anfragen, Sitzungen brachen ab und das System war nicht mehr administrierbar. Am Ende wurde der Reset-Schalter gedrückt. Das Problem wurde schlussendlich durch eine Vergrößerung des Hauptspeichers gelöst.

Im zweiten Fall, an den ich mich erinnere, führte ein für die Nacht geplanter Task zu einem erhöhten Speicherverbrauch. Hier hat Swapping zunächst geholfen. Tasks liefen zwar länger, wurden aber erfolgreich beendet und verwendeter Hauptspeicher wurde anschließend wieder freigegeben. Hier entstand erst ein Problem, als der Speicherbedarf größer wurde und die Swap-Partition zu klein war. So kam es zum Auftritt des Out-of-Memory-Killer, der mit einer faszinierenden Genauigkeit immer genau den Prozess abgeräumt hat, den man als Sysadmin gern behalten hätte. Auch hier wurde das Problem letztendlich durch eine Erweiterung des Hauptspeichers gelöst.

Ich erinnere mich auch noch an die ein oder andere Anwendung mit einem Speicherleck. Hier hat vorhandener Swap-Speicher das Leid jedoch lediglich kurz verzögert. Das Problem wurde entweder durch einen Bugfix oder den Wechsel der Anwendung behoben.

Nun bin ich auf eure Antworten und Erfahrungsberichte gespannt.

10 Kommentare zu „Linux-Server mit oder ohne Swap-Partition bereitstellen?

  1. Michaela Lang

    Hi Joerg,

    soweit ich weiss ist SWAP kein mandatory item allerdings muss man auch verstehen dass ohne SWAP einige Feature nicht funktionieren (Hybernate, Kernel dumps, …)

    Wenn man auf diese Features verzicheten kann spricht nichts dagegen in System mit 32+GB memory ohne SWAP los zu legen oder um mit den Worten von Red Hat abzuschliessen

    „`
    Systems without swap can make sense and are supported by Red Hat – just be sure the behaviour of such a system under memory pressure is what you want. In most environments, a bit of swap makes sense.
    „`

    Antworten
        1. Ulf

          Vermutlich vertippt, ja. Also bleibt Hibernate. Was für Dein Server Szenario eher weniger relevant sein mag.
          Generell würde ich einen kleinen Swap einplanen, um gegen der OOM gewappnet zu sein, ich weiß aber auch von Kunden, die bewusst auf Swap verzichten, um Nebeneffekte zu vermeiden.

          Antworten
  2. onli

    Ich hab auf verschiedenen meiner Server für pipes.digital und pc-kombo.com den Swap aktiviert gehabt, teils manuell als Datei weil es vom Hoster nicht vorgesehen war. Mir verlängerte das die Laufzeit: Irgendwas verursachte bei beiden Memoryleaks, was ich nie 100% in den Griff bekam – immer nur Teillösungen, eine bessere puma-Konfiguration hier, einmal weniger oft XML parsen dort (vermeidet das Auftreten eines Hängers in ReXML), dazu halfen gelegentlich Ruby und Gem-Updates. Beide Projekte sind mit Ruby/Sinatra umgesetzt.

    Mit mehr Swapspeicher konnte sich das in manchen Iterationen manchmal doch einrenken, zumindest soweit, dass die Abstürze durch den OOM managebar selten wurden. Derzeit z.B. ist alles okay, bei Pipes ist der Swap auf 8GB, bei pc-kombo sogar momentan aus – allerdings kriegt letzterer derzeit auch weniger Traffic ab als früher schon mal, während ich bei Pipes eher glaube tatsächlich durch die letzte Pumakonfiguration eine Lösung für zumindest eines der Leaks zu haben.

    Server mit mehr Arbeitsspeicher wären hier wahrscheinlich genauso eine Lösung, wären aber auch sehr viel mehr teurer – und die Anwendungen selbst sollten das eigentlich nicht brauchen.

    Antworten
  3. geht auch einfacher

    Das ist kein Wunder, daß Swapping unter Stress nicht zur vollen Zufriedenheit funktioniert:

    Swap ( und ist egal ob Datei oder Partition ist nämlich das gleiche Medium ) wird gebraucht um „mal ebend“ etwas mehr Speicher zur Verfügung zu haben. Es lagert dann Teile die nicht gebraucht werden, aber viel ram haben, aus.

    Das funktioniert genau solange, wie nicht dauerhaft ein- und ausgelagert wird, denn das Medium „Platte“ ist zig mal langsamer als RAM. Die neuen Prozesse die nach Speicher verlangen, dürfen nicht zu schnell dazu kommen, sonst werden die Prozesse von eben gleich wieder ausgelagert. Da das aber die aktiven Prozesse sind, kommt es zum IO Jam, weil jede Menge gelesen und geschrieben wird. Da hilft dann nur eins: Prozesse von einem auslagerungsicheren Prozess töten lassen, weil starten geht ja nicht mehr ;)

    Regel: SWAP muß auf dem schnellsten Medium liegen was zur Verfügung steht.

    Systeme ohne Swap starten einfach keine neuen Prozesse mehr, was je nach Situation kein Problem darstellen muß, wenn alles wichtige schon läuft.

    Richtig ist, daß ein, zwei GB Swap ganz praktisch sind um ungenutzte Libs, die z.B. nur beim Start benutzt werden, weg zu bekommen. Man merkt das ein System korrekt eingestellt ist, wenn der SWAP nur minimal belegt ist, aber nicht aktiv geswappt wird.

    Wenn man natürlich 128GB Ram einbaut und dauerhaft nur 16 davon braucht, dann braucht es auch keinen Swap mehr :D

    Antworten

Antworte auf den Kommentar von onli Antwort abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert