Raspberry Pi-Leistung: Fügen Sie ZRAM hinzu und ändern Sie die Kernelparameter

Vor ein paar Wochen habe ich eine Rezension von Pinebook Pro veröffentlicht . Da Raspberry Pi 4 ebenfalls auf ARM basiert, sind einige der im vorherigen Artikel erwähnten Optimierungen gut dafür geeignet. Ich möchte diese Tricks teilen und herausfinden, ob Sie die gleichen Leistungsverbesserungen haben.

Nachdem ich Raspberry Pi in meinem Heimserverraum installiert hatte, bemerkte ich, dass es in Zeiten von RAM-Mangel sehr nicht mehr reagierte und sogar hängen blieb. Um dieses Problem zu lösen, habe ich ZRAM hinzugefügt und einige Änderungen an den Kernel-Parametern vorgenommen.

ZRAM-Aktivierung auf Raspberry Pi




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

Der Raspberry Pi 4 verfügt über 1, 2, 4 oder 8 GB RAM. Ich werde das 1-GB-Modell verwenden, also passen Sie die Anweisungen abhängig von Ihrem Modell an. Mit 1 GB ZRAM wird die Standard-Auslagerungsdatei (langsam!) Weniger häufig verwendet. Ich habe ein solches Zram-Swap- Skript für die Installation und automatische Konfiguration verwendet.

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 können Sie ZRAM durch Installation aktivieren zram-tools. Wenn Sie diese Methode verwenden, müssen Sie die Konfiguration in der Datei bearbeiten/etc/default/zramswap und ca. 1 GB ZRAM installieren:

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:~ $

Hinzufügen von Kernelparametern zur besseren Verwendung von ZRAM


Korrigieren Sie nun das Verhalten des Systems, wenn der Raspberry Pi im letzten Moment auf Swap umschaltet, was häufig zu Einfrierungen führt. Fügen Sie der Datei /etc/sysctl.conf einige Zeilen hinzu und starten Sie den Computer neu.

Diese Zeilen 1) verzögern die unvermeidliche Erschöpfung des Speichers , erhöhen den Druck auf den Kernel-Cache und 2) bereiten sich früher auf die Erschöpfung des Speichers vor und initiieren im Voraus einen Austausch. Aber es wird ein viel effizienterer Austausch von komprimiertem Speicher durch ZRAM sein!

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

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, wodurch die Tendenz des Kernels erhöht wird, den zum Zwischenspeichern von Verzeichnisobjekten und Indizes verwendeten Speicher zurückzugewinnen. Sie benötigen über einen längeren Zeitraum weniger Speicher. Ein starker Produktivitätsrückgang wird durch frühere Swaps zunichte gemacht.

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 nach Erreichen des Grenzwerts von 1% mit der Aufzeichnung, aber das System erzwingt keine synchronen E / A, bis das Dirty_Ratio von 50% erreicht ist.

Diese vier Zeilen (bei Verwendung mit ZRAM) tragen zur Verbesserung der Leistung bei, wenn Ihnen zwangsläufig der Arbeitsspeicher ausgeht und Sie wie bei Swap auf Swap umsteigen . Wenn Sie diese Tatsache kennen und die Speicherkomprimierung im ZRAM berücksichtigen, ist es dreimal besser, diesen Austausch im Voraus zu starten.

Druck auf den Cache hilft, weil wir dem Kernel tatsächlich sagen: "Hey, hör zu, ich habe keinen zusätzlichen Speicher für den Cache. Bitte entferne ihn so schnell wie möglich und behalte nur die am häufigsten verwendeten / wichtigen Daten."

Selbst bei reduziertem Caching startet der Kernel einen opportunistischen Swap viel früher, wenn im Laufe der Zeit der größte Teil des installierten Speichers belegt ist, sodass der Prozessor (Komprimierung) und die Swap-E / A nicht bis zum letzten ziehen und alle Ressourcen gleichzeitig nutzen, wenn es zu spät ist. ZRAM verwendet ein wenig CPU für die Komprimierung, aber auf den meisten Systemen mit wenig Speicher wirkt sich dies viel weniger auf die Leistung aus als ein 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 in ZRAM ist fast ein Gigabyte unkomprimierter Daten. Alles ging an ZRAM und nichts kam in die viel langsamere Auslagerungsdatei. Probieren Sie diese Einstellungen selbst aus, sie funktionieren bei allen Raspberry Pi-Modellen. Mein ungeeignetes Gefriersystem hat sich in ein funktionsfähiges und stabiles System verwandelt.

Ich hoffe, dass ich diesen Artikel in naher Zukunft mit einigen Ergebnissen von Systemtests vor und nach der Installation von ZRAM fortsetzen und aktualisieren kann. Jetzt habe ich einfach keine Zeit dafür. In der Zwischenzeit können Sie gerne Ihre eigenen Tests durchführen und uns dies in den Kommentaren mitteilen. Der Raspberry Pi 4 ist nur ein Biest mit solchen Einstellungen. Geniesse es!

Zu diesem Thema:

All Articles