Dans des articles précédents, nous avons abordé les avantages des clusters IoT et la façon dont ils peuvent offrir disponibilité et évolutivité, entre autres bénéfices. Nous allons maintenant voir comment ils se comportent lorsqu’ils sont exécutés sur du matériel précis. Dans cet article, nous avons testé trois configurations avec une configuration matérielle identique afin d’évaluer les performances CPU des solutions globales utilisées pour faire fonctionner une application IoT.
Le matériel
Pour cette analyse comparative, nous avons utilisé le matériel suivant :
Radxa ROCK Pi 4 Go de RAM 16 Go 6 Go Stockage 256 Go HDeMMC : NCEMASLD-32G

Mac Mini M1
Processeur Apple M1 8 cœurs, double Cortex-A72 à 1,8 GHz et quadruple Cortex-A53 à 1,4 GHz

Mac Mini M1 et Radxa ROCK Pi 4B (Source : Radxa)
La configuration
Comme mentionné précédemment, il y avait trois configurations. Dans les trois, le Mac mini envoyait des requêtes HTTP avec trois variables par requête au ROCK Pi.
TagoCore avec SQLite
1x ROCK Pi avec base de données SQLite exécutant TagoCore.
1x Mac mini comme simulateur d’appareil

TagoCore avec PostgreSQL externe
1x ROCK Pi exécutant TagoCore.
1x Mac mini comme simulateur d’appareil avec base de données PostgreSQL

Cluster TagoCore avec PostgreSQL externe
3x ROCK Pi exécutant TagoCore en cluster.
1x Mac mini comme simulateur d’appareil avec base de données PostgreSQL
Les requêtes étaient réparties à l’aide d’un load balancer, qui équilibrait la charge entre les trois ROCK Pi grâce à l’algorithme round robin.

Les résultats
Nous avons évalué trois scénarios dans lesquels nous avons modifié la fréquence d’entrée des données (requêtes par minute) tout en maintenant tous les autres facteurs constants.
Premier scénario : 1 600 requêtes par minute,
Deuxième scénario : 5 200 requêtes par minute,
Troisième scénario : 10 400 requêtes par minute.
Premier scénario
Dans le premier scénario, comme le montre le graphique ci-dessous, la différence entre le cluster et les deux autres configurations est notable. TagoCore exécuté en cluster utilise presque 20 % de CPU en moins que le cas exécutant TagoCore avec SQLite, et près de 12 % de moins que TagoCore avec PostgreSQL externe.
On remarque également la différence entre le premier cas et le deuxième, où le premier cas avec SQLite sur le ROCK Pi a utilisé plus de CPU que celui avec PostgreSQL externe.

Deuxième scénario
Dans le deuxième scénario, maintenant que nous avons haussé le rythme et envoyé 5 200 requêtes par minute, l’écart s’est creusé. Au lieu de 12 %, la différence est désormais de 15 % de CPU en moins avec le cluster qu’avec le seul ROCK Pi accompagné de PostgreSQL externe.

Troisième scénario
Il est curieux de noter que même dans ce dernier cas, où le Mac mini a envoyé 10 400 requêtes par minute, le pourcentage d’utilisation du CPU reste inférieur à 30 % pour chaque ROCK Pi.

Vaut-il la peine d’implémenter un cluster pour les applications IoT ?
Dans la plupart des cas, le cluster surpasse l’exécution de TagoCore sur un seul ROCK Pi, car une baisse importante de l’utilisation du CPU est notable avec une configuration en cluster. Cette baisse de l’utilisation du CPU s’explique sans doute par l’équilibrage de charge et l’usage de trois ordinateurs au lieu d’un seul.
Il vaut donc la peine d’implémenter un cluster IoT si vous recherchez de meilleures performances pour votre application IoT.
Cela dit, implémenter un cluster pour une application IoT peut s’avérer difficile pour certains, mais heureusement c’est là que TagoCore, la plateforme IoT gratuite et open source de TagoIO, entre en jeu pour vous aider ! Les utilisateurs de TagoCore peuvent implémenter sans effort des clusters au sein de leur environnement IoT, alors profitez de notre plateforme open source dotée de fonctionnalités de cluster !
Pour en savoir plus sur TagoCore et sur la façon de l’implémenter en cluster, consultez notre webinaire « Installing and Configuring TagoCore on edge devices » et visitez le site web de TagoCore.