Warum lohnt es sich, ein 64-Bit-Betriebssystem auf dem Raspberry Pi4 zu installieren?

Bild

Einer der Vorteile der Arbeit für ein Softwareunternehmen besteht darin, dass Sie häufig die Möglichkeit haben, neue Hardware-Prototypen zu testen. Allerdings nicht in diesem Fall - ich habe einen Raspberry Pi4 gekauft, weil er sehr billig ist!

Der Raspberry Pi4 verfügt über einen Quad-Core-ARM Cortex A72, bis zu 4 GB Speicher und einen Gigabit-Ethernet-Anschluss - alles für nur 35 US-Dollar.

Auf Raspberry Pi4 haben OS Raspbian (basierend auf Debian) und fertige Produktbibliothek, also habe ich es in die SD-Karte gelegt, um schneller zu booten. Ich suchte im Syslog und stellte fest, dass sowohl der Kernel als auch alle Benutzerprogramme als armv7 kompiliert wurden - also für 32-Bit-Speicher.

Ich weiß, dass Raspberry Pi4 64 Bit unterstützt, daher wollte ich kein 32-Bit-Betriebssystem darauf ausführen. Ich nahm eine andere Speicherkarte und legte Debian darauf. Debian, das nichts Überflüssiges enthält, wurde als aarch64 kompiliert - was 64-Bit-Speicher bedeutet.

Nachdem ich das 64-Bit-Betriebssystem heruntergeladen hatte, interessierte ich mich dafür, wie viel besser es in 32-Bit funktioniert, und führte mehrere Tests durch.

Synthetische Geschwindigkeitstests


Das erste, was mir einfiel, war der alte Dhrystone-Test, der seit jeher existiert. Dieses Programm wurde 1988 geschrieben und befasst sich mit mathematischen Berechnungen. Es ist unwahrscheinlich, dass die aktuelle Last simuliert werden kann, und wir können sie nur verwenden, um eine Verbindung mit alter Hardware und Programmen aufrechtzuerhalten.



Eine moderne Digest-Anwendung lässt sich besser durch Berechnen von Hashes simulieren, daher wollte ich einen Test mit SHA1 durchführen. Leider wurde das Dienstprogramm sha1sum ohne Unterstützung für libssl- oder kryptografische Kernelfunktionen kompiliert, sodass ich es aus der Quelle kompilieren musste.

Um Engpässe bei der E / A zu vermeiden, berechne ich einen Hash einer 2-GB-Datei mit der Option "-s 2 GB abschneiden", sodass keine Eingabe oder Ausgabe von der Karte erfolgte:



SHA1 ist ein realistischerer Test als Dhrystone, da dieser Algorithmus in einer Vielzahl von Anwendungen verwendet wird - Torrents, Git usw.

RAM


Ein 64-Bit-System bietet Zugriff auf einen Speicher von 8 Bytes pro Lese- / Schreibzugriff. Ich habe ein einfaches Programm geschrieben , das einen großen Puffer platziert - sie schreibt es und liest es dann. Um eine echte Speicherzuordnung zu gewährleisten , habe ich mlock () verwendet. In diesem Test beträgt das Puffervolumen 2 GB: Der 3-GB-Puffer arbeitete im 64-Bit-Modus und erzeugte im 32-Bit-Modus einen Fehler "Nicht genügend Speicher".



Audiokodierung


Mir ist aufgefallen, dass viele Benutzer von Raspberry Pi4 einen Computer als Media Center verwenden. Daher habe ich begonnen, Audio mit den beiden beliebtesten Codecs zu codieren.

Ich habe Pink Floyds "Echoes" -Komposition codiert, weil es ein ziemlich langer Track ist und man daraus Messwerte erhalten kann. Um E / A-Verzögerungen zu vermeiden, wurden die Quell- und Zieldatei auf RAMFS gespeichert:





Netzwerkgeschwindigkeitsmessungen


Eine weitere Option für die Verwendung von Raspberry Pi4 ist die Verwendung als VPN oder Firewall. Ich empfehle nicht, solche Systeme für solche Zwecke zu verwenden, aber viele Leute haben immer noch eine langsame Internetverbindung (weniger als 100 MB), so dass sie möglicherweise nicht auf den langsamen Betrieb des Raspberry Pi4 achten.

Erste Frage: Wie viel Verkehr kann der Raspberry Pi4 verarbeiten? Wir müssen die Nettonetzwerkleistung des Computers ohne die Einschränkungen der physischen Schnittstellen messen, daher habe ich die iperf3-Sitzung zwischen den beiden Containern gestartet. Container tauschen jedoch Daten über zwei Veths aus, und Veth beschleunigt den Datenverkehr durch falsche Offloads.

Das Entladen der Berechnung der IP-Prüfsumme erfolgt einfach, indem die Zählung verweigert wird, und das Entladen der TCP-Segmentierung durch Verweigerung der Segmentierung und des erneuten Zusammensetzens des Datenverkehrs: Ein großer Teil der 64-KB-Daten wird einfach unverändert in den Speicher übertragen.

Um solche Momente zu vermeiden, habe ich das Entladen mit dem Befehl

ethtool -K veth0 tx off rx off tso off gro off gso off verboten



Firewall


Die schnellste Netzwerkausrüstung ist in der Lage, einen Teil des Datenverkehrs zu löschen, und der schnellste Weg, dies zu tun, ist die TC-Regel. Um die maximal mögliche Geschwindigkeit nicht zu erreichen, habe ich die minimale Ethernet-Frame-Größe 64b verwendet.



Obwohl beide Systeme die maximale Übertragungsgeschwindigkeit (1,5 Mbit / s) nicht erreichten, zeigte der 64-Bit-Kern eine etwas höhere Geschwindigkeit als der 32-Bit-Kern. Wenn Sie Raspberry Pi4 als Firewall verwenden möchten, müssen Sie den 64-Bit-Kernel verwenden.

VPN


Ein weiterer häufiger Anwendungsfall für Raspberry Pi4 ist ein VPN-Server bzw. OpenVPN. Ich bevorzuge WireGuard, deshalb habe ich beide Programme überprüft, da beide einfach zu installieren sind:



OpenVPN ist erwartungsgemäß zehnmal langsamer als WireGuard. Was nicht erwartet wurde, war, dass OpenVPN mit 32 und 64 Bit / s mit der gleichen Geschwindigkeit arbeitet. WireGuard überlastet den Gigabit-Port in beiden Fällen fast - vielleicht haben wir das NIC-Limit erreicht.

Um herauszufinden, ob WireGuard noch schneller arbeiten kann, habe ich einen weiteren Test mit zwei Containern durchgeführt, die kein physisches Ethernet verwendeten. Das einzige Problem war, dass sowohl der Client als auch der iperf3-Server auf dem Raspberry Pi4 ausgeführt wurden und zwei Kerne geladen wurden.



Wie erwartet schnitten OpenVPN und 32-Bit-WireGuard, die von der CPU begrenzt wurden, schlechter ab, und 64-Bit-WireGuard schnitt besser ab.

Schlussfolgerungen


Ich lese oft Aussagen wie "es lohnt sich nicht", "Sie werden ein paar Millisekunden gewinnen" usw., einfach weil der Raspberry Pi4 kein sehr leistungsfähiger Computer ist. Das ist nicht so! Wie jeder, der an eingebetteten Geräten beteiligt ist, weiß, ist die Optimierung langsamer Hardware-Software noch wichtiger als bei schneller Hardware.

Ich wusste bereits, dass ein 64-Bit-Betriebssystem auf dem Raspberry Pi4 besser funktionieren würde, aber ich wusste nicht, wie viel besser. Also habe ich all diese Tests gemacht. Ich hoffe, dass es Ihnen gefallen hat!

All Articles