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

Vor ein paar Wochen habe ich eine Übersicht über das Pinebook Pro veröffentlicht. Da das Raspberry Pi 4 ebenfalls auf ARM basiert, sind einige der in dem vorherigen Artikel erwähnten Optimierungen durchaus passend. Ich möchte diese Tricks teilen und erfahren, ob Sie ähnliche Leistungsverbesserungen feststellen können.

Nachdem ich die Raspberry Pi in meiner Heimserver-Umgebung installiert hatte, bemerkte ich, dass sie in Zeiten von Speichermangel sehr unempfindlich wurde und sogar eingefroren ist. Um dieses Problem zu lösen, habe ich ZRAM hinzugefügt und einige Änderungen an den Kernel-Einstellungen vorgenommen.

Aktivierung von ZRAM auf Raspberry Pi

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

ZRAM erstellt im RAM einen Blockspeicher 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 Ausgabe und schafft zusätzlichen Speicherplatz durch Kompression.

Das 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 Standard-Swap-Datei (langsam!) seltener verwendet. Ich habe dieses Skript verwendet zram-swap zur Installation und automatischen 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 können Sie ZRAM aktivieren, indem Sie zram-tools. verwenden. Wenn Sie diese Methode nutzen, bearbeiten Sie unbedingt die Konfiguration in der Datei /etc/default/zramswap, und stellen Sie etwa 1 GB ZRAM bereit:

sudo apt install zram-tools

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

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

Fügen Sie Kernel-Parameter für eine bessere Nutzung von ZRAM hinzu

Jetzt verbessern wir das Systemverhalten, wenn der Raspberry Pi zuletzt auf Swap umschaltet, was oft zu Einfrierungen führt. Fügen Sie einige Zeilen in die Datei ein /etc/sysctl.conf und starten Sie neu.

Diese Zeilen 1) verzögern das unvermeidliche Auffüllen des Speichers, erhöhen den Druck auf den Kernel-Cache und 2) bereiten sich früher auf das Speicherauslaufen vor, indem sie das Swapping im Voraus initiieren. Aber dies wird eine viel effizientere Kompression über ZRAM ermöglichen!

Hier sind die Zeilen, die Sie am Ende der Datei hinzufügen sollten. /etc/sysctl.conf:

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

Starten Sie das System neu oder aktivieren Sie die Änderungen mit dem folgenden Befehl:

sudo sysctl --system

vm.vfs_cache_pressure=500 erhöht den Druck auf den Cache, was die Tendenz des Kernels erhöht, den für die Zwischenspeicherung von Verzeichnisobjekten und Indizes verwendeten Speicher zurückzugewinnen. Dadurch wird weniger Speicher über einen längeren Zeitraum verwendet. Ein plötzlicher Leistungsabfall wird durch das frühzeitige Swapping ausgeglichen.

vm.swappiness=100 erhöht den Wert, wie aggressiv der Kernel Seiten im Speicher swappen wird, da wir zuerst ZRAM verwenden.

vm.dirty_background_ratio=1 & vm.dirty_ratio=50 — Hintergrundprozesse beginnen sofort mit dem Schreiben, sobald das Limit von 1% erreicht ist, jedoch wird das System nicht gezwungen, synchrone E/A durchzuführen, bis das dirty_ratio von 50% erreicht ist.

Diese vier Zeilen (in Verbindung mit ZRAM) werden die Leistung verbessern, falls Sie unvermeidlich Speichermangel erleben und mit Swapping beginnen, so wie es mir ergangen ist. Angesichts dieser Tatsache sowie der dreimal besseren Kompression des Speichers in ZRAM ist es besser, mit dem Swapping frühzeitig zu beginnen.

Der Druck auf den Cache ist wichtig, denn damit sagen wir dem Kern: „Hey, hör zu, ich habe keinen zusätzlichen Speicher, um ihn für den Cache zu verwenden, also befreie ihn so schnell wie möglich und speichere nur die am häufigsten verwendeten/wichtigsten Daten.“

Selbst bei reduziertem Caching, wenn über die Zeit der Großteil des verfügbaren Speichers belegt ist, wird der Kern viel früher mit dem opportunistischen Swappen beginnen. So werden Prozessor (Kompression) und der Ein-/Ausgabeworkload nicht bis zum letzten Moment warten und alle Ressourcen gleichzeitig beanspruchen, wenn es bereits zu spät ist. ZRAM benötigt etwas CPU für die Kompression, doch in den meisten Systemen mit geringer Speicherkapazität hat dies weit weniger Auswirkungen auf die Leistung als Swapping ohne ZRAM.

Zusammenfassung

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 – das sind fast ein Gigabyte unkomprimierter Daten. Alles ist in ZRAM gegangen und nichts wurde in die viel langsamere Auslagerungsdatei geschrieben. Probieren Sie selbst solche Einstellungen aus, sie funktionieren mit allen Modellen des Raspberry Pi. Mein vorher instabiler Computer hat sich in ein funktionierendes und stabiles System verwandelt.

In naher Zukunft hoffe ich, diesen Artikel mit einigen Testergebnissen zur Systemleistung vor und nach der Installation von ZRAM fortzusetzen und zu aktualisieren. Im Moment habe ich einfach nicht die Zeit dafür. Bis dahin scheuen Sie sich nicht, Ihre eigenen Tests durchzuführen, und lassen Sie es mich in den Kommentaren wissen. Der Raspberry Pi 4 ist einfach großartig mit diesen Einstellungen. Viel Spaß damit!

Zum Thema:

Quelle: habr.com

Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster