Leistung des Raspberry Pi: Wir fĂŒgen ZRAM hinzu und Ă€ndern die Kernelparameter

Vor ein paar Wochen habe ich eine Rezension des Pinebook Proveröffentlicht. Da der Raspberry Pi 4 ebenfalls auf ARM basiert, sind einige der in dem vorherigen Artikel erwÀhnten Optimierungen durchaus geeignet. Ich möchte diese Tricks teilen und herausfinden, ob sich bei Ihnen Àhnliche Leistungsverbesserungen zeigen.

Nach der Installation des Raspberry Pi in meinem Heimserver stellte ich fest, dass er in Momenten mit unzureichendem Arbeitsspeicher sehr trĂ€ge wurde und sogar hĂ€ngen blieb. Um dieses Problem zu lösen, habe ich ZRAM hinzugefĂŒgt und einige Änderungen an den Kernelparametern vorgenommen.

Aktivierung von ZRAM auf dem Raspberry Pi

Leistung des Raspberry Pi: Wir fĂŒgen ZRAM hinzu und Ă€ndern die Kernelparameter

ZRAM erzeugt im Arbeitsspeicher ein BlockspeichergerÀt mit dem Namen /dev/zram0 (oder 1, 2, 3 usw.). Die dort gespeicherten Seiten werden komprimiert und im Speicher gehalten. Dies ermöglicht sehr schnelle Ein- und Ausgaben und schafft durch Kompression Speicherplatz frei.

Der Raspberry Pi 4 ist mit 1, 2, 4 oder 8 GB RAM ausgestattet. Ich werde das Modell mit 1 GB verwenden, also passen Sie die Anleitung je nach Ihrem Modell an. Mit 1 GB wird die standardmĂ€ĂŸige Swap-Datei (langsam!) seltener verwendet. Ich habe folgendes Skript verwendet zram-swap fĂŒr die Installation und automatische Konfiguration.

Die Anweisungen finden Sie im Repository unter dem obigen Link. Installation:

git clone https://github.com/foundObjects/zram-swap.git
cd zram-swap && sudo ./install.sh

Wenn Sie die Konfiguration bearbeiten möchten:

vi /etc/default/zram-swap

DarĂŒber hinaus kann ZRAM durch die Installation von zram-tools. aktiviert werden. Wenn Sie diese Methode verwenden, stellen Sie sicher, dass Sie die Konfiguration bearbeiten in der Datei /etc/default/zramswap, und richten Sie etwa 1 GB ZRAM ein:

sudo apt install zram-tools

Nach der Installation können Sie die ZRAM-Speicherstatistik mit dem folgenden Befehl anzeigen:

sudo cat /proc/swaps
Filename				Type		Size	Used	Priority
/var/swap                               file		102396	0	-2
/dev/zram0                              partition	1185368	265472	5
pi@raspberrypi:~ $

Kernelparameter fĂŒr eine bessere Nutzung von ZRAM hinzufĂŒgen

Jetzt verbessern wir das Verhalten des Systems, wenn der Raspberry Pi im letzten Moment auf Swap umschaltet, was oft zu HĂ€ngern fĂŒhrt. FĂŒgen wir einige Zeilen in die Datei ein /etc/sysctl.conf und starten wir neu.

Diese Zeilen 1) verzögern das unvermeidliche Speichererschöpfung, indem sie den Druck auf den Kernel-Cache erhöhen und 2) leisten frĂŒhzeitig Vorbereitungen fĂŒr den Speicherabbau, indem sie das Swapping im Voraus initiieren. Aber es wird ein viel effizienteres Swapping mit komprimiertem Speicher ĂŒber ZRAM sein!

Hier sind die Zeilen, die am Ende der Datei hinzugefĂŒgt werden mĂŒssen /etc/sysctl.conf:

vm.vfs_cache_pressure=500
vm.swappiness=100
vm.dirty_background_ratio=1
vm.dirty_ratio=50

Dann starten wir das System neu oder aktivieren die Änderungen mit dem folgenden Befehl:

