1809549

Komprimiertes RAM für mehr Speicher

16.08.2013 | 12:03 Uhr |

Das Kernel-Modul ZRAM erstellt im RAM komprimierende Blockgeräte, in der sich mehr Daten unterbringen lassen. Im Idealfall verdreifacht dies den verfügbaren Speicher.

Arbeitsspeicher ist heute kein knappes Gut, und in aktuellen PCs und Notebooks steckt meist mehr als genug RAM. Anders steht es um ältere Notebooks und Netbooks, die sich nur schwer um zusätzliche RAM-Module erweitern lassen. Auch virtuelle Maschinen unter Virtualbox, Vmware, XEN und in der KVM (Kernel Virtual Machine) müssen sich mit begrenzten Systemressourcen begnügen. Ist der Arbeitsspeicher voll ausgelastet, beginnt Linux damit, zunächst unbenötigte Speicherseiten auf der Festplatte in den Swap-Bereich auszulagern, was auf Desktop-Systemen stets zu deutlichen Leistungseinbrüchen führt. ZRAM ist eine interessante Alternative bei Speicherknappheit.

Mehr Platz durch Kompression

Das Modul ZRAM zwackt bei Bedarf einen Teil des Arbeitsspeichers ab, um dort eine RAM-Disk anzulegen, die als schneller Auslagerungsspeicher bei Engpässen dient. Zudem werden die ausgelagerten Daten dabei komprimiert, um den Speicher möglichst effizient zu nutzen. Die zusätzlichen Ressourcen gibt es zwar nicht zum Nulltarif, denn die transparente Komprimierung erfordert CPU-Leistung. Das langsame Swappen auf der Festplatte schlägt ZRAM aber immer noch um Längen. Mit der Idee effizienter Speichernutzung experimentiert der Linux-Kernel schon eine Weile: Die Entwicklung begann 2009 mit dem Modul Compcache in der 2.6er-Serie des Linux-Kernels. Trotz fallender Speicherpreise und großzügiger Ausstattung neuer PCs und Server köchelte die Entwicklung auf kleiner Flamme weiter. Seit Kernel 3.8 hat das Modul mit dem neuen Namen ZRAM die Testphase verlassen und soll in Zukunft insbesondere auf Mobilgeräten Speicherengpässe beseitigen. Google will ZRAM als Standard-Feature in das Linux-basierte Chrome-OS übernehmen. Auch das Live-System Knoppix setzt seit Version 7.0.1 auf ZRAM.

Hardware mit Linux im Griff behalten

Kernel-Meldungen nach dem Start von ZRAM: Nach der Installation von ZRAM ist das Modul sofort aktiv. Den reservierten Speicher sehen Sie in der Ausgabe des Befehls dmesg.
Vergrößern Kernel-Meldungen nach dem Start von ZRAM: Nach der Installation von ZRAM ist das Modul sofort aktiv. Den reservierten Speicher sehen Sie in der Ausgabe des Befehls dmesg.

Installation in Ubuntu und Mint
Das Modul findet sich in den Paketquellen von Ubuntu und lässt sich ab Ubuntu 12.04 mit Langzeitsupport beziehungsweise in Linux Mint ab Version 13 mit minimalen Aufwand über den Paketmanager einrichten. In einem Terminal-Fenster installieren Sie das benötigte Paket:

sudo apt-get install zram-config

Dabei werden auch gleich die passenden Start-Scripts mitgeliefert und eingerichtet. Das Modul ist sofort aktiv, und mit der Eingabe von dmesg zur Anzeige der Kernel-Meldungen überprüfen Sie den Start von ZRAM. Sie sehen dort, wie viel Arbeitsspeicher es sich reserviert hat. Die Ausgabe in den Kernel-Meldungen zu ZRAM lautet beispielsweise „Adding 1032532k swap on /dev/zram0“. In diesem Fall wurde das virtuelle Blockgerät /dev/zram0 mit einer Größe von 1032532 KB (1008 MB) im RAM erstellt, das für das System wie eine Festplatte aussieht. Zudem wird „/dev/zram0“ gleich als Swap-Bereich eingerichtet, was Sie mit dem Befehl

cat /proc/swaps

sehen. Die Ausgabe zeigt alle verfügbaren Swap-Partitionen an. Der Clou ist, dass dieser reservierte Speicher nicht wie bei einer RAM-Disk mit fixer Größe sofort vom Arbeitsspeicher abgezogen wird, denn zunächst braucht ZRAM nur einige KB für Verwaltung und Overhead. Erst wenn sich der Swap-Bereich füllt, geht der Speicher anteilsmäßig vom physikalisch vorhandenen RAM ab.

