Aktivieren Sie Zram in Ubuntu für eine bessere Leistung bei begrenztem RAM
Dies ist eine Schritt-für-Schritt-Anleitung, die zeigt, wie Sie das ZRAM-Kernel-Modul aktivieren und als Swap-Gerät verwenden, um eine bessere Systemleistung auf einem Ubuntu 24.04-PC/Laptop mit begrenztem RAM zu erzielen.
Wie Sie vielleicht wissen, enthält Ubuntu normalerweise einen Swap-Space. Es funktioniert wie der „virtuelle Speicher“ von MS Windows, der die Festplatte als zusätzlichen Speicher nutzt, wenn nicht genügend physischer RAM für alle Aufgabenanforderungen vorhanden ist.
Der Swap auf der Festplatte ist jedoch langsam, was die Gesamtsystemleistung verlangsamt. Daher führte Linux die Kernelmodule „zram“ und „zswap“ ein, um die Leistung von Computern mit wenig RAM zu verbessern.
Anstatt Swap auf der Festplatte zu verwenden, erstellt zram ein Blockgerät (nutzt zunächst keinen Speicher und wächst oder verkleinert sich dynamisch) im RAM, das als Swap-Speicherplatz verwendet werden kann. Es komprimiert die auszulagernden Daten und verschiebt sie dann in das Blockgerät. In diesem Fall wird weniger physischer Speicher für mehr Daten benötigt, während das System schneller läuft.
Ich habe darüber geschrieben, wie man zswap in Ubuntu aktiviert, um eine ähnliche Aufgabe zu erfüllen, indem man einen komprimierten RAM-Cache für Swap-Seiten bereitstellt. Hier zeige ich Ihnen, wie Sie stattdessen zram verwenden, das in Fedora und Pop!_OS standardmäßig aktiviert ist.
HINWEIS 1: Wenn Sie über ausreichend RAM verfügen, das selten Swap-Speicherplatz nutzt, oder wenn Sie an die CPU gebunden sind, dann halten Sie sich von zram oder zswap fern, da diese mehr CPU für die Komprimierung/Dekomprimierung verbrauchen.
HINWEIS 2: zram verhindert den Ruhezustand, damit es ordnungsgemäß funktioniert! Verwenden Sie stattdessen zswap, wenn Sie Ruhezustand auf der Festplatte benötigen.
Zswap deaktivieren (falls aktiviert)
Zswap verhindert, dass Zram effektiv genutzt wird. Wenn Sie es auf Ihrem Ubuntu-Rechner aktiviert haben, müssen Sie es zuerst deaktivieren, um zram auszuprobieren.
Um zu überprüfen, ob Zswap aktiviert ist, öffnen Sie einfach das Terminal (Strg+Alt+T) und führen Sie den folgenden Befehl aus:
systool -v -m zswap
Führen Sie sudo apt install sysfsutils
aus, wenn der Befehl nicht gefunden wird. In der Ausgabe bedeutet „enabled=„N““, dass die Funktion nicht aktiviert ist.
Wenn dort „enabled=„Y““ steht, können Sie den folgenden Befehl ausführen, um zswap zur Laufzeit zu deaktivieren (funktioniert bis zum Neustart):
echo 0 | sudo tee /sys/module/zswap/parameters/enabled
HINWEIS: Laut Kernel-Dokument werden die Daten in zswap NICHT sofort freigegeben. Sie müssen warten, bis sie entweder ungültig gemacht oder fehlerhaft in den Speicher zurückgeschrieben wurden, oder den Austausch manuell swapoff
und swapon
(falls erforderlich) erneut durchführen.
Wenn Sie zswap dauerhaft deaktivieren möchten, versuchen Sie, den Grub-Bootloader zu bearbeiten und die Kernel-Parameter für zswap (falls vorhanden) zu löschen.
sudo nano /etc/default/grub
Löschen Sie zswap.enabled=1
aus „GRUB_CMDLINE_LINUX_DEFAULT“ und führen Sie schließlich sudo update-grub
aus, um die Änderungen zu übernehmen.
Option 1: Zram zur Laufzeit aktivieren
Um das Kernel-Modul zur Laufzeit auszuprobieren, bis das System neu startet oder Sie es manuell deaktivieren, führen Sie einfach die folgenden Schritte aus, um das Modul manuell zu laden und den Swap-Speicherplatz einzurichten.
1. Drücken Sie zunächst Strg+Alt+T
auf der Tastatur, um ein Terminalfenster zu öffnen. Führen Sie dann den folgenden Befehl aus:
sudo modprobe zram
Der Befehl lädt das ZRAM-Modul und erstellt ein einzelnes Blockgerät im RAM. Dabei werden alle Konfigurationsdateien im Verzeichnis /sys/block/zram0
gespeichert.
Tipps: Bei Bedarf können Sie mehrere ZRAM-Blockgeräte im RAM erstellen. Wenn Sie beispielsweise sudo modprobe zram num_devices=4
ausführen, wird 4 erstellt, während sich die Konfigurationsdateien in /sys/block/zram{0, 1, 2, 3} befinden.
2. Wie Sie im letzten Screenshot sehen können, enthält das ZRAM-Blockgerät viele Konfigurationsdateien unter /sys/block/zram0
. Dazu gehören:
disksize
– Die maximale unkomprimierte Datenmenge, die gespeichert werden kann.mem_limit
– Der maximale physische Speicher, der zum Speichern komprimierter Daten verwendet werden kann.comp_algorithm
– Legen Sie den Komprimierungsalgorithmus fest. Zu den unterstützten Werten gehörenlzo
,z4
,lz4hc
,842
,zstd
. Siehe den Vergleich.max_comp_streams
– Die Anzahl möglicher Komprimierungsvorgänge, die gleichzeitig ausgeführt werden. Der Standardwert ist die Nummer Ihres CPU-Kerns.- Es gibt auch viele andere Konfigurationsoptionen. Weitere Informationen finden Sie im Kernel-Dokument.
Um die maximale unkomprimierte Datengröße festzulegen, die gespeichert werden kann, beispielsweise 4 GB (ersetzen Sie die Zahl entsprechend), verwenden Sie den folgenden Befehl:
echo 4G | sudo tee /sys/block/zram0/disksize
Um die maximale Speichergröße festzulegen, die zum Speichern komprimierter Daten verwendet werden kann, beispielsweise 2 GB (ersetzen Sie die Zahl entsprechend), verwenden Sie den folgenden Befehl:
echo 2G | sudo tee /sys/block/zram0/mem_limit
Und um den Komprimierungsalgorithmus festzulegen, verwenden Sie den folgenden Befehl:
echo lzo | sudo tee /sys/block/zram0/comp_algorithm
Ebenso können Sie den Befehl echo
verwenden, um andere Optionen für das ZRAM-Blockgerät zu konfigurieren.
3. Nachdem Sie das ZRAM-Blockgerät aktiviert und konfiguriert haben, können Sie den Befehl ausführen, um das Gerät als Swap-Bereich festzulegen:
sudo mkswap /dev/zram0
Aktivieren Sie abschließend den Swap-Bereich mit höherer Priorität über den folgenden Befehl:
sudo swapon --priority 100 /dev/zram0
4. Schließlich können Sie swapon
ausführen, um aktuelle Swap-Geräte zu identifizieren (zram muss die höchste Priorität haben). Führen Sie außerdem den folgenden Befehl aus, um die ZRAM-Statistiken zu überprüfen.
zramctl
In der Ausgabe:
- DISKSIZE – bezeichnet die maximale unkomprimierte Datengröße, die gespeichert werden kann.
- DATEN – bedeutet die aktuelle Größe der unkomprimierten Daten (in meinem Fall 1,1 GB).
- COMPR – die 1,1 G-Daten wurden auf 209,1 M komprimiert.
- TOTAL – ist die aktuelle Größe des physischen Speichers, den ZRAM verwendet (Metadaten + komprimierte Daten).
5. (Optional) Um das volle Potenzial der zram-Vorteile auszuschöpfen, können Sie den Systemaustausch über die folgenden 4 Befehle konfigurieren:
echo 180 | sudo tee /proc/sys/vm/swappiness
echo 0 | sudo tee /proc/sys/vm/watermark_boost_factor
echo 125 | sudo tee /proc/sys/vm/watermark_scale_factor
echo 0 | sudo tee /proc/sys/vm/page-cluster
Es handelt sich um Standard-Swap-Einstellungen in Pop!_OS, die in meinem Fall jedoch NICHT getestet wurden.
(Optional) Um ZRAM zur Laufzeit zu deaktivieren, starten Sie entweder Ihren Computer neu oder führen Sie die beiden folgenden Befehle aus, um den Auslagerungsbereich zu deaktivieren und das ZRAM-Modul zu entladen:
sudo swapoff /dev/zram0
sudo modprobe --remove zram
Option 2: Zram beim Start aktivieren (permanent machen)
Die Schritte in „Option 1“ bleiben nach dem Neustart NICHT bestehen. Wenn ZRAM auf Ihrem Computer gut funktioniert, können Sie stattdessen die folgenden Schritte ausführen, um es dauerhaft zu machen.
HINWEIS: In den folgenden Schritten verwende ich den Befehlszeilentexteditor nano
zum Bearbeiten von Konfigurationsdateien, der auf den meisten Desktops funktioniert. Sie können es wahlweise durch gnome-text-editor
für 24.04 mit Standard-GNOME, gedit
für 22.04 und früher mit Standard-GNOME, mousepad
ersetzen für XFCE, xed
für Linux Mint Cinnamon oder einen anderen Texteditor entsprechend Ihrer Desktop-Umgebung.
1. Führen Sie zunächst den Befehl aus, um eine Konfigurationsdatei zum Laden des ZRAM-Moduls beim Booten zu erstellen (und zu bearbeiten):
sudo nano /etc/modules-load.d/zram.conf
Wenn die Datei geöffnet wird, schreiben Sie einfach zram hinein. Drücken Sie dann Strg+S zum Speichern und Strg+X zum Beenden.
Tipps: Wenn Sie mehrere ZRAM-Blockgeräte im RAM erstellen möchten, erstellen Sie mit dem folgenden Befehl eine weitere Datei:
sudo nano /etc/modprobe.d/zram.conf
Schreiben Sie dann options zram num_devices=1
(ändern Sie die Nummer nach Ihren Wünschen).
2. Führen Sie als Nächstes den Befehl aus, um eine udev-Regeldatei zum Konfigurieren der ZRAM-Geräteoptionen zu erstellen.
sudo nano /etc/udev/rules.d/99-zram.rules
Wenn die Datei geöffnet wird, fügen Sie die folgende Zeile hinzu (HINWEIS: Die Zeile enthält sowohl „==“ als auch „=“):
ACTION=="add", KERNEL=="zram0", ATTR{comp_algorithm}="lto", ATTR{disksize}="4G", ATTR{mem_limit}="2G"
Ändern Sie hier die Werte von „disksize“, „mem_limit“ und „comp_algorithm“ entsprechend Ihren Anforderungen. Fügen Sie für mehrere ZRAM-Geräte weitere Zeilen mit unterschiedlichen Gerätenamen für KERNEL hinzu (zram1, zram2, …).
3. Das Arch Linux-Wiki fordert die Verwendung von udev-Regel + /etc/fstab
auf, um das ZRAM-Gerät beim Start automatisch als Swap zu erstellen und zu verwenden. Es verursacht jedoch in meinem Fall in Ubuntu 24.04 das Problem „Aktivierung von Swap dev-zram0.swap fehlgeschlagen“.
Stattdessen funktioniert das Erstellen eines Systemd-Dienstes in meinem Fall so, dass er das ZRAM-Blockgerät automatisch einrichtet und als Swap aktiviert. Führen Sie zunächst den Befehl aus, um eine Servicedatei zu erstellen:
sudo nano /etc/systemd/system/zram.service
Wenn die Datei geöffnet wird, fügen Sie den folgenden Inhalt hinzu und speichern Sie ihn (Strg+S, dann Strg+X).
[Unit]
Description=Swap with zram
After=multi-user.target
[Service]
Type=oneshot
RemainAfterExit=true
ExecStartPre=/sbin/mkswap /dev/zram0
ExecStart=/sbin/swapon -p 100 /dev/zram0
ExecStop=/sbin/swapoff /dev/zram0
[Install]
WantedBy=multi-user.target
Führen Sie nach dem Speichern der Datei den Befehl systemctl enable zram
aus, um den Dienst zu aktivieren
(Optional) Wenn Sie die Pop!_OS-Swap-Konfiguration nutzen möchten, um das volle Potenzial der ZRAM-Vorteile auszuschöpfen, führen Sie den Befehl aus, um eine Konfigurationsdatei zu erstellen:
sudo nano /etc/sysctl.d/99-vm-zram-parameters.conf
Fügen Sie die folgenden Zeilen hinzu und speichern Sie.
vm.swappiness = 180
vm.watermark_boost_factor = 0
vm.watermark_scale_factor = 125
vm.page-cluster = 0
Wenn alles erledigt ist, starten Sie den Computer neu und führen Sie zur Überprüfung die Befehle swapon
und zramctl
aus.
Um „Option 2“ rückgängig zu machen, führen Sie zunächst systemctl disable zram
aus, um den Dienst zu deaktivieren, und löschen Sie dann alle von Ihnen erstellten Dateien, indem Sie nano
ersetzen mit rm
in den obigen Befehlen.