In früheren Blogbeiträgen haben wir die Vorteile von IoT-Clustern besprochen und gezeigt, wie sie unter anderem für Verfügbarkeit und Skalierbarkeit sorgen können. Jetzt schauen wir uns an, wie sie auf konkreter Hardware abschneiden. In diesem Beitrag haben wir drei Setups mit identischer Hardware-Konfiguration getestet, um die CPU-Leistung der jeweiligen Gesamtlösung bei der Umsetzung einer IoT-Anwendung zu bewerten.
Hardware
Für diese Benchmark-Analyse haben wir die folgende Hardware verwendet:
Radxa ROCK Pi 4GB Ram 16GB 6GB Storage 256GB HDeMMC: NCEMASLD-32G

Mac Mini M1
Prozessor Apple M1 8-Core CPU Dual Cortex-A72 1,8 GHz und Quad Cortex-A53 1,4 GHz

Mac Mini M1Radxa ROCK Pi 4B (Quelle: Radxa)
Das Setup
Wie bereits erwähnt, gab es drei Setups. In allen drei sendete der MacBook mini HTTP-Requests mit drei Variablen pro Request an den ROCK Pi.
TagoCore mit SQLite
1x ROCK Pi mit SQLite-Datenbank, auf dem TagoCore läuft.
1x Mac mini als Geräte-Simulator

TagoCore mit externer PostgreSQL
1x ROCK Pi, auf dem TagoCore läuft.
1x Mac mini als Geräte-Simulator mit PostgreSQL-Datenbank

TagoCore-Cluster mit externer PostgreSQL
3x ROCK Pi, auf denen TagoCore als Cluster läuft.
1x Mac mini als Geräte-Simulator mit PostgreSQL-Datenbank
Die Requests wurden über einen Load Balancer verteilt, der die Last per Round-Robin-Algorithmus auf die drei ROCK Pi aufteilte.

Die Ergebnisse
Wir haben drei Szenarien bewertet, in denen wir die Datenrate (Requests pro Minute) verändert und alle anderen Faktoren konstant gehalten haben.
Erstes Szenario: 1.600 Requests pro Minute,
Zweites Szenario: 5.200 Requests pro Minute,
Drittes Szenario: 10.400 Requests pro Minute.
Erstes Szenario
Im ersten Szenario ist der Unterschied zwischen dem Cluster und den beiden anderen Setups deutlich, wie die folgende Grafik zeigt. TagoCore im Cluster-Betrieb nutzt fast 20 % weniger CPU als das Setup mit TagoCore und SQLite und knapp 12 % weniger als TagoCore mit externer PostgreSQL.
Bemerkenswert ist auch der Unterschied zwischen dem ersten und dem zweiten Fall: Das erste Setup mit SQLite auf dem ROCK Pi verbrauchte mehr CPU als das mit externer PostgreSQL.

Zweites Szenario
Im zweiten Szenario haben wir die Belastung erhöht und 5.200 Requests pro Minute gesendet, wodurch der Unterschied größer geworden ist. Statt 12 % beträgt der Unterschied nun 15 % weniger CPU beim Cluster gegenüber dem einzelnen ROCK Pi mit externer PostgreSQL.

Drittes Szenario
Interessant ist, dass selbst in diesem letzten Fall, in dem der Mac mini 10.400 Requests pro Minute gesendet hat, die CPU-Auslastung für jeden ROCK Pi weiterhin unter 30 % liegt.

Lohnt sich ein Cluster für IoT-Anwendungen?
In den meisten Fällen schneidet der Cluster besser ab als der Betrieb von TagoCore auf einem einzelnen ROCK Pi, denn bei einem Cluster-Setup ist ein deutlicher Rückgang der CPU-Auslastung erkennbar. Dieser Rückgang ergibt sich wahrscheinlich aus dem Load Balancing und dem Einsatz von drei Rechnern statt nur einem.
Daher lohnt sich ein IoT-Cluster, wenn Sie mehr Leistung aus Ihrer IoT-Anwendung herausholen möchten.
Die Umsetzung eines Clusters für eine IoT-Anwendung mag für manche zwar eine Herausforderung sein, aber genau da kommt TagoCore ins Spiel, die kostenlose und quelloffene IoT-Plattform von TagoIO! TagoCore-Nutzer können Cluster mühelos in ihrer IoT-Umgebung einrichten. Nutzen Sie also die Cluster-Funktionen unserer Open-Source-Plattform!
Mehr Informationen zu TagoCore und zur Einrichtung als Cluster finden Sie in unserem Webinar “Installing and Configuring TagoCore on edge devices” und auf der TagoCore-Website.