Komprimierter Auslagerungsspeicher im RAM: Das Blockgerät „/dev/zram0“ wird zuerst gefüllt, bevor das System den tatsächlichen Swap-Speicher der Festplatte nutzt.
Vergrößern Komprimierter Auslagerungsspeicher im RAM: Das Blockgerät „/dev/zram0“ wird zuerst gefüllt, bevor das System den tatsächlichen Swap-Speicher der Festplatte nutzt.

ZRAM in der Praxis
In den Standardeinstellungen reserviert sich ZRAM die Hälfte des verfügbaren Arbeitsspeichers, teilt diesen durch die Anzahl der verfügbaren CPU-Kerne und richtet pro Kern ein eigenes Blockgerät ein. Hat der Prozessor zwei Kerne, erstellt ZRAM beispielsweise zwei Swap-Partitionen mit der Bezeichnung „ /dev/zram0 “ und „ /dev/zram1 “. Diese Aufteilung verbessert die Leistung während der Kompression, da sich so jeder Kern um einen Swap-Bereich kümmern kann. Als Kompressionsalgorithmus kommt LZO (Lempel–Ziv–Oberhumer) zum Einsatz, da dieser für die Echtzeitkompression geeignet ist und Verarbeitungsgeschwindigkeit vor Kompressionsrate stellt. In der Praxis packt LZO etwas schlechter als Gzip, ist dafür aber um den Faktor fünf schneller. Eine Änderung der Parameter ist übrigens nicht vorgesehen, denn die Standardwerte sind fest im Start-Script von ZRAM vorgegeben.

SSDs unter Linux optimal eingesetzt

Benchmark 1: Der Arbeitsspeicher wurde mit einer fixen RAM-Disk reduziert, bis das Testsystem mit 2 GB RAM zu swappen begann. Die Messung erfolgte über die interne Gecko-API von Firefox.
Vergrößern Benchmark 1: Der Arbeitsspeicher wurde mit einer fixen RAM-Disk reduziert, bis das Testsystem mit 2 GB RAM zu swappen begann. Die Messung erfolgte über die interne Gecko-API von Firefox.

Performance und Fazit
Zum Test, ob ZRAM hält, was es verspricht, diente ein abgestaubtes Notebook mit 2 GB RAM und einem Intel-M-Prozessor, der mit 1,5 GHz getaktet ist – ein typisches Modell aus dem letzten Jahrzehnt, aber zum Entsorgen zu schade. Das installierte Betriebssystem ist ein Ubuntu 12.04 LTS. Um ZRAM etwas zu tun zu geben, wurden für einen systematischen Test nicht einfach eine Menge Programme gestartet.

Benchmark 2: Der Datenbanksimulation HMMer Search stand der komplette Speicher zur Verfügung. Auch bei diesem Test mit hoher Prozessor- und RAM-Auslastung schlägt sich ZRAM wacker.
Vergrößern Benchmark 2: Der Datenbanksimulation HMMer Search stand der komplette Speicher zur Verfügung. Auch bei diesem Test mit hoher Prozessor- und RAM-Auslastung schlägt sich ZRAM wacker.

Stattdessen reduzierte erst eine manuell angelegte, statische RAM-Disk den verfügbaren Speicher auf ein Minimum. Die RAM-Disk lässt sich mit

sudo mount -t tmpfs -o size=1600M /mnt/tmp /mnt/tmp

anlegen, hier beispielsweise am Mount-Punkt „/mnt/tmp“ und mit einem Umfang von 1600 MB. Restlos mit Daten füllt dann der Befehl

sudo dd if=/dev/zero of=/mnt/tmp/test bs=1M

die RAM-Disk, deren Größe nun dem Arbeitsspeicher abgeht. Anschließend wurden die Startzeiten von Firefox gemessen – mit und ohne ZRAM. Als weiterer Benchmark diente die Datenbanksimulation „HMMer Search“ aus der Phoronix-Testsuite mit intensiver Speichernutzung.

In den Ergebnissen zeigt sich, dass ZRAM zwar keine Wunder vollbringt, denn der gemessene Geschwindigkeitsvorteil ist gering. Erstaunlich ist dagegen, dass die Systemleistung nicht abnimmt, schließlich ist ZRAM ein Kompromiss zwischen physikalischem Arbeitsspeicher und Swappen auf Festplatte, noch dazu mit LZO-Kompression. Empfehlenswert ist der Einsatz von ZRAM deshalb auf Rechnern und Notebooks mit wenig Arbeitsspeicher bis zu zwei GB. Denn hier reduziert es spürbar die typischen Hänger während der Swap-Nutzung – und der Desktop reagiert weiterhin flüssig.

0 Kommentare zu diesem Artikel
1809549