Linux - ZRAM Config
Ziel: ZRAM als schnellen Swap einrichten (komprimierter RAM statt SSD/HDD), sinnvollepassende Größe jefür nach2 GB bis 128 GB RAM wählen, Prioritäten korrekt setzen, Latenz/CPU-Last sauber austarieren.austarieren, FürVerifikation Desktop& Monitoring verstehen.
Voraussetzung: Die Installations-/Systemänderungsbefehle erfordern Root-Rechte (vielez. Tabs)B. undvia Server/Workstations.Root-Shell). Reine Anzeige-/Monitoring-Befehle funktionieren auch als normaler Nutzer.
Inhalt
Überblick:Grundidee: Was ist ZRAM undwannwofürlohntnutztesmansich?es?- Quick-Check: Ist ZRAM
schonaktivaktiv?und sinnvoll priorisiert? - Sizing: Empfehlungen von 2 GB bis 128 GB RAM
- Kompressions-Algorithmen:
lz4vs.zstd(und warum)
Überblick:Grundidee: Was ist ZRAM und wannwofür lohntnutzt esman sich?es?
- ZRAM
erzeugterstellt ein Blockdevice imRAM,RAM (z. B./dev/zram0), das komprimiert wird und als Swapdient.dienen kann. Vorteil:Warum?Swap-I/OWennistRAMextremknappschnellwird, landen selten genutzte Speicherseiten im Swap. Mit ZRAM passiert das im RAM (RAM)schnell), stattdeineauf SSD/HDDzu(langsam,stressen.verschleißfördernd).Nachteil:Trade-off: KompressionkostetbrauchtCPU.CPU.(BeiJeMeetings/AudionachkannWorkloaddasistrelevanterwenigerseinCPU-Last wichtiger alsdiemaximaleletzte Kompressionsrate.)Kompression.
Merke: ZRAM ist ideal für Desktop/Notebook (Browser, Electron, Meetings) und auch für Server alsein Puffer gegen OOM-Spikes.Speicherpeaks Esund ersetztOOM, aberkein keineErsatz realistischefür realistischen RAM-Planung.Bedarf.
Quick-Check: Ist ZRAM schonaktiv aktiv?und sinnvoll priorisiert?
Kommandos
swapon --show
free -h
zramctl
cat /sys/block/zram0/mm_stat
cat /proc/pressure/memory
Warum
swapon --show
Zeigt aktive Swap-Geräte (ZRAM und ggf. Disk-Swap), inkl. Größe, Nutzung und Priorität. free -h
Gibt eine grobe Übersicht über RAM/Swap. Besonders relevant ist verfügbar: das ist die Menge RAM, die ohne massiven Stress freigemacht werden kann (Cache wird dabei mitgedacht). Unterschied zu swapon: free zeigt Gesamtbild, swapon zeigt Swap-Details.
zramctl
Zeigt ZRAM-spezifische Infos: Algorithmus, virtuelle Disksize, sowie wieviel unkomprimierte Daten im ZRAM liegen und wieviel realer RAM dafür belegt wird. Unterschied zu free: free sieht nur „Swap zramctl zeigt die Kompressionswirkung.
cat /sys/block/zram0/mm_stat
Detail-Statistiken aus dem Kernel: u. a. wieviel Daten im ZRAM liegen und wie effektiv komprimiert wird. Gut, um einzuschätzen, ob z. B. zstd cat /proc/pressure/memory
PSI für
Sizing: Empfehlungen von 2 GB bis 128 GB RAM
Grundidee:Regel: JeWenig RAM → aggressiver (mehr ZRAM), viel RAM → moderater (ZRAM als Sicherheitsnetz). Ziel ist weniger RAM, desto aggressiver darf ZRAM sein. Je mehr RAM, desto mehr geht es um Latenz-SpitzenOOM und selteneweniger Peaks,Disk-Swap, nicht darum,„unendlich 80Tabs GBdurch wegzukomprimieren.Kompression“.
| RAM | ZRAM-Größe ( |
||
|---|---|---|---|
| 2 GB | 75–100% (1.5–2 |
Ohne Puffer kommt es schnell zu OOM. ZRAM schafft Luft, ohne Disk-I/O. |
|
| 4 GB | 75–100% (3–4 |
Hier bringt ZRAM oft den größten „Feeling“-Gewinn: weniger harte Memory-Kanten. |
|
| 8 GB | ~75% (6 |
Genug, Peaks abzufedern, ohne zu viel in Swap zu driften. |
|
| 16 GB | 60–75% (10–12 |
zstdGB)
Guter zstdBei Tab/IDE/Meetings hilft mehr ZRAM, Disk-Swap zu vermeiden.
zstdlz4GB)
Mehr RAM → zstdZRAM lz4Sicherheitsnetz. Zu groß kann „Swap-Gewohnheiten“ fördern.
Große Merke: ZRAM-ZRAM „DISKSIZE“Disksize“ ist nichtvirtuell. 1:1 RAM-Verbrauch.Realer RAM wird erst belegt, wenn Seiten wirklich im ZRAM landen. Trotzdem:Trotzdem riesigebeeinflusst ZRAM-Größengroßer könnenZRAM dasdie SystemSwap-Strategie dazudes verleiten,Systems, zu viel zu swappen. Daherdeshalb bei sehr viel RAM moderater dimensionieren.bleiben.
Kompressions-Algorithmen: lz4 vs. zstd
lz4
Sehr niedrige CPU-Last, geringe Latenz
Weniger Kompression (mehr RAM-Verbrauch pro Swap-Seite)
Meetings/Audio/Low-Latency wichtig, schwächere CPU, Desktop „smooth“
zstd
Sehr gute Kompression (mehr „virtueller RAM“)
Höhere CPU-Last als lz4
Viele Daten/Tabs/IDE/VMs und CPU ist nicht der Engpass
Merke: Wenn PSI/Audio-Ruckler dein Problem sind, ist lz4 oft die bessere Wahl. Wenn OOM/disk-swap dein Problem sind, bringt zstd oft mehr Nutzwert.
Installation (Debian & Ubuntu)
Empfohlen:Option A (empfohlen): systemd-zram-generator
sudo apt update
sudo
apt install -y systemd-zram-generator
Hinweis: Modern,
apt systemdupdate
apt alte Versionen/Abhängigkeiten sehen oder Pakete nicht finden.
apt install -y systemd-zram-generator
Installiert den Generator, der beim Booten ZRAM-Devices nach Konfig /etc/systemd/zram-generator.conf-y beantwortet die Rückfrage automatisch (nützlich für Copy/Paste, weniger nützlich für Menschen, die gern überraschende Dinge abbrechen).
Alternative:Option B (Alternative): zram-tools
sudo apt update
sudo
apt install -y zram-tools
Hinweis: Funktioniert,
apt install -y zram-tools
Installiert ein klassisches Setup-Skript/Service für ZRAM-Swap. Unterschied zu Option A: funktioniert oft okay, aber weniger /etc/default/zramswap
Konfiguration mitKonfiguration: systemd-zram-generator (empfohlen)
Datei: /etc/systemd/zram-generator.conf
TemplateKonfig-Snippets (Desktop/Allround)nach RAM-Klasse
[zram0]2–4 # Richtwert je nachGB RAM (siehemaximaler Tabelle).Puffer, Beispiel:geringe 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
Warum:
High-Low-RAM ist OOM die größte Gefahr. lz4 hält CPU-Latenz klein, während 100% ZRAM die Überlebenschancen erhöht.
Bei 8–16 GB RAM (Allround)
[zram0]
zram-size = ram * 0.75
compression-algorithm = zstd
swap-priority = 100
Warum: 75% ist ein guter Kompromiss. zstd holt mehr Effekt aus dem ZRAM heraus, weil hier oft viele ähnliche Seiten anfallen (Browser/IDE).
32 GB RAM (Heavy Desktop/Workstation)
[zram0]
zram-size = ram * 0.60
compression-algorithm = zstd
swap-priority = 100
Warum: Genug ZRAM als Reserve, aber nicht so viel, dass das System „Swap ist ja da“ als Einladung versteht.
64–128 GB):GB moderatRAM + optional lz4 für(Sicherheitsnetz, Latenz wichtiger)
[zram0]
zram-size = ram * 0.35
compression-algorithm = lz4
swap-priority = 100
Warum: Bei viel RAM sind harte Peaks seltener. Wenn doch, willst du glatte Latenz statt maximale Ratio. Daher moderater Size + lz4.
AnwendenKonfig 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
systemctl daemon-reload
Lädt systemd-Konfiguration neu ein. Warum: systemd merkt sich Units/Generator-Ergebnisse; ohne Reload kann eine Änderung wirkungslos bleiben. Unterschied zu restart: Reload aktualisiert systemd selbst, Restart systemctl saubererestart Weg,systemd-zram-setup@zram0.service
zram0 systemctl list-units --type=service --all nutzen und im Pager nach „zram“ suchen.
Konfiguration mitKonfiguration: zram-tools (Alternative)
Datei: /etc/default/zramswap
Beispiele nach(mit RAMBegründung)
# 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
ALGO
Legt den Kompressionsalgorithmus fest. lz4 ist latenzfreundlicher, zstd komprimiert besser. Unterschied: CPU vs. Kompressionsrate (siehe Tabelle oben).
PERCENT
Prozentualer Anteil des RAM, der als ZRAM-Disksize verwendet wird. Warum: Steuert, wie viel „Reserve“ du hast. Unterschied zu systemd-zram-generator: Dort nutzt man meist Formeln (ram * 0.75) statt Prozent-Integer.
PRIORITY
Swap-Priorität für ZRAM. Warum: ZRAM soll vor Disk-Swap drankommen. Priorität ist der zentrale Mechanismus, um die Reihenfolge zu erzwingen.
AnwendenKonfig anwenden
sudo systemctl restart zramswap.service
systemctl restart zramswap.service
Startet den ZRAM-Swap-Dienst neu, damit ALGO/PERCENT/PRIORITY neu gesetzt werden. Unterschied zu daemon-reload: hier wird nur der Service neu gestartet, nicht systemd selbst.
Kernel/VM-Tuning/Kernel-Tuning: (swappiness,warum page-cluster, dirty ratios)
Ziel: ZRAM sinnvoll nutzen (statt SSD), ohne dass das System bei Latenz-Workloads zäh wird.
Empfohlenediese sysctl-Datei
Datei: /etc/sysctl.d/99-zram-tuning.conf
#Empfohlene ist schnell genug, um früher genutzt zu werdenWerte (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
Warum genau diese Werte?
vm.swappiness=100
Erlaubt dem Kernel, eher zu swappen. Warum sinnvoll mit ZRAM: Swap ist hier schnell, weil er im RAM liegt. Unterschied zu klassischem Disk-Swap: Bei SSD/HDD wäre ein hoher Wert oft fühlbar langsamer.
vm.page-cluster=0
Beeinflusst, wie viele Swap-Seiten auf einmal read-ahead geladen werden. Warum 0: Bei ZRAM ist Read-ahead oft kein Gewinn und kann Latenzspitzen erzeugen, weil unnötig viel dekomprimiert wird.
vm.vfs_cache_pressure=50
Steuert, wie aggressiv der Kernel Dentry/Inode-Caches verwirft. Warum niedriger: Desktop-Workloads profitieren davon, wenn Metadaten-Caches länger bleiben (Dateibrowser, IDE, viele kleine Files).
vm.dirty_background_ratio=5 und vm.dirty_ratio=15
Steuert, wie viel „dirty“ (noch nicht auf Disk geschriebener) Cache erlaubt ist, bevor Writeback startet bzw. blockiert. Warum niedriger: verhindert große, plötzliche Schreib-Spikes, die Audio/Video und Interaktivität stören können. Unterschied: background startet früher sanften Writeback, dirty_ratio ist der harte Deckel.
Aktivieren
sudo sysctl --system
Hinweis:
sysctl nach--system
/etc/sysctl.d/). Unterschied zu vm.swappinessBoot.
Regler
Swap-Priorität:Disk-Swap: ZRAMwann, zuerst,warum, Disk-Swap optionalPriorität
Empfehlung:ZRAMprio 100,Warum Disk-Swapprio -2behalten?(Als letzte Rettung bei extremen Peaks oderniedriger)Memory-Leaks. ZRAM kann voll laufen.
Priorität für Disk-Swap-PrioritätSwap via /etc/fstab (optional)Beispiel)
# Beispiel:Beispiel-Zeile swap(Device/UUID Partition/Devicean mitdein niedrigerSystem Priorität
#anpassen):
/dev/dm-2 none swap sw,pri=-2 0 0
Hinweis: EditiereWarum: /etc/fstabpri=-2mitsorgt einemdafür, Editordass (z.Disk-Swap B.erst sudoeditgenutzt /etc/fstab).wird, Keinwenn wildesZRAM Herum-Pattern-Matchingnicht nötig.reicht. Unterschied zu Default: ohne explizite Prio kann die Reihenfolge je nach Setup weniger klar sein.
Verifizieren & Monitoring (inkl. PSI)
Kommandos
swapon --show
zramctl
free -h
zramctl
cat /sys/block/zram0/mm_stat
cat /proc/pressure/memory
Wie interpretiert man das?
zramctlZRAM benutzt, Disk-Swap 0::Algorithmus,Idealfall.Disksize,DasDATAbedeutet:(unkomprimiert),schnellerCOMPR/TOTALSwap-Puffer(tatsächlicherwirdRAM-Verbrauch).genutzt, Disk bleibt ruhig.mm_statZRAM voll + Disk-Swap steigt:: Enthält u. a. wie viel imZRAMliegtzuundkleinwieodereffektivWorkloadkomprimiertzuwird.speicherhungrig. Dann Disk-Swap als Notfall aktiv, aber das System kann zäher werden.- PSI memory
:Wenn avg-Werte steigen, hast du echte Stallssteigt (avg10/60/300): Messbare Memory-Stalls. Das korreliert oft direkt mit „Ruckeln“. Dann sind Algorithmus (lz4) unddannpage-cluster=0ruckeltoftTeams,wichtigerAudio,alsalles).noch mehr ZRAM-Größe.
Praxis-Profile: Desktop vs. Server
lz4zstdzstdlz4FAQRollback: &wie typischeman Stolperfallenes sauber rückgängig macht
Warum ist mein Disk-Swap unbenutzt?systemd-zram-generator
# Konfig entfernen oder auskommentieren:
# /etc/systemd/zram-generator.conf
systemctl daemon-reload
# Danach Neustart oder erneutes Initialisieren, je nach Setup/Unit-Namen.
WeilWarum: esEntfernst korrektdu ist.die Generator-Konfig, wird beim nächsten Setup kein ZRAM hatmehr höhereerstellt. PrioritätUnterschied undzu ist„swapoff“: schneller.hier Disk-Swapwird bleibtdie alsUrsache Notfall-Reserve.(Auto-Setup) entfernt, nicht nur temporär deaktiviert.
Wann sollte ich von zstd auf lz4 wechseln?zram-tools
Wenn du bei Last spürbare Latenzspitzen hast (Teams/Audio/Realtime-Kram) oder wenn die CPU bei Kompression sichtbar glüht.
lz4ist oft „smoother“,zstdspart 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?
/etc/systemd/zram-generator.confsudo systemctl disable --now zramswap.service
systemctl disable --now zramswap.service
--now stoppt sofort, disable verhindert Autostart beim Boot. Unterschied zu stop: stop ist nur temporär, disable ist dauerhaft.