Skip to main content

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

  1. Überblick:Grundidee: Was ist ZRAM und wannwofür lohntnutzt esman sich?es?
  2. Quick-Check: Ist ZRAM schonaktiv aktiv?und sinnvoll priorisiert?
  3. Sizing: Empfehlungen von 2 GB bis 128 GB RAM
  4. Kompressions-Algorithmen: lz4 vs. zstd (und warum)
  5. Installation (Debian/Ubuntu)
  6. Konfiguration mitKonfiguration: systemd-zram-generator (empfohlen)
  7. Konfiguration mitKonfiguration: zram-tools (Alternative)
  8. Kernel/VM-Tuning/Kernel-Tuning: (swappiness,warum page-cluster,diese dirty ratios)sysctl-Werte?
  9. Swap-Disk-Swap: wann, warum, Priorität: ZRAM zuerst, Disk-Swap optionalt
  10. Verifizieren & Monitoring (inkl. PSI)
  11. Praxis-Profile:Rollback: Desktopwie vs.man Server
  12. es
  13. FAQsauber &rückgängig typische Stolperfallenmacht

Überblick:Grundidee: Was ist ZRAM und wannwofür lohntnutzt esman sich?es?

  • ZRAM erzeugterstellt ein Blockdevice im RAM,RAM (z. B. /dev/zram0), das komprimiert wird und als Swap dient.dienen kann.
  • Vorteil:Warum? Swap-I/OWenn istRAM extremknapp schnellwird, landen selten genutzte Speicherseiten im Swap. Mit ZRAM passiert das im RAM (RAM)schnell), statt deineauf SSD/HDD zu(langsam, stressen.verschleißfördernd).
  • Nachteil:Trade-off: Kompression kostetbraucht CPU.CPU. (BeiJe Meetings/Audionach kannWorkload dasist relevanterweniger seinCPU-Last wichtiger als diemaximale letzte 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öhere Swap-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: 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 (belegt“, 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. 100zstd vs.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 >und 0.00„alles hastzäh“ dukorrelieren messbareoft Memory-Stalls.eher Dasmit PSI als mit „Swap ist oftvoll“.
    der
    Grund

     für

    Ruckler.

    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 (Desktop/Allround)Richtwert) AlgorithmusWarum gerade so? KommentarTypische Nutzung
    2 GB 75–100% (1.5–2 GB (75–100%)GB) lz4Ohne Puffer kommt es schnell zu OOM. ZRAM schafft Luft, ohne Disk-I/O. CPUMinimal-Desktop, schonen,kleine trotzdemServer, genug Puffer gegen OOM.VMs
    4 GB 75–100% (3–4 GB (75–100%)GB) lz4Hier bringt ZRAM oft den größten „Feeling“-Gewinn: weniger harte Memory-Kanten. SehrBrowser/Office/kleine typische Low-RAM-Optimierung, bringt spürbar Ruhe ins System.Tools
    8 GB ~75% (GB (~75%)GB) zstdGenug, oderum lz4Peaks abzufedern, ohne zu viel in Swap zu driften. zstd spart mehr RAM, lz4 ist glatter bei Latenz.Allround-Desktop
    16 GB 60–75% (10–12 GB (~60–75%)zstdGB) Guter Allround-StandardSweet fürSpot: Desktop/Workstation.ZRAM ist Reserve, aber RAM bleibt Hauptarbeitsfläche.IDE/Browser/leichte VMs
    32 GB 50–75% (16–24 GB (~50–75%)GB) zstdBei Tab/IDE/Meetings hilft mehr ZRAM, Disk-Swap zu vermeiden. VieleHeavy Tabs/VMs/IDE: 50–75% ist meist sinnvoll.Desktop/Workstation
    64 GB 40–50% (24–32 GB (~40–50%)zstd oder lz4GB) Mehr RAM → wenigerZRAM aggressiv.wird Fokus:seltener Peak-Abfederung.gebraucht, sollte aber Peaks fangen.Builds, VMs, Containers
    128 GB 25–40% (32–48 GB (~25–40%)GB) zstdZRAM oderals lz4Sicherheitsnetz. Zu groß kann „Swap-Gewohnheiten“ fördern. Große Systeme: ZRAM als Sicherheitsnetz, nicht als Hauptspeicherersatz.Workstations/Server

    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

    AlgorithmusStärkeSchwächeWann nehmen?
    lz4Sehr niedrige CPU-Last, geringe LatenzWeniger Kompression (mehr RAM-Verbrauch pro Swap-Seite)Meetings/Audio/Low-Latency wichtig, schwächere CPU, Desktop „smooth“
    zstdSehr gute Kompression (mehr „virtueller RAM“)Höhere CPU-Last als lz4Viele 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,

    sauber
    in
    apt systemdupdate
    integriert,
    Aktualisiert Paketlisten. Unterschied zu install: ohne frische Listen kann 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 pererzeugt. Warum das bevorzugt ist: saubere systemd-Integration, klare Konfigdatei, gut wartbar. Das /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 flexibel.flexibel Konfigund meistweniger in„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:

    Bei 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

    der
    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 nichtstartet greift,nur istden einDienst Neustartneu.
    der
    systemctl saubererestart Weg,systemd-zram-setup@zram0.service
    damit
    Initialisiert/konfiguriert ZRAMzram0 garantiertneu. neuWarum: initialisiertWendet wird.neue ZRAM-Größe/Algorithmus an, ohne Neustart. Wenn die Unit anders heißt: 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-DateiWerte?

    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
    du
    sysctl 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: ZRAM prio 100,Warum Disk-Swap prio -2behalten? (Als letzte Rettung bei extremen Peaks oder niedriger)Memory-Leaks. ZRAM kann voll laufen.
    • Warum Disk-Swap niedrig priorisieren? Damit zuerst ZRAM genutzt wird (schneller, weniger I/O, weniger Verschleiß).
    • Disk-SwapHibernate: istWenn alsdu „letzterHibernate Rettungsanker“nutzen sinnvoll. Für Hibernatewillst, brauchst du allerdings Disk-Swap auf RAMDisk (in passender Größe. ZRAM taugtist dafü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=-2 mitsorgt 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,Das DATAbedeutet: (unkomprimiert),schneller COMPR/TOTALSwap-Puffer (tatsächlicherwird RAM-Verbrauch).genutzt, Disk bleibt ruhig.
    • mm_statZRAM voll + Disk-Swap steigt:: Enthält u. a. wie viel im ZRAM liegtzu undklein wieoder effektivWorkload komprimiertzu wird.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) und dannpage-cluster=0 ruckeltoft Teams,wichtiger Audio,als alles).noch mehr ZRAM-Größe.

    Praxis-Profile: Desktop vs. Server

    ProfilAlgorithmusZRAM-GrößeswappinessWarum
    Desktop (Browser, Meetings, Audio)lz4 oder zstd50–100% (je nach RAM)80–120Latenz wichtiger; ZRAM fängt Peaks ab, ohne SSD zu belasten.
    Workstation (IDE, Builds, VMs)zstd40–75%60–100Guter Kompromiss: weniger OOM, gute Kompressionsrate.
    Server (DB/Low-Latency kritisch)lz425–50%10–60Swap möglichst vermeiden; ZRAM nur als Sicherheitsnetz.

    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.

    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.conf entfernen/auskommentieren, dann Neustart.
    • zram-tools: Dienst deaktivieren: sudo 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.