Linux - ZRAM Config
Ziel: ZRAM als schnellen Swap einrichten (komprimierter RAM statt SSD/HDD), sinnvolle Größe je nach RAM wählen, Prioritäten korrekt setzen, Latenz/CPU-Last sauber austarieren. Für Desktop (viele Tabs) und Server/Workstations.
Inhalt
- Überblick: Was ist ZRAM und wann lohnt es sich?
- Quick-Check: Ist ZRAM schon aktiv?
- Sizing: Empfehlungen von 2 GB bis 128 GB RAM
- Installation (Debian/Ubuntu)
- Konfiguration mit systemd-zram-generator (empfohlen)
- Konfiguration mit zram-tools (Alternative)
- Kernel/VM-Tuning (swappiness, page-cluster, dirty ratios)
- Swap-Priorität: ZRAM zuerst, Disk-Swap optional
- Verifizieren & Monitoring
- Praxis-Profile: Desktop vs. Server
- FAQ & typische Stolperfallen
Überblick: Was ist ZRAM und wann lohnt es sich?
- ZRAM erzeugt ein Blockdevice im RAM, das komprimiert wird und als Swap dient.
- Vorteil: Swap-I/O ist extrem schnell (RAM), statt deine SSD/HDD zu stressen.
- Nachteil: Kompression kostet CPU. (Bei Meetings/Audio kann das relevanter sein als die letzte Kompressionsrate.)
Merke: ZRAM ist ideal für Desktop/Notebook (Browser, Electron, Meetings) und auch für Server als Puffer gegen OOM-Spikes. Es ersetzt aber keine realistische RAM-Planung.
Quick-Check: Ist ZRAM schon aktiv?
Kommandos
swapon --show
free -h
zramctl
cat /sys/block/zram0/mm_stat
cat /proc/pressure/memory
- Prio: ZRAM sollte eine höhere Swap-Priorität haben als Disk-Swap (z. B. 100 vs. -2).
- PSI memory: Bei avg10/60/300 > 0.00 hast du messbare Memory-Stalls. Das ist oft der Grund für Ruckler.
Sizing: Empfehlungen von 2 GB bis 128 GB RAM
Grundidee: Je weniger RAM, desto aggressiver darf ZRAM sein. Je mehr RAM, desto mehr geht es um Latenz-Spitzen und seltene Peaks, nicht darum, 80 GB wegzukomprimieren.
| RAM | ZRAM-Größe (Desktop/Allround) | Algorithmus | Kommentar |
|---|---|---|---|
| 2 GB | 1.5–2 GB (75–100%) | lz4 |
CPU schonen, trotzdem genug Puffer gegen OOM. |
| 4 GB | 3–4 GB (75–100%) | lz4 |
Sehr typische Low-RAM-Optimierung, bringt spürbar Ruhe ins System. |
| 8 GB | 6 GB (~75%) | zstd oder lz4 |
zstd spart mehr RAM, lz4 ist glatter bei Latenz. |
| 16 GB | 10–12 GB (~60–75%) | zstd |
Guter Allround-Standard für Desktop/Workstation. |
| 32 GB | 16–24 GB (~50–75%) | zstd |
Viele Tabs/VMs/IDE: 50–75% ist meist sinnvoll. |
| 64 GB | 24–32 GB (~40–50%) | zstd oder lz4 |
Mehr RAM → weniger aggressiv. Fokus: Peak-Abfederung. |
| 128 GB | 32–48 GB (~25–40%) | zstd oder lz4 |
Große Systeme: ZRAM als Sicherheitsnetz, nicht als Hauptspeicherersatz. |
Merke: ZRAM-„DISKSIZE“ ist nicht 1:1 RAM-Verbrauch. RAM wird erst belegt, wenn Seiten im ZRAM landen. Trotzdem: riesige ZRAM-Größen können das System dazu verleiten, zu viel zu swappen. Daher bei viel RAM moderater dimensionieren.
Installation (Debian & Ubuntu)
Empfohlen: systemd-zram-generator
sudo apt update
sudo apt install -y systemd-zram-generator
Hinweis: Modern, sauber in systemd integriert, Konfig per /etc/systemd/zram-generator.conf.
Alternative: zram-tools
sudo apt update
sudo apt install -y zram-tools
Hinweis: Funktioniert, aber weniger flexibel. Konfig meist in /etc/default/zramswap.
Konfiguration mit systemd-zram-generator (empfohlen)
Datei: /etc/systemd/zram-generator.conf
Template (Desktop/Allround)
[zram0]
# Richtwert je nach RAM (siehe Tabelle). Beispiel: 75% von RAM.
zram-size = ram * 0.75
# Kompromiss: gute Kompression, meist effizient
compression-algorithm = zstd
# ZRAM vor Disk-Swap
swap-priority = 100
Low-RAM (2–4 GB): eher lz4 + 100%
[zram0]
zram-size = ram * 1.0
compression-algorithm = lz4
swap-priority = 100
High-RAM (64–128 GB): moderat + optional lz4 für Latenz
[zram0]
zram-size = ram * 0.35
compression-algorithm = lz4
swap-priority = 100
Anwenden
sudo systemctl daemon-reload
# Je nach System/Version existieren diese Targets/Units.
# Wenn die Unit bei dir anders heißt, ist das kein Weltuntergang:
# "systemctl list-units | grep -i zram" zeigt sie.
sudo systemctl restart systemd-zram-setup@zram0.service || true
# Fallback: reboot (wenn du eh gerade nichts Wichtiges offen hast ...)
Hinweis: Wenn der Restart nicht greift, ist ein Neustart der saubere Weg, damit ZRAM garantiert neu initialisiert wird.
Konfiguration mit zram-tools (Alternative)
Datei: /etc/default/zramswap
Beispiele nach RAM
# 2 GB RAM
ALGO=lz4
PERCENT=100
PRIORITY=100
# 8 GB RAM
# ALGO=zstd
# PERCENT=75
# PRIORITY=100
# 32 GB RAM
# ALGO=zstd
# PERCENT=60
# PRIORITY=100
# 128 GB RAM
# ALGO=lz4
# PERCENT=35
# PRIORITY=100
Anwenden
sudo systemctl restart zramswap.service
Kernel/VM-Tuning (swappiness, page-cluster, dirty ratios)
Ziel: ZRAM sinnvoll nutzen (statt SSD), ohne dass das System bei Latenz-Workloads zäh wird.
Empfohlene sysctl-Datei
Datei: /etc/sysctl.d/99-zram-tuning.conf
# ZRAM ist schnell genug, um früher genutzt zu werden (Desktop/Allround)
vm.swappiness=100
# Weniger Swap-Readahead (oft weniger Latenzspitzen mit ZRAM)
vm.page-cluster=0
# Cache nicht unnötig aggressiv verwerfen (Desktop-Feeling)
vm.vfs_cache_pressure=50
# Schreibspitzen dämpfen (hilft bei Audio/Video/Meetings)
vm.dirty_background_ratio=5
vm.dirty_ratio=15
Aktivieren
sudo sysctl --system
Hinweis: Wenn du nach dem Tuning das Gefühl hast, dass zu früh geswappt wird, ist vm.swappiness der erste Regler (z. B. 80 statt 100).
Swap-Priorität: ZRAM zuerst, Disk-Swap optional
- Empfehlung: ZRAM prio 100, Disk-Swap prio -2 (oder niedriger).
- Disk-Swap ist als „letzter Rettungsanker“ sinnvoll. Für Hibernate brauchst du allerdings Disk-Swap ≥ RAM (ZRAM taugt dafür nicht).
Disk-Swap-Priorität via /etc/fstab (optional)
# Beispiel: swap Partition/Device mit niedriger Priorität
# /dev/dm-2 none swap sw,pri=-2 0 0
Hinweis: Editiere /etc/fstab mit einem Editor (z. B. sudoedit /etc/fstab). Kein wildes Herum-Pattern-Matching nötig.
Verifizieren & Monitoring
Kommandos
swapon --show
free -h
zramctl
cat /sys/block/zram0/mm_stat
cat /proc/pressure/memory
- zramctl: Algorithmus, Disksize, DATA (unkomprimiert), COMPR/TOTAL (tatsächlicher RAM-Verbrauch).
- mm_stat: Enthält u. a. wie viel im ZRAM liegt und wie effektiv komprimiert wird.
- PSI memory: Wenn avg-Werte steigen, hast du echte Stalls (und dann ruckelt Teams, Audio, alles).
Praxis-Profile: Desktop vs. Server
| Profil | Algorithmus | ZRAM-Größe | swappiness | Warum |
|---|---|---|---|---|
| Desktop (Browser, Meetings, Audio) | lz4 oder zstd |
50–100% (je nach RAM) | 80–120 | Latenz wichtiger; ZRAM fängt Peaks ab, ohne SSD zu belasten. |
| Workstation (IDE, Builds, VMs) | zstd |
40–75% | 60–100 | Guter Kompromiss: weniger OOM, gute Kompressionsrate. |
| Server (DB/Low-Latency kritisch) | lz4 |
25–50% | 10–60 | Swap möglichst vermeiden; ZRAM nur als Sicherheitsnetz. |
FAQ & typische Stolperfallen
Warum ist mein Disk-Swap unbenutzt?
Weil es korrekt ist. ZRAM hat höhere Priorität und ist schneller. Disk-Swap bleibt als Notfall-Reserve.
Wann sollte ich von zstd auf lz4 wechseln?
Wenn du bei Last spürbare Latenzspitzen hast (Teams/Audio/Realtime-Kram) oder wenn die CPU bei Kompression sichtbar glüht. lz4 ist oft „smoother“, zstd spart mehr RAM.
Kann ZRAM Hibernate ersetzen?
Nein. Hibernate braucht typischerweise Swap auf Disk, groß genug für RAM-Inhalt. ZRAM ist flüchtig und nicht geeignet.
Wie mache ich ZRAM rückgängig?
- systemd-zram-generator: Datei
/etc/systemd/zram-generator.confentfernen/auskommentieren, dann Neustart. - zram-tools: Dienst deaktivieren:
sudo systemctl disable --now zramswap.service