sudo sysctl --system

vm.vfs_cache_pressure=500 erhöht den Druck auf den Cache, was die Neigung des Kernels erhöht, den fĂŒr das Caching von Verzeichniss- und Indexobjekten verwendeten Speicher zurĂŒckzuholen. Sie benötigen ĂŒber einen lĂ€ngeren Zeitraum weniger Speicher. Ein drastischer Leistungsabfall wird durch hĂ€ufigeres Swapping ausgeglichen.

vm.swappiness=100 erhöht den Parameter, wie aggressiv der Kernel Seiten aus dem Speicher swappen wird, da wir zunÀchst ZRAM verwenden.

vm.dirty_background_ratio=1 & vm.dirty_ratio=50 — Hintergrundprozesse beginnen sofort mit dem Schreiben, sobald das Limit von 1 % erreicht ist, aber das System wird keine erzwungenen synchronen Ein-/Ausgaben durchfĂŒhren, bis es das dirty_ratio von 50 % erreicht.

Diese vier Zeilen (in Verbindung mit ZRAM) helfen, die Leistung zu verbessern, falls Sie unweigerlich an den Ende Ihres Arbeitsspeichers geraten und auf Swapping umschalten, wie es bei mir der Fall ist. In Anbetracht dieser Tatsache und auch aufgrund der dreifachen Kompression des Speichers in ZRAM ist es besser, mit dem Swapping frĂŒhzeitig zu beginnen.

Der Druck auf den Cache hilft, da wir dem Kernel tatsĂ€chlich sagen: „Hey, hör zu, ich habe keinen zusĂ€tzlichen Speicher, um ihn fĂŒr den Cache zu verwenden, also bitte befreie ihn so schnell wie möglich und speichere nur die hĂ€ufigsten/wichtigsten Daten.“

Selbst bei reduziertem Caching, wenn im Laufe der Zeit der Großteil des verfĂŒgbaren Speichers belegt ist, wird der Kernel viel frĂŒher opportunistisch swappen, sodass die CPU (Kompression) und der Swapping-Ein-/Ausgabe nicht bis zur letzten Minute warten und nicht alle Ressourcen auf einmal beanspruchen, wenn es bereits zu spĂ€t ist. ZRAM benötigt etwas CPU fĂŒr die Kompression, aber in den meisten Systemen mit wenig Speicher hat das viel weniger Auswirkungen auf die Leistung als Swapping ohne ZRAM.

Abschließend

Lassen Sie uns noch einmal das Ergebnis betrachten:

pi@raspberrypi:~ $ free -h
total used free shared buff/cache available
Mem: 926Mi 471Mi 68Mi 168Mi 385Mi 232Mi
Swap: 1.2Gi 258Mi 999Mi

pi@raspberrypi:~ $ sudo cat /proc/swaps 
Filename Type Size Used Priority
/var/swap file 102396 0 -2
/dev/zram0 partition 1185368 264448 5

264448 in ZRAM ist fast ein Gigabyte unkomprimierter Daten. Alles ist in ZRAM gegangen und nichts hat es in die viel langsamere Swap-Datei geschafft. Probieren Sie selbst solche Einstellungen aus, sie funktionieren bei allen Modellen von Raspberry Pi. Bei mir hat sich ein instabiles System in ein funktionierendes und stabiles verwandelt.

In naher Zukunft hoffe ich, diesen Artikel mit einigen Ergebnissen der Tests des Systems vor und nach der Installation von ZRAM fortzusetzen und zu aktualisieren. Momentan habe ich einfach nicht die Zeit dafĂŒr. In der Zwischenzeit scheuen Sie sich nicht, Ihre eigenen Tests durchzufĂŒhren und lassen Sie es mich in den Kommentaren wissen. Der Raspberry Pi 4 ist mit diesen Einstellungen einfach ein Biest. Viel Spaß!

Zum Thema:

Quelle: habr.com

60GB SSD 8Gb DDR4