A benchmark analysis of IoT implementation running on a cluster

In previous blogs, we have discussed the advantages of IoT clusters and how they can provide availability and scalability, among other benefits. Now, we will look at how they perform when running on specific hardware. In this blog, we tested three setups with the same hardware configuration to evaluate the CPU performance of the overall solutions used when realizing an IoT application.

Hardware

For the sake of this benchmark analysis, we used the following hardware:

Mac Mini M1Radxa ROCK Pi 4B
Ram16GB6GB
Storage256GB HDeMMC: NCEMASLD-32G
ProcessorApple M1 8-Core CPUDual Cortex-A72 1.8GHz and quad Cortex-A53 1.4GHz
Mac Mini M1
Radxa ROCK Pi 4B (Source: Radxa)

The setup

As previously mentioned, there were three setups. In all three of them, the MacBook mini sent HTTP requests with three variables per request to the ROCK Pi.

TagoCore with SQLite

1x ROCK Pi with SQLite Database running TagoCore.

1x Mac mini as the device simulator

TagoCore with external PostgreSQL

1x ROCK Pi running TagoCore.

1x Mac mini as the device simulator with PostgreSQL database

TagoCore cluster with external PostgreSQL

3x ROCK Pi running TagoCore as a cluster.

1x Mac mini as the device simulator with PostgreSQL database

The requests were divided using a load balancer, which balanced the load between the three ROCK Pi using the road robin algorithm.

The results

We evaluated three scenarios where we modified the data input frequency (request per min) while keeping all other factors constant. 

First scenario: 1,600 requests per minute,

Second scenario: 5,200 requests per minute,

Third scenario: 10,400 requests per minute.

First scenario

In the first scenario, as the graphic below exhibits, the difference between the cluster and the other two setups is notable. The TagoCore running as a cluster uses almost 20% less CPU than the case running TagoCore with SQLite, and nearly 12% less than the TagoCore with external PostgreSQL.

It’s also notable the difference between the first case and the second, where the first case with SQLite in the ROCK Pi used more CPU than the one with external PostgreSQL.

Second scenario

In the second scenario, now that we have stepped up the game and sent 5200 requests per min, the difference has increased. Instead of 12%, now the difference is 15% less CPU with the cluster than with the single ROCK Pi with external PostgreSQL.

Third scenario

It’s curious to note that even in this last case, where the Mac mini has sent 10,400 requests per minute, the CPU usage percentage is still less than 30% for every ROCK Pi.

Is It worth implementing a cluster for IoT applications?

In most cases, the cluster outperforms running TagoCore on a single ROCK Pi, as a significant decrease in CPU usage is notable when using a cluster setup. This decrease in CPU usage is likely due to load balancing and using three computers instead of only one.

Therefore, it is worth implementing an IoT cluster if you are looking for better performance from your IoT application.

Although, implementing a cluster for an IoT application may be challenging for some, but luckily that’s where TagoCore, TagoIO’s free and open-source IoT platform, comes in to help! TagoCore users can effortlessly implement clusters inside their IoT environment, so take advantage of our open-source platform with cluster features!

For more information about TagoCore and how to implement it as a cluster, check out our webinar “Installing and Configuring TagoCore on edge devices” and visit the TagoCore website.