Ubuntu 12.10 „Quantal Quetzal“
Ubuntu 12.04 „Precise Pangolin“
Ubuntu 11.10 „Oneiric Ocelot“
Gerade auf Systemen mit wenig Arbeitsspeicher kommt es hin und wieder vor, dass dieser knapp wird und das System beginnt, den Swap-Speicher zu nutzen. Da sich dieser auf der Festplatte befindet, ist er im Vergleich zum RAM relativ langsam. Der Nutzer merkt das in Form von langsamen Programmen, springenden Mauszeigern oder einem komplett ausgelasteten System.
Abhilfe schafft eine im Linux-Kernel integrierte Technik: zRam (Virtual Swap Compressed in RAM, früher als "compcache" bekannt). Nutzt man diese Technik, so wird ein komprimiertes Blockgerät direkt im Arbeitsspeicher des Computers erstellt. Auf diese Art können mehr Daten im Arbeitsspeicher gehalten werden. Dies führt dazu, dass das System nicht so schnell auf eine langsame Festplatte schreiben muss – der Preis ist eine etwas höhere Prozessorauslastung.
Grundsätzlich für jeden. Jedoch macht es kaum bis wenig Sinn, es auf Computern mit 4 GiB oder mehr Arbeitsspeicher zu aktivieren. Diese Computer besitzen ausreichend Speicher und müssen deshalb sehr selten (oder gar nicht) in den Swap schreiben. Aber mit weniger Speicher ist zRam einen Versuch wert. Positive Berichte liegen für Systeme mit 512 MiB bis 2 GiB RAM vor. Wie der Swap-Speicher genutzt wird, kann man vorher mittels Swap überwachen herausbekommen.
Einzige Voraussetzung ist ein Kernel ab 2.6.37 oder neuer. Wer sich unsicher ist, welche Kernel-Version vorhanden ist, benutzt den Befehl [1]:
uname -r
Nach der Installation ist ein Neustart des Rechners erforderlich.
Man installiert [2] das folgende Paket:
zram-config (unter Ubuntu 12.04 noch in universe)
mit apturl
Paketliste zum Kopieren:
sudo apt-get install zram-config
sudo aptitude install zram-config
Die Installation kann auf zwei Wegen erfolgen: entweder man erstellt die benötigte Konfigurationsdatei selbst oder nutzt ein "Personal Package Archiv" (PPA).
Das Team des Elementary OS hat hierfür ein Upstart-Script erstellt, das zRam auf einfache Weise aktiviert. Man markiert den folgenden Textblock, kopiert ihn, öffnet einen Editor [3] mit Root-Rechten [4] und fügt ihn wieder ein:
description "Initializes zram swapping" start on runlevel [2345] stop on runlevel [!2345] pre-start script # get the number of CPUs num_cpus=$(grep -c processor /proc/cpuinfo) # if something goes wrong, assume we have 1 [ "$num_cpus" != 0 ] || num_cpus=1 # set decremented number of CPUs decr_num_cpus=$((num_cpus - 1)) # get the amount of memory in the machine mem_total_kb=$(grep MemTotal /proc/meminfo | grep -E --only-matching '[[:digit:]]+') mem_total=$((mem_total_kb * 1024)) # load dependency modules modprobe zram num_devices=$num_cpus # initialize the devices for i in $(seq 0 $decr_num_cpus); do echo $((mem_total / num_cpus)) > /sys/block/zram$i/disksize done # Creating swap filesystems for i in $(seq 0 $decr_num_cpus); do mkswap /dev/zram$i done # Switch the swaps on for i in $(seq 0 $decr_num_cpus); do swapon -p 100 /dev/zram$i done end script post-stop script # get the number of CPUs num_cpus=$(grep -c processor /proc/cpuinfo) # set decremented number of CPUs decr_num_cpus=$((num_cpus - 1)) # Switching off swap for i in $(seq 0 $decr_num_cpus); do if [ "$(grep /dev/zram$i /proc/swaps)" != "" ]; then swapoff /dev/zram$i fi done rmmod zram end script
Nun speichert man die Datei als /etc/init/zramswap.conf ab. Nach einem Neustart aktiviert sich zRam dann von selbst.
Ein Mitglied des Elementary OS-Teams bietet alternativ ein PPA [5] für Ubuntu 11.04 oder neuer an.
Adresszeile zum Hinzufügen des PPAs:
ppa:shnatsel/zram
Zusätzliche Fremdquellen können das System gefährden.
Ein PPA unterstützt nicht zwangsläufig alle Ubuntu-Versionen. Weitere Informationen bietet die PPA-Beschreibung vom Benutzer/Team shnatsel.
Damit Pakete aus dem PPA genutzt werden können, müssen die Paketquellen neu eingelesen werden.
Nach dem Aktualisieren der Paketquellen kann nun das folgende Paket installiert [5] werden:
zramswap-enabler (ppa)
mit apturl
Paketliste zum Kopieren:
sudo apt-get install zramswap-enabler
sudo aptitude install zramswap-enabler
Nach einem Neustart wird zRAM automatisch genutzt.
Folgender Befehl zeigt, ob zRam aktiv ist:
swapon -s
Beispielausgabe:
Filename Type Size Used Priority /dev/zram0 partition 1955620 0 100 /dev/sdb3 partition 791036 0 -1
Neben einer kleinen Swap-Partition auf /dev/sdb3 werden hier 2 GiB für zRam genutzt.
Hat man es manuell installiert, braucht nur die Datei /etc/init/zramswap.conf mit Root-Rechten [3] gelöscht werden. Hat man die offiziellen Paketquellen oder das PPA genutzt, so kann das jeweilige Paket über die Paketverwaltung deinstalliert werden.
Anschließend muss der Rechner neu gestartet werden.
In einigen Quellen wird behauptet, dass es mit manchen Grafikkarten (und -Treibern) zu Problemen kommen kann. Sollte dies der Fall sein, ist zRam wieder zu entfernen.
Das ist ganz normal, da zRam sich als Swap hinzufügt. Den "alten" Swap sollte man jedoch nicht entfernen, da er z.B. für den Ruhezustand genutzt wird.
Increased Performance In Linux With zRam - Webupd8 10/2011
Performance Test für zRam
Using zram (was compcache) - manuell über /etc/rc.local starten, Blogbeitrag 01/2011