Es gibt Optimierungen, die kosten nichts – bringen aber spürbar mehr Stabilität und Performance.
ZRAMZRAM ist komprimierter Arbeitsspeicher, der als schneller Ersatz für klassischen Swap genutzt wird.
Mehr dazu im IT-Glossar → gehört für mich genau in diese Kategorie.
ZRAM ist ein Linux-Kernel-Modul, das einen komprimierten Auslagerungsspeicher (Swap) direkt im Arbeitsspeicher (RAM) erstellt.
Ich bin bei einem meiner Systeme eher zufällig darauf gestoßen – und war überrascht, wie groß der Effekt tatsächlich ist.
Das Problem: Klassischer Swap ist langsam
Linux nutzt Swap, wenn der physische RAM knapp wird. Klassisch liegt dieser Swap auf einer SSD oder – im schlimmsten Fall – auf einer SD-Karte.
Das Problem dabei: selbst schnelle SSDs sind im Vergleich zu RAM um Größenordnungen langsamer.
Speicherhierarchie: Wie schnell ist Speicher wirklich?
| Speicherart | Typische Zugriffszeit | in Nanosekunden (ns) | Verhältnis zu RAM |
|---|---|---|---|
| CPU L1-Cache | ~1 ns | 1 | ~1/80 |
| CPU L2-Cache | ~4 ns | 4 | ~1/20 |
| CPU L3-Cache | ~15 ns | 15 | ~1/5 |
| Arbeitsspeicher (RAM) | ~80 ns | 80 | 1x (Referenz) |
| VRAM (GDDR) | ~150 ns | 150 | ~2x |
| NVMe-SSD | ~50 µs | 50.000 | ~600x |
| SATA-SSD | ~100 µs | 100.000 | ~1.250x |
| SD-/microSD-Karte | ~10 ms (1–50 ms) | 10.000.000 | ~125.000x+ |
| Festplatte (HDD) | ~8 ms (5–10 ms) | 8.000.000 | ~100.000x |
| CD / DVD | ~120 ms (80–200 ms) | 120.000.000 | ~1.500.000x |
Die Werte sind typische Richtwerte und können je nach Hardware und Zugriffsmuster variieren. Entscheidend ist die Größenordnung.
Die Folgen:
- hohe Latenzen
- spürbare Ruckler
- I/O-Wartezeiten
- unnötige Schreiblast auf dem Datenträger
Die Lösung: ZRAM
ZRAM ist komprimierter RAM, der als Swap genutzt wird.
Anstatt Daten auf ein langsames Speichermedium zu schreiben, werden sie im RAM komprimiert abgelegt. Dadurch entsteht effektiv „mehr RAM“ – ohne zusätzliche Hardware.
Warum ZRAM so effektiv ist
Der entscheidende Vorteil liegt in der Kombination aus:
- sehr geringer Latenz (RAM statt SSD)
- Kompression (mehr nutzbarer Speicher)
Typischer Effekt:
- weniger I/O
- verlängert die Lebensdauer von SSD/SD-Karte
- schneller als jedes Swapfile
- ruhigeres Systemverhalten
- keine spürbaren Hänger unter Last
Besonders sinnvoll in der Praxis
In der Praxis zeigt sich schnell, dass ZRAM nicht auf allen Systemen den gleichen Effekt hat. Besonders stark ist der Nutzen dort, wo viele Prozesse gleichzeitig arbeiten oder Speicher kurzfristig knapp wird.
Docker und virtuelle Maschinen
Gerade auf Systemen mit vielen Containern oder virtuellen Maschinen – etwa auf Docker-Hosts oder Proxmox-Systemen – ist ZRAM besonders effektiv.
Hier entstehen häufig kurzfristige Lastspitzen im Speicher:
- Container starten oder werden neu gebaut
- Dienste skalieren kurzfristig
- mehrere Systeme greifen gleichzeitig auf Ressourcen zu
ZRAM fängt genau diese Situationen sauber ab, ohne dass das System in langsamen I/O ausweicht. Das Ergebnis ist ein deutlich stabileres Verhalten unter Last.
Proxmox Hosts
Auf Proxmox-Hosts kommt ein weiterer Effekt hinzu: mehrere VMs teilen sich den gleichen physikalischen Speicher.
Wenn einzelne Systeme kurzfristig mehr RAM benötigen, verhindert ZRAM, dass der Host in langsamen Disk-Swap verfällt – und sorgt dafür, dass alle VMs weiterhin flüssig laufen.
Raspberry Pi und Systeme mit SD-Karte
Auf dem Raspberry Pi ist der Nutzen fast noch größer.
Hier liegt der klassische Swap oft auf einer SD-Karte – und die ist nicht nur langsam, sondern auch empfindlich gegenüber vielen Schreibzugriffen.
ZRAM reduziert diese Schreiblast massiv und sorgt gleichzeitig für ein deutlich ruhigeres Systemverhalten.
Gerade bei kleineren Raspberry-Systemen mit wenig RAM ist das ein spürbarer Unterschied.
Installation unter Debian / Ubuntu
sudo apt update
sudo apt install zram-tools
Konfiguration
sudo vi /etc/default/zramswap
Empfohlene Einstellungen:
# Kompressionsalgorithmus
ALGO=lz4
# Anteil des RAMs (in Prozent)
# Beispiel: 4 GB RAM → PERCENT=50 → 2 GB ZRAM
PERCENT=50
# Hohe Priorität
PRIORITY=100
Danach den Dienst aktivieren und starten:
sudo systemctl enable zramswap
sudo systemctl restart zramswap
Überprüfung
swapon --show
Beispiel:
NAME TYPE SIZE USED PRIO
/dev/zram0 partition 15,6G 1,6G 100
Swapfile entfernen (empfohlen)
Ein klassisches Swapfile macht ZRAM in vielen Fällen überflüssig oder sogar langsamer.
sudo swapoff -a
Eintrag aus /etc/fstab entfernen:
/swapfile none swap sw 0 0
Dann löschen:
sudo rm /swapfile
ZRAM Status prüfen
zramctl
Hier sieht man u. a.:
- Größe des ZRAM
- komprimierte Daten
- genutzter RAM
- Algorithmus
Swappiness sinnvoll einstellen
echo "vm.swappiness=10" | sudo tee /etc/sysctl.d/99-swappiness.conf
sudo sysctl -p /etc/sysctl.d/99-swappiness.conf
Praxisempfehlungen
| System | Empfehlung |
|---|---|
| Raspberry Pi |
ALGO=lz4 PERCENT=50 Swapfile unbedingt entfernen (SD-Karte!) |
| Desktop / Laptop |
ALGO=zstd möglich PERCENT=50–75 optional kleines Swapfile als Fallback |
| Server |
ZRAM bei Memory-Pressure sinnvoll optional kleines Swapfile behalten |
| Docker / VM |
ALGO=zstd PERCENT=40 PRIORITY=100 |
| Proxmox Host |
ALGO=zstd PERCENT=25 PRIORITY=100 |
Gerade auf kleinen Systemen wie Raspberry Pi oder Proxmox-Hosts kann ZRAM spürbare Vorteile bringen – ähnlich wie bei der Optimierung der Netzwerkinfrastruktur.
Gerade bei bestehenden Systemen lässt sich oft noch viel Leistung herausholen. Genau solche Optimierungen sind Teil meiner Arbeit mit Catarix IT.
Fazit
ZRAM ist eine der einfachsten und effektivsten Optimierungen unter Linux.
Gerade auf Systemen mit begrenztem RAM oder hoher Last sorgt es für ein deutlich ruhigeres und stabileres Verhalten – ohne zusätzliche Hardware und ohne Nachteile.
Für mich gehört ZRAM inzwischen zur Standardkonfiguration – egal ob Raspberry Pi, Desktop oder Proxmox-Host.
Bei Systemen mit vielen Containern oder VMs spielt auch die Netzwerkinfrastruktur eine Rolle. Ein Praxisbeispiel dazu findest du hier: WLAN-Probleme und Airtime.
