Leistung des Raspberry Pi: ZRAM hinzufügen und Kernel-Parameter ändern

Vor ein paar Wochen habe ich gepostet Testbericht zum Pinebook Pro. Da Raspberry Pi 4 ebenfalls ARM-basiert ist, eignen sich einige der im vorherigen Artikel erwähnten Optimierungen durchaus dafür. Ich würde diese Tricks gerne weitergeben und sehen, ob Sie die gleichen Leistungsverbesserungen feststellen.

Nach der Installation des Raspberry Pi in Ihrem Serverraum zu Hause Mir ist aufgefallen, dass es in Momenten von RAM-Mangel sehr nicht mehr reagierte und sogar einfror. Um dieses Problem zu lösen, habe ich ZRAM hinzugefügt und einige Änderungen an den Kernel-Parametern vorgenommen.

ZRAM auf Raspberry Pi aktivieren

Leistung des Raspberry Pi: ZRAM hinzufügen und Kernel-Parameter ändern

ZRAM erstellt einen Blockspeicher im RAM mit dem Namen /dev/zram0 (oder 1, 2, 3 usw.). Die dort geschriebenen Seiten werden komprimiert und im Speicher abgelegt. Dies ermöglicht eine sehr schnelle E/A und gibt durch Komprimierung auch Speicher frei.

Der Raspberry Pi 4 ist mit 1, 2, 4 oder 8 GB RAM ausgestattet. Ich werde das 1-GB-Modell verwenden. Bitte passen Sie die Anweisungen entsprechend Ihrem Modell an. Bei 1 GB ZRAM wird die Standard-Auslagerungsdatei (langsam!) seltener verwendet. Ich habe dieses Skript verwendet Zram-Swap zur Installation und automatischen Konfiguration.

Anweisungen finden Sie im oben verlinkten Repository. 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 können Sie ZRAM durch die Installation aktivieren zram-tools. Wenn Sie diese Methode verwenden, müssen Sie unbedingt die Konfiguration bearbeiten im Ordner /etc/default/zramswap, und installieren Sie etwa 1 GB ZRAM:

sudo apt install zram-tools

Nach der Installation können Sie die ZRAM-Speicherstatistiken 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:~ $

Hinzufügen von Kernel-Parametern zur besseren Nutzung von ZRAM

Beheben wir nun das Verhalten des Systems, wenn der Raspberry Pi im letzten Moment auf Swapping umschaltet, was oft zu Einfrierungen führt. Fügen wir der Datei ein paar Zeilen hinzu /etc/sysctl.conf und neu starten.

Diese Zeilen 1) wird die unvermeidliche Erschöpfung des Gedächtnisses verzögern, was den Druck auf den Kernel-Cache erhöht und 2) Sie bereiten sich früher auf eine Gedächtniserschöpfung vor, wodurch der Austausch im Voraus eingeleitet wird. Aber es wird viel effizienter sein, komprimierten Speicher über ZRAM auszutauschen!

Hier sind die Zeilen, die am Ende der Datei hinzugefügt werden sollen /etc/sysctl.conf:

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

Anschließend starten wir das System neu oder aktivieren die Änderungen mit folgendem Befehl:

sudo sysctl --system

vm.vfs_cache_pression=500 erhöht den Cache-Druck, was die Tendenz des Kernels erhöht, Speicher zurückzugewinnen, der zum Zwischenspeichern von Verzeichnis- und Indexobjekten verwendet wird. Sie werden über einen längeren Zeitraum weniger Speicher verbrauchen. Der starke Leistungsabfall wird durch einen früheren Wechsel wieder aufgehoben.

vm.swappiness = 100 erhöht den Parameter, wie aggressiv der Kernel Speicherseiten austauscht, da wir zuerst ZRAM verwenden.

vm.dirty_background_ratio=1 & vm.dirty_ratio=50 - Hintergrundprozesse beginnen sofort mit der Aufzeichnung, wenn die Grenze von 1 % erreicht wird, aber das System erzwingt keine synchrone E/A, bis das Dirty_Ratio von 50 % erreicht ist.

Diese vier Leitungen (bei Verwendung mit ZRAM) tragen dazu bei, die Leistung zu verbessern, falls dies der Fall ist unvermeidlich Der RAM geht zur Neige und der Übergang zum Swap beginnt, wie bei mir. Wenn man diese Tatsache kennt und auch die Speicherkomprimierung im ZRAM um das Dreifache berücksichtigt, ist es besser, diesen Austausch im Voraus zu starten.

Es hilft, Druck auf den Cache auszuüben, weil wir dem Kernel im Wesentlichen sagen: „Hey, ich habe keinen zusätzlichen Speicher für den Cache, also entfernen Sie ihn bitte so schnell wie möglich und speichern Sie nur die am häufigsten verwendeten/wichtigsten.“ Daten."

Selbst bei reduziertem Caching beginnt der Kernel viel früher mit dem opportunistischen Auslagern, wenn im Laufe der Zeit der größte Teil des installierten Speichers belegt ist, sodass CPU (Komprimierung) und Auslagerungs-E/A nicht bis zur letzten Minute warten und dann alle Ressourcen auf einmal verbrauchen es ist zu spät. ZRAM beansprucht ein wenig CPU für die Komprimierung, hat aber auf den meisten Systemen mit wenig Speicher viel weniger Auswirkungen auf die Leistung als Swap ohne ZRAM.

Abschließend

Schauen wir uns das Ergebnis noch einmal an:

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 im ZRAM entspricht fast einem Gigabyte unkomprimierter Daten. Alles ging an ZRAM und nichts ging an die viel langsamere Auslagerungsdatei. Probieren Sie diese Einstellungen selbst aus, sie funktionieren auf allen Raspberry Pi-Modellen. Aus meinem unbrauchbaren Gefriersystem ist ein funktionsfähiges und stabiles System geworden.

Ich hoffe, diesen Artikel in naher Zukunft fortzusetzen und mit einigen Ergebnissen aus dem Testen des Systems vor und nach der Installation von ZRAM zu aktualisieren. Jetzt habe ich einfach keine Zeit dafür. Führen Sie in der Zwischenzeit gerne Ihre eigenen Tests durch und lassen Sie es mich in den Kommentaren wissen. Der Raspberry Pi 4 ist mit diesen Einstellungen ein Biest. Genießen!

Zum Thema:

Source: habr.com

Kommentar hinzufügen