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) - Installation (Debian/Ubuntu)
Konfiguration mitKonfiguration: systemd-zram-generator (empfohlen)Konfiguration mitKonfiguration: zram-tools (Alternative)Kernel/VM-Tuning/Kernel-Tuning:(swappiness,warumpage-cluster,diesedirty ratios)sysctl-Werte?Swap-Disk-Swap: wann, warum, Priorität: ZRAM zuerst, Disk-Swap optionalt- Verifizieren & Monitoring (inkl. PSI)
Praxis-Profile:Rollback:Desktopwievs.manServeres FAQsauber&rückgängigtypische Stolperfallenmacht
Ü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 genau - diese Befehle?
swapon --show- Zeigt aktive Swap-Geräte (ZRAM und ggf. Disk-Swap), inkl. Größe, Nutzung und Priorität.
PrioWichtigster Punkt::ZRAM sollte eine höhereSwap-Priorität haben als Disk-Swap, damit zuerst der schnelle komprimierte RAM genutzt wird. 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:
freezeigt Gesamtbild,swaponzeigt 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:
freesieht nur „Swap(belegt“,zramctlzeigt 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.
100zstdvs.wirklich-2).einen- Vorteil bringt oder nur CPU verbrennt.
cat /proc/pressure/memory- PSI
memory(Pressure Stall Information) zeigt, ob Prozesse messbar auf Speicher warten mussten. Warum das wichtig ist::BeiRuckler,avg10/60/300Audio-Aussetzer>und0.00„alleshastzäh“dukorrelierenmessbareoftMemory-Stalls.eherDasmit PSI als mit „Swap istoftvoll“.
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 | GB) |
Guter |
IDE/Browser/leichte VMs |
| 32 GB | 50–75% (16–24 |
Bei Tab/IDE/Meetings hilft mehr ZRAM, Disk-Swap zu vermeiden. |
||
| 64 GB | 40–50% (24–32 | GB) |
Mehr RAM → |
Builds, VMs, Containers |
| 128 GB | 25–40% (32–48 |
ZRAM Sicherheitsnetz. 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
| Algorithmus | Stärke | Schwäche | Wann nehmen? |
|---|---|---|---|
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,
aptsystemdupdate- Aktualisiert Paketlisten. Unterschied zu install: ohne frische Listen kann
aptalte Versionen/Abhängigkeiten sehen oder Pakete nicht finden. apt install -y systemd-zram-generator- Installiert den Generator, der beim Booten ZRAM-Devices nach Konfig
pererzeugt. Warum das bevorzugt ist: saubere systemd-Integration, klare Konfigdatei, gut wartbar. Dasbeantwortet die Rückfrage automatisch (nützlich für Copy/Paste, weniger nützlich für Menschen, die gern überraschende Dinge abbrechen)./etc/systemd/zram-generator.conf-y
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
flexibel.flexibelKonfigundmeistwenigerin„systemd-nativ“.
/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%
CPU-Last)
[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.
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
nichtstartetgreift,nuristdeneinDienstNeustartneu. systemctlsaubererestartWeg,systemd-zram-setup@zram0.service- Initialisiert/konfiguriert
ZRAMzram0garantiertneu.neuWarum:initialisiertWendetwird.neue ZRAM-Größe/Algorithmus an, ohne Neustart. Wenn die Unit anders heißt:systemctl list-units --type=service --allnutzen 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.
lz4ist latenzfreundlicher,zstdkomprimiert 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/PRIORITYneu gesetzt werden. Unterschied zudaemon-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
Werte?
Datei: /etc/sysctl.d/99-zram-tuning.conf
#
ZRAMEmpfohlene 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:
Wenn
dusysctl nach--system
dem- Lädt
Tuningalle dassysctl-Konfigurationen Gefühlneu hast,(u. dassa. aus /etc/sysctl.d/). Unterschied zu frühNeustart: geswapptwirkt wird,sofort, istohne vm.swappinessBoot.
der
erste Regler
(z. B. 80 statt 100).Swap-Disk-Swap: wann, warum, Priorität: ZRAM zuerst, Disk-Swap optionalt
Empfehlung:ZRAMprio 100,Warum Disk-Swapprio -2behalten?(Als letzte Rettung bei extremen Peaks oderniedriger)Memory-Leaks. ZRAM kann voll laufen.- Warum Disk-Swap niedrig priorisieren? Damit zuerst ZRAM genutzt wird (schneller, weniger I/O, weniger Verschleiß).
Disk-SwapHibernate:istWennalsdu„letzterHibernateRettungsanker“nutzensinnvoll. FürHibernatewillst, brauchst duallerdingsDisk-Swap≥aufRAMDisk(in passender Größe. ZRAMtaugtistdafür nicht).flüchtig.
Disk-Swap-Priorität für Disk-Swap 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
| ||||
| ||||
|
FAQRollback: &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?
systemd-zram-generator:Datei/etc/systemd/zram-generator.confentfernen/auskommentieren, dann Neustart.zram-tools:Dienst deaktivieren:sudosystemctl disable --now zramswap.service
systemctl disable --now zramswap.service--nowstoppt sofort,disableverhindert Autostart beim Boot. Unterschied zustop:stopist nur temporär,disableist dauerhaft.