Aktivieren eines PPAs (optional)
Installation von Programmen (optional)
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.
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
Die Installation kann auf zwei Wegen erfolgen: entweder man erstellt die benötigte Datei /etc/init/zramswap.conf 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 [2] mit Root-Rechten [3] 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
Ab Ubuntu 12.04 muss folgendes Skript verwendet werden:
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 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 es sich dann von selbst.
Ein Mitglied des Elementary OS-Teams bietet alternativ ein PPA für Ubuntu 11.04 oder neuer an. Dieses muss zuerst aktiviert werden [4].
Adresszeile zum Hinzufügen des PPAs:
ppa:shnatsel/zram
Zusätzliche Fremdquellen können das System gefährden.
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)
Nach einem Neustart wird es automatisch genutzt.
Hat man es manuell installiert, braucht nur die Datei /etc/init/zramswap.conf mit Root-Rechten [3] gelöscht werden.
Nutzt man das PPA, so kann das Paket zramswap-enabler über die Paketverwaltung deinstalliert werden.
In einigen Artikeln wird gesagt, 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
Diese Revision wurde am 29. April 2012 17:54 von aasche erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen:
Tuning, System
2004 – 2012 ubuntuusers.de • Einige Rechte vorbehalten