Content Types

Tests publishing information using either XML, JSON or binary over MQTT, to see if there are any noticeable differences on the choice of content type on performance.

This report has been automatically generated by ComSim by Trust Anchor Group. The following command-line arguments where used to execute the simulation and generate the report:

ComSim.exe -d ComSim\bin\Debug\netcoreapp2.2\Data -e -i Examples\ContentType.xml -s ComSim\bin\Debug\netcoreapp2.2\Sniffers -st Examples\SnifferXmlToHtml.xslt -mr C:\ProgramData\IoT Gateway\Root\Reports\ContentType.md -xr C:\ProgramData\IoT Gateway\Root\Reports\ContentType.xml -master /Master.md -l C:\ProgramData\IoT Gateway\Root\Reports\ContentType.Log.xml -lt C:\ProgramData\IoT Gateway\Transforms\EventXmlToHtml.xslt -af ComSim\bin\Release\netcoreapp2.2\publish

Description

Simulates 300 MQTT clients, publishing and subscribing to content of different types (100 XML, 100 JSON, 100 binary) during 10 minutes, during which a million messages of each type is transmitted and received. During the simulation, performance metrics are sampled for local simulator performance and broker performance.

Preparation

MQTT

The MQTT protocol is tested by installing the mosquitto MQTT broker on the same machine as the XMPP broker. It is important the brokers reside on the same machine, so network performance metrics can be compared.

Performance Counters

For this simulation to work, the Performance.ws Web Service script available in the Examples folder in the ComSim project, needs to be copied to the /Reports web folder of the TAG Neuron or the IoT Gateway web server. For readability, the web service script contais the following script, executed when the resource is accessed:

{
    "cpuPercent":PerformanceCounters.GetCounter("Processor","_Total","% Processor Time").NextValue(),
    "networkBytesPerSec":PerformanceCounters.GetCounter("Network Interface","Microsoft Hyper-V Network Adapter","Bytes Total/sec").NextValue(),
    "memoryMBytesFree":PerformanceCounters.GetCounter("Memory","Available MBytes").NextValue()
}

General

Time units
Simulation Duration: 1 min
Time Base: Start of Simulation
Time Unit: 1 s
Time Cycle: 10 min
Bucket Time: 1 s
Start Date: 2020-10-13
Start Time: 13:21:01
End Date: 2020-10-13
End Time: 13:22:01

Activities

Total activity counts
Total activity counts
Total Activities

ReadPerformanceCounters

This activity measures server performance, by calling a web service and reporting the measured values in the returning JSON object back to the simulator.

Use Case chart for ReadPerformanceCounters
Use Case chart for ReadPerformanceCounters
Activity chart for ReadPerformanceCounters
Activity chart for ReadPerformanceCounters
Executions of ReadPerformanceCounters
Execution time of ReadPerformanceCounters

SendMqttXmlMessage

This activity sends an XML message to a random MQTT recipient.

Use Case chart for SendMqttXmlMessage
Use Case chart for SendMqttXmlMessage
Activity chart for SendMqttXmlMessage
Activity chart for SendMqttXmlMessage
Executions of SendMqttXmlMessage
Legend
Legend
Execution time of SendMqttXmlMessage

SendMqttJsonMessage

This activity sends a JSON message to a random MQTT recipient.

Use Case chart for SendMqttJsonMessage
Use Case chart for SendMqttJsonMessage
Activity chart for SendMqttJsonMessage
Activity chart for SendMqttJsonMessage
Executions of SendMqttJsonMessage
Legend
Legend
Execution time of SendMqttJsonMessage

SendMqttBinMessage

This activity sends a binary message to a random MQTT recipient.

Use Case chart for SendMqttBinMessage
Use Case chart for SendMqttBinMessage
Activity chart for SendMqttBinMessage
Activity chart for SendMqttBinMessage
Executions of SendMqttBinMessage
Legend
Legend
Execution time of SendMqttBinMessage

ProcessMqttXmlMessage

Processes a received MQTT XML message.

Use Case chart for ProcessMqttXmlMessage
Use Case chart for ProcessMqttXmlMessage
Activity chart for ProcessMqttXmlMessage
Activity chart for ProcessMqttXmlMessage
Executions of ProcessMqttXmlMessage
Execution time of ProcessMqttXmlMessage

ProcessMqttJsonMessage

Processes a received MQTT JSON message.

Use Case chart for ProcessMqttJsonMessage
Use Case chart for ProcessMqttJsonMessage
Activity chart for ProcessMqttJsonMessage
Activity chart for ProcessMqttJsonMessage
Executions of ProcessMqttJsonMessage
Execution time of ProcessMqttJsonMessage

ProcessMqttBinMessage

Processes a received MQTT Binary message.

Use Case chart for ProcessMqttBinMessage
Use Case chart for ProcessMqttBinMessage
Activity chart for ProcessMqttBinMessage
Activity chart for ProcessMqttBinMessage
Executions of ProcessMqttBinMessage
Execution time of ProcessMqttBinMessage

Counters

Counters
Counters
Counters

Measurements

ε

Send messages

Nr Messages sent
Legend
Legend
Time sending Messages
Legend
Legend

Received messages

Nr Messages processed
Legend
Legend
Time processing Messages
Legend
Legend

Performance

Message roundtrip
Legend
Legend

CPU Performance

Machine CPU %
Legend
Legend

Memory Performance

Free Memory (GB)
Legend
Legend

I/O Performance

Machine Input/Output (kB/s)
Legend
Legend

Events

Total event counts
Total event counts
Events