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.

Lesezeit: 3 Min.
In Pocket speichern
vorlesen Druckansicht Kommentare lesen
Von

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.

Make 4/20

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.

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.

Speicherdurchsatz messen mit iozone

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.

7z hat eine integrierte Benchmark-Funktion

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.

mbw misst der Speicherdurchsatz mit verschiedenen Zugriffsarten.

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.

Das grafische Tool gnome-disks misst die Lesegeschwindigkeit.

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

OpenSSL hat ebenfalls eine eingebaute Benchmarkfunktion

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 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.

der Tensorflow-Lite-Benchmark klassifiziert Objekte in einem Bild.

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)