linux-kernel-advanced performance tuning memory swap zram storage

Swap Management: Virtual Memory (Artikel 386)

Beherrschung der Auslagerungsverwaltung unter Linux. Erfahren Sie alles über Swap-Files, Partitionen, zRAM-Optimierung und den strategischen Einsatz von virtuellem Speicher.

# Swap Management Mastery: Den Notausgang des RAMs sichern

TL;DR / Management Summary Swap ist der Überlauf-Bereich für den Arbeitsspeicher. Wenn der RAM voll ist, lagert der Kernel inaktive Daten auf die (langsame) Disk aus. In Zeiten von NVMe-SSDs ist die “No Swap” Regel veraltet. Ein Senior Admin nutzt heute eine Kombination aus kleinen Swap-Files (für Lastspitzen) und zRAM (komprimierter RAM-Swap, siehe Artikel 216), um das System vor dem OOM-Killer zu bewahren und den Page Cache effizient zu halten.


# 1. Einführung & Architektur

Wie der Kernel auslagert.

Der Kernel nutzt den Swap nicht nur bei Speichermangel. Er verschiebt aktiv Daten, die seit Stunden nicht angefasst wurden, in den Swap, um den wertvollen RAM für den Page Cache (Artikel 385) freizumachen.

# Die Speicher-Hierarchie (Mermaid)

graph TD
    A[Application RAM] --> B[Physical RAM: Fast]
    B -->|Eviction via Swappiness| C{Swap Medium}
    C -->|Option A: RAM Compression| D[zRAM: Very Fast]
    C -->|Option B: Flash Storage| E[Swap File: Fast]
    C -->|Option C: Spinning Disk| F[Swap Partition: Very Slow]
    subgraph "The Latency Gap"
        B --- G[~100 ns]
        D --- H[~500 ns]
        E --- I[~100 us]
        F --- J[~10 ms]
    end

# 2. Swap-Arten im Enterprise-Alltag

Partition vs. File.

# 1. Swap Partitionen

Traditionell der Standard. Schwer zu skalieren, da sie eine feste Größe in der Partitionstabelle haben.

# 2. Swap Files (Der moderne Weg)

Flexibel, können zur Laufzeit erstellt und gelöscht werden. Die Performance auf modernen Dateisystemen (XFS/Ext4) ist identisch zu Partitionen.

# Erstelle 4GB Swap File
sudo dd if=/dev/zero of=/swapfile bs=1M count=4096
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

# 3. zRAM (Der Edge-Standard)

Nutzt Kompression im RAM. Ideal für SLES/Arch auf kleiner Hardware (Artikel 216).


# 3. Swappiness: Die Steuerungs-Logik

Wann fangen wir an?

Wie in Artikel 368 gelernt, steuert vm.swappiness die Aggressivität.

  • Wichtig: Ein Wert von 0 schaltet Swap nicht aus, sondern zwingt den Kernel, bis zur letzten Sekunde zu warten.
  • Empfehlung: Setzen Sie swappiness = 10 für Datenbank-Server und 60 für Laptops.

# 4. Day-2 Operations: Wartung & Performance

Den Swap gesund halten.

# Den Swap leeren

Manchmal “vergisst” der Kernel Daten im Swap, obwohl wieder RAM frei ist.

# Schaltet Swap aus (Daten werden in den RAM zurückgeschoben)
sudo swapoff -a
# Sofort wieder einschalten
sudo swapon -a

Gefahr: Wenn Sie swapoff ausführen und nicht genug echter RAM frei ist, wird der OOM-Killer sofort aktiv!


# 5. Troubleshooting & “War Stories”

Wenn der Swap das System killt.

# Story 1: “Swap-Thrashing (Die Todes-Spirale)”

Symptom: Der Server reagiert auf nichts mehr. Die Disk-LED leuchtet dauerhaft. top zeigt 100% I/O Wait. Ursache: Das System braucht mehr RAM für aktive Prozesse, als vorhanden ist. Er schiebt Daten von A nach B und sofort wieder zurück. Lösung: Nutzen Sie zRAM (komprimiert schneller als Disk-I/O) oder limitieren Sie den RAM-Verbrauch via Cgroups (Artikel 376).

# Story 2: “Das langsame NVMe durch Swap”

Symptom: Eine teure NVMe SSD wird im Benchmark immer langsamer. Ursache: Zu viele Schreibvorgänge durch Swap auf die SSD verkürzen nicht nur die Lebensdauer, sondern füllen auch den internen Cache des Controllers. Lösung: Nutzen Sie das Flag discard beim Swap-Mount in der /etc/fstab, damit die SSD gelöschte Swap-Bereiche sofort wieder freigeben kann.


# 6. Fazit & Empfehlung

  • Pflicht: Deaktivieren Sie Swap niemals komplett. Ein System ohne Swap stürzt bei Lastspitzen hart ab, anstatt “nur” langsam zu werden.
  • Wahl: Nutzen Sie ein Swap-File für maximale Flexibilität.
  • Standard: Kombinieren Sie ein 2GB Swap-File mit zRAM (Größe = 50% des RAMs).

# Anhang: Cheatsheet

Aufgabe Befehl
Swap Übersicht swapon --show
Zusammenfassung free -h
Swap priorisieren swapon -p 10 /dev/sda2 (Höhere Zahl = Prio)
Swap File erstellen mkswap <file>
Swap aktivieren swapon <device>
Swap deaktivieren swapoff <device>
Fstab Eintrag /swapfile none swap defaults 0 0
Swappiness Status cat /proc/sys/vm/swappiness
Prioritäten sehen cat /proc/swaps