Benchmarks für Single Board Computer
Benchmarks helfen herauszufinden, welcher SBC für welches Einsatzszenario geeignet ist. Wir zeigen anhand einer Auswahl, wie man sie installiert und startet.
- Daniel Bachfeld
Benchmarks sind ein kontroverses Thema, da die Resultate meist sehr viel Interpretationspielraum lassen und eine Vergleichbarkeit der Leistungsfähigkeit von PCs und Single Board Computer erschweren. Dennoch ist es sinnvoll, für bestimmte Szenarien eine Einschätzung zu bekommen, welches Produkt wo schneller ist. Mit den im folgenden beschriebenen Benchmarks messen wir in unseren Tests die Produkte durch, so auch im Vergleich des Odroid C4 mit dem Pi 4 in der Make 4/20. Wir zeigen, wie man sie installiert und bedient.
Grundsätzlich ist unter jedem Linux erstmal ein
sudo apt-get dist-upgrade
sinnvoll, da es viele wichtige Pakete aktualisiert. Auf dem Odroid C4 brachte dies, bei den Benchmarks in denen Python mit im Spiel war, schon mal einen Geschwindigkeitsgewinn von rund 10 Prozent.
iozone
Mit dem Tool iozone messen wir die Schreib- und Lesegeschwindigkeit der MicroSD-Karten und der eMMCs. Das Tool fehlt in den meisten Distributionen und deren Repositories und muss per Hand nachinstalliert werden. Dazu lädt man unter www.iozone.org/src/current/iozone3_490.tar den Tarball herunter und entpackt ihn mit
tar xfv iozone3_490.tar
Anschließend wechselt man in das Verzeichnis iozone3_490/src/current/ und gibt dort
make linux-arm
zum Übersetzen ein. Nach kurzer Zeit sollte iozone übersetzt sein. Im gleichen Verzeichnis gibt man nun
./iozone -e -I -a -s 100M -r 16384k -i 0 -i 1 -i 2
ein. Wir werten nur die Angaben zu Random Read und Random Write aus.
7z
7z ist ein Packer/Entpacker oder auch Komprimierer/Dekomprimierer. Je schneller ein Prozessor und die Speicheranbindung, desto schneller arbeitet 7z. Praktischerweise hat das Tool bereits eine Benchmark-Funktion eingebaut, die man mit dem Befehl
7z b
startet. 7z benutzt von Hause aus alle verfügbaren Kerne einer CPU. Funktioniert der Befehl nicht, muss man das Paket mit
sudo apt-get install p7zip-full
nachinstalleren.
mbw
Das Tool mbw (memory bandwith) misst den Durchsatz des RAM und muss in der Regel mit
sudo apt-get install mbw
installiert werden. Der Befehl
mbw 100
liest und schreibt dann Daten in den Speicher und misst die Geschwindigkeit, wobei 100 die Größe des Datensatzes festlegt.
Gnome-Disks
Um den Durchsatz auf den USB-Ports zu messen, bedienen wir uns einer sehr schnellen externen SSD-Platte, die in anderen Tests gezeigt hat, dass sie über 550 MByte/s transferieren kann. Mit dem Tool gnome-disks messen wir die Leserate von der Platte über USB. Genau genommen ist das zwar keine echte Messung des maximalen Durchsatzes auf den USB-Ports. Wir messen nämlich eigentlich das Zusammenspiel der USB-Treiber und der Dateisystem-Treiber. Da aber die Dateisystemtreiber unter Linux schnell sind und die Festplatte nicht der limitierende Faktor sein kann, liegt der Schluss nahe, dass die Messung nur durch die Implementierung des USB-Host-ICs, seine Anbindung an den SoC und der Qualität der Treiber beeinflusst wird.
Gnome-disks ist unter Ubuntu meistens mit dabei, die Nachinstallation ist mit
sudo apt-get install gnome-disk-utility
schnell erledigt. Zum Start gibt man in der Shell
gnome-disks
ein. Unter den Optionen findet sich der Benchmark, der die Angabe diverser Parameter zulässt. Wir messen mit einer Sample-Size von 100, was den Test zwar verlängert, aber dafür umso genauer macht.
OpenSSL
Mit OpenSSL messen wir die Geschwindigkeit und ggfs die Auslastung der Kerne bei Verschlüsselungsaufgaben. Um die Brauchbarkeit für VPN-Lösungen zu testen, benutzt man am besten den Algorithmus AES mit 128 oder 256 Bit Schlüssellänge. Der Befehl openssl hat wie 7z einen integrierten Benchmark und wird über die Shell gestartet
openssl speed -elapsed aes-128-cbc
OpenCV
Neben diesen gebräuchlichen Tools haben wir uns zwei weitere Tests überlegt, die die Leistungsfähigkeit in praktischen Szenarien bewerten: Bildverarbeitung und Künstliche Intelligenz. In vielen Make-Projekten kommt OpenCV in Kombination mit Python zum Einsatz. Ein kurzes Python-Skript (bench.py) manipuliert ein Bild und misst die Zeit des Durchlaufs. Wir haben uns dabei an dem OpenCV-Guide "Performance Measurement and Improvement Techniques" orientiert.
Mit dem KI-Framework Tensorflow Lite messen wir die Zeit für das Klassifizieren mehrerer Objekte in einem Bild (Inferencing). Beide Benchmarks laden Sie aus dem Github-Repo des Make-Magazins, am besten mit
git clone https://github.com/MakeMagazinDE/bench-sbc.git
oder per ZIP-Download. Das kann etwas dauern, weil einige Datei etwas größer sind.
Zusätzlich müssen Sie noch das OpenCV-Paket für Python mit
sudo apt-get install python3-opencv
installieren. Anschließend wechseln Sie in das Verzeichnis bench-arm und starten den OpenCV-Benchmark mit
python3 ./bench.py
Ganz unspektakulär gibt das Skript die benötigte Zeit in Sekunden aus.
Tensorflow Lite
Tensorflow Lite erfordert zur Installation ein paar Schritte mehr. Die höchste derzeit unterstützte Version (zu Redaktionsschluss) ist Python 3.7, sowie die vorhergehenden Versionen 3.6 und 3.5. Leider ist unter der aktuellen Ubuntu-Version 20.04 (wie sie Hardkernel für den Odroid C4 empfiehlt) Python 3.8 die Standardversion. Deshalb müssen wir zusätzlich 3.7 installieren, wozu wir ein zusätzliches Repository einrichten und weitere Pakete installieren müssen.
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt-get update
sudo apt-get install python3.7
sudo apt-get install python3-pip
Ist das erledigt, laden wir Tensorflow Lite von Google herunter und installieren es. Hier laden wir die Version für 64-Bit-ARM und Python 3.7 herunter. Für andere Python-Versionen und 32-Bit-Betriebssysteme finden Sie hier die Pakete: Python quickstart.
python3.7 -m pip install https://dl.google.com/coral/python/tflite_runtime-2.1.0.post1-cp37-cp37m-linux_aarch64.whl
Zusätzlich müssen einige Python-Pakete aktualisiert werden.
python3.7 -m pip install --upgrade --force-reinstall numpy
python3.7 -m pip install --upgrade --force-reinstall Pillow
Mit dem Befehl
python3.7 label_image.py --model_file mobilenet_v1_1.0_224.tflite --label_file labels.txt --image grace_hopper.bmp
startet man den Benchmark, der in der Shell fünf erkannte Objekte im Bild und die benötige Zeit ausgibt.
Fazit
Die Benchmarks geben nur eine grobe Möglichkeit für Vergleiche der Hardware, da auch immer das zugrunde liegende Betriebssystem eine Rolle spielt. Da Anwender letztlich eine Gesamtlösung einsetzen, kann man also eher Vergleiche wie Pi 4 mit Raspberry Pi OS in 64 Bit gegen Odroid C4 mit Ubuntu 20.04 oder Armbian 20.04 anstellen.
Haben Sie eigene interessante Messergebnisse neuer Boards? Dann schicken Sie uns ihre Ergebnisse an info@make-magazin.de (dab)