Openbox - ZRAM - Was es ist und wie man es verwendet

von Darrel Johnston (djohnston)


ZRAM (ehemals ramzswap) ist ein Blockgerät, das im Arbeitsspeicher Ihres Computers oder RAM erstellt wird. Es sieht aus und wirkt auf das System wie ein Festplattenlaufwerk. Dieses Festplattenlaufwerk hat jedoch nur eine Funktion, es fungiert zur Auslagerung (swap). Ein Unterschied zwischen ZRAM und einer normalen Swap-Partition besteht darin, dass die Seiten zu ZRAM komprimiert werden, bevor sie ausgelagert gespeichert werden. Diese Technik hat zwei Vorteile. (1) Weitere Seitendaten können gespeichert werden, da die Daten komprimiert sind. (2) Da der ausgelagerte Speicher im RAM gespeichert wird, anstatt auf einem normalen Laufwerk, sind die Zeiten für den Lese- und Schreibzugriff viel schneller.


Der Autor des Programms, nitingupta910, erwähnte auf seiner Google-Code Webseite eine weitere Nutzungsmöglichkeit. "Mit compcache im Hypervisor-Level können wir einen beliebigen Teil des Gast-Speicher transparent komprimieren - Dies gilt für jede Art von Gast-Betriebssystemen (Linux, Windows usw.). Dies sollte es ermöglichen, dass innerhalb des gesamten Host Speichers eine größere Anzahl von VMs ausgeführt werden können."


Melodie hat die ältere (ramzswap) Version auf den Live-CDs für Openbox Bonsai und Openbox full, "out of the Box" bereitgestellt (Wortspiel beabsichtigt). Sie hat die neue Version (ZRAM) bei der Openbox-Edu Live-CD aktiviert. Beide Versionen initialisieren ein Block-Gerät im RAM aus der Datei /etc/rc.d/rc.local. Die erste Version (ramzswap) erstellt das Gerät /dev/ramzswap0. Die Größe des ramzswap0-Geräts wird mithilfe der rzscontrol exeutable definiert. Die Standardgröße beträgt 15 % des Arbeitsspeichers. Das Gerät kann als Front-End für eine Swap-Partition auf einer Festplatte verwendet werden, indem Sie die Swap-Partition in der Datei rc.local wie folgt definieren.


# Ramzswap fungiert als Auslagerungs-front-end wenn
RAMZ_BACKING_SWAP definiert wurde.
# Schreibzugriffe werden an dieses Gerät weitergeleitet, wenn das Speicherlimit oder das Datenlimit erreicht ist
# kann nicht komprimiert werden.
# z.B. RAMZ_BACKING_SWAP="/dev/sda3"
RAMZ_BACKING_SWAP=""



Für die Kernel-Version 2.6.37 oder höher, ist das erstellte Gerät /dev/zram0. Die executable rzscontrol kann nicht verwendet werden, um das zram0-Gerät zu ändern, deswegen wird sie auch nicht mehr benötigt. Da ein anderes Kernelmodul verwendet wird, muss die ältere Datei /etc/rc.d/rc.local durch die neuere Version ersetzt werden. Dies können Sie hier erreichen. Wenn Sie die Standard-Parameter verwenden, wird das zram0-Gerät 25 % der Größe des verfügbaren RAMs haben. Wenn Sie 1 GB RAM zur Verfügung haben, wird das erstellte zram0-Gerät beispielsweise 256 MB groß sein, so dass Ihnen 768 MB RAM übrig bleiben. Die Standardgröße ist in dem Teil der rc.local-Datei definiert der unten angezeigt wird.


# Swap size = 25% des freien Speichers;
    ZRAM_SWAP_SIZE=$(($FREE_MEM/4))



echo $(($ZRAM_SWAP_SIZE * 1024 * 1024)) > /sys/block/zram0/disksize


Um die Größe in einen festen Betrag zu ändern, kommentieren sie die Zeile ZRAM_SWAP_SIZE = aus und ersetzen Sie die Zeichenfolge $(($ZRAM_SWAP_SIZE * 1024 * 1024)) durch eine feste Zahl, welche die gesamte Anzahl der Bytes beschreibt. Als Beispiel, um die feste Größe von 256 MB ZRAM zu bekommen, würden Sie die Datei rc.local folgendermaßen bearbeiten.


# Swap size = 25% des freien Speichers;
#    ZRAM_SWAP_SIZE=$(($FREE_MEM/4))



# Swap size = 256MB
echo 268435456 > /sys/block/zram0/disksize



Ich kann die Vorteile bei der Verwendung eines ZRAM-Gerätes nachvollziehen, und stimmen zu, dass das Speichern von virtuellen Maschinen in ZRAM Geräten eine effizientere Methode zur Nutzung des verfügbaren RAMs ist. Womit ich mich mit dem verstehen schwer tue, ist ob es auf dem Desktop oder Laptop gegenüber einer herkömmliche Swap-Partition außer der Geschwindigkeitsvorteil nützlicher ist.