Arbeitspeicher verschiedener Hersteller

Mit zRAM den Arbeitsspeicher besser nutzen

RAM ist das Gold der Gegenwart. Viele potenzielle Käufer verschieben die Anschaffung neuer Hardware in eine hoffentlich günstigere Zukunft und begnügen sich bis dahin mit dem vorhandenen Arbeitsspeicher. Dabei kann eine Kerneltechnik namens zRAM helfen, die ein komprimiertes Blockgerät direkt im RAM einrichtet, das auch als zusätzlicher Swap definiert und von Anwendungen genutzt werden kann, bevor Daten in den langsameren Swap auf Festplatte oder SSD ausgelagert werden. Der Preis dafür ist eine geringfügig höhere CPU-Auslastung. Bei der Kompressionsrate gehen die Kernel-Entwickler von ungefähr 2:1 aus.

Swap-Partition im RAM

zRAM ist bereits seit Linux-Kernel 3.14, veröffentlicht am 30. März 2014, Teil des Mainline-Kernel, ist aber relativ unbekannt. Wir hatten bereits 2020 anlässlich von Fedora 33 über die Technik berichtet. Die Einrichtung von zRAM als Swap direkt im RAM auf Systemen, die systemd nutzen, unterscheidet sich leicht bei den verschiedenen Distributionen. Sinnvoll ist die Einrichtung, wenn häufig auf den vorhandenen Swap der Festplatte oder SSD ausgelagert wird. Das lässt sich mit Befehlen wie vmstat 5 -a oder swapon --show überprüfen.

Ubuntu

Bei Ubuntu muss das Paket zram-config installiert werden. Die Konfiguration erfolgt automatisch und kann nach einem obligatorischen Neustart überprüft und konfiguriert werden. Standardmäßig wird die Hälfte des vorhandenen RAM für zRAM reserviert. Zunächst schaut man mit swapon -s⁣ nach, ob die Partition korrekt angelegt wurde.

Wenn eine Anpassung der Größe erwünscht ist, so ist das meist eine Verkleinerung des zRAM, eine Vergrößerung über die Hälfte des RAM hinaus ist selten sinnvoll. Die Anpassung findet in der Datei /usr/bin/init-zram-swapping statt.

Hier ist die Zeile entscheidend, die mit mem= beginnt. Der vorgegebene Wert von 1024 kann zur Reduzierung auf ein Viertel des gesamten RAM auf 512 reduziert werden. Des Weiteren kann der Kompressionsalgorithmus angepasst werden. Zunächst werden mittels

cat /sys/block/zram0/comp_algorithm

die unterstützten Algorithmen ermittelt. Wird ZSTD angezeigt, lohnt es sich, diesen in einer neuen Zeile direkt über der Zeile

echo $mem > /sys/block/zram0/disksize 

zu erzwingen:

echo zstd > /sys/block/zram0/comp_algorithm

Nach dem Speichern ist ein weiterer Neustart nötig, um die neuen Werte zu übernehmen. Den Erfolg überprüft man mit zramctl.

Debian und Derivate

Bei Debian heißt das zu installierende Paket zram-tools. Die Konfiguration findet hier über /etc/default/zramswap statt. Die Aktivierung erfolgt über systemctl restart zramswap.service. Weitere Anpassungen sind im Debian-Wiki zu finden.

Fedora, Arch Linux und Derivate

Bei Fedora, Arch Linux und deren Derivaten kommt das Paket zram-generator aus dem systemd-Projekt zum Zug. Hier findet die Konfiguration in /etc/systemd/zram-generator.conf statt. Aktiviert werden die Einstellungen mit systemctl daemon-reload gefolgt von systemctl start /dev/zram0 .

Für Systeme ohne systemd gilt es, ein Script wie im Beispiel zu erstellen und in /etc/rc.local abzulegen.

Manuell wird zRAM über modprobe zram geladen. Die Größe wird über /sys/block/zram0/disksize, der Algorithmus via /sys/block/zram0/comp_algorithm festgelegt. Danach folgen mkswap und swapon wie bei jedem anderen Swap-Gerät. Weitere Verwendungszwecke von zRAM stellt das Arch-Wiki vor.

Foto von Andrey Matveev

Teilt den Beitrag, falls ihr mögt

13 Kommentare

  1. Hier mal ein Auszug aus meinem Joplin
    (Hoffe md-Format wird hier wiedergegeben)

    ## **zRAM** vs **zswap**
    Beide nutzen Kompression, um die SysLstg zu steigern, aber Ansatz grundverschieden.

    ### zRAM
     erstellt ein **virt Blockgerät** im RAM, verhält sich wie herk Swap-Partition, speichert Daten jed komprimiert  i RAM.

    – **Funktion:** Sys sieht ein zusätz Swap-Gerät mit hoher Priorität. Wenn RAM voll wird, schiebt Linux Daten in dieses zRAM-Gerät.

    – **Vorteil:** Extrem schnell, da keine HD-Zugriffe stattfinden.
    – **Nachteil:** Wenn zRAM voll ist, kann es die Daten meist nicht einfach auf die echte HD “weiterreichen”. Sobald der Platz im zRAM und der restliche RAM belegt sind, droht der *Out-of-Memory (OOM) Killer* Prozesse zu beenden.

    – **Ideal für:** Sys **ohne** phys Swap-Partition (z. B. Raspberry Pi, Live-Systeme) oder sehr schnelle Desktops.

    ### zswap
    **komprimierter Cache** für existierende Swap-Partition

    – **Funktionsweise:** Wenn das Sys Daten in den Swap auf HD auslagern will, fängt zswap diese ab, komprimiert sie und behält sie im RAM. Erst wenn dieser Cache voll ist, werden die am längsten nicht genutzten Daten (LRU) auf die HD geschrieben.

    – **Vorteil:** “Puffer”, kombiniert die Geschw der Kompression mit der Sicherheit der Festplatte.
    – **Nachteil:** Benötigt eine reale Swap-Partition/Datei
    – **Ideal für:** Sys mit wenig RAM, die eine echte Swap-Partition nutzen.

    | **Merkmal** | **zRAM** | **zswap** |
    | — | — | — |
    | **Typ** | Virt Blockgerät (Swap-Ersatz) | Schreib-Cache für Swap |
    | **Benötigt Swap auf Disk** | Nein | Ja |
    | **Datenfluss** | RAM -> zRAM | RAM \-> zswap \-> Disk |
    | **Performance** | Sehr hoch | Hoch (reduziert Disk-I/O) |
    | **Häufiger Einsatz** | Fedora, Android, ChromeOS | Ubuntu, Debian, Arch (optional) |

    ### Welches nutzen?

    – **zswap**, wenn du eine Swap-Partition/Datei hast. Es ist “sicherer”, weil bei Überlastung die Daten einfach auf die HD fließen können.

    – **zRAM**, wenn du max Performance willst oder gar keine HD-Swap nutzen möchtest (z. B. um eine SSD vor zu vielen Schreibzugriffen zu schützen).

    **Wichtig:** Du solltest **nicht beide gleichzeitig** auf dasselbe Ziel ansetzen, da dies zu doppelter Kompression führt, was CPU-Lstg verschwendet und die Latenz erhö

    0
  2. Gehört man heutzutage eigentlich zu den “Schönen, Reichen und ganz schön Reichen” wenn man 128 GB DDR5 ECC in seiner Workstation hat? 😂

    Spaß beiseite: ZRAM ist vom Prinzip das gleiche wie die Memory Compression bei macOS. Egal auf welchem OS, die Kompression geht immer zulasten der CPU und somit der Akkulaufzeit in Notebooks. Für unterwegs sollte man genau überlegen, ob einem dieser Trade-off das wert ist, dort zählt eigentlich Laufzeit und nicht maximales Multitasking.

    4
    1. Macht Sinn, habe dafür keine Statistiken gefunden wie “stark” das zu spüren ist.

      Wäre schon interessant wie das kosten/nutzen-Verhältnis ist.

      Wenn ich mit zram 10 Tabs mehr öffnen kann (simpel gesprochen) dafür aber “nur 15min” Verlust. wäre es ein adäquates Verhältnis, in meinen Augen.

      0
      1. Der Hauptvorteil ist eigentlich eher, dass der der Arbeitsspeicher natürlich viel schneller ist als eine Swap-Partition/Datei auf der SSD. Man muss das auch nicht irgendwie zusätzlich machen, sondern kann die Swap-Partition/Datei komplett ersetzen.

        Bezüglich der Kompression stellt sich IMHO die Frage, ob ein System, dass ständig große Datenmengen in eine Swap-Partition schreibt oder daraus liest, nicht sowieso so am Limit läuft, dass man eh nur noch zwischen Pest oder Cholera wählt.

        0
        1. Mir erschliesst sich der Sinn auch nicht so ganz. Wenn das System sowieso genug Ram hat, muss nicht geswapt werden, selbst wenn einige Prozesse mal pausieren. Vielleicht macht das in gewissen Anwendungsszenarien Sinn, die ich nicht kenne. Ich könnt mir aber vorstellen, dass man sowas bei Systemen nutzt, die “sauber” von einen Datenträger gebootet werden und möglichst komplett im Ram laufen, ohne “Spuren” zu hinterlassen. Oder für grosse Datenbanken, die ggf. viel swappen, aber auch schnell wieder die ausgelagerten Daten zur Verfügung bekommen sollen.

          0
          1. Durch die Kompression hat man effektiv halt mehr Speicher und kommt daher dann auch eher mit dem RAM aus. Ohne Swap auf der SSD geht “suspend to disk” natürlich nicht mehr, aber das nutzt heutzutage vermutlich auch keine Sau.

            0
            1. Etwas Ähnliches habe ich gerade auf meinem Jolla eingerichtet und kann damit das Auslösen des OOM-Killer des Kernels reduzieren.

              Die CPU Last für die Kompression ist kaum zu merken aber die Vorteile beim Multitasking sind wirklich spürbar.

              0
            1. Ich weiß, nicht ganz Thema bezogen. Aber vielleicht wäre eine originale Verlinkung hilfreicher für die Autoren die das ehrenamtlich machen.

              https://www.howtogeek.com/449691/what-is-swapiness-on-linux-and-how-to-change-it/

              Wukihow ist bekannt dafür, nur auf die SEO-Einnahmen abzuzielen und automatisiert content zu stehlen.

              Wenn man sich den Quelltest von WukiHow ansieht, sieht man sogar direkte Bild-Verlinkungen zu “howtogeek” aber es werden keine Quellen und Autoren im Text genannt.

              Genauso wie die Autoren von Linuxnews.de ist auch howtogeek.com auf direkte Nutzung angewiesen. Sowohl für Motivation als auch Einnahmen über geschaltete Werbung.

              Da muss man nicht noch extra einen Inhalts-Räuber posten. 🙂

              Die Community sollte Diebstahl keinen Platz geben! ^^

              0

Kommentar hinterlassen