Tools
Tools for performance analysis.
Benchmark Demo
- Abstract
This demo sets up a simulation with various command line arguments for benchmarking purposes. A configurable amount of participants are spawned by a single process on different threads. The demo calculates averaged running times, throughput, speed-up and message rates for performance evaluation.
- Sources
- Requirements
None (The demo starts its own instance of the registry and system controller).
- Positional Parameters
[numberOfSimulationRuns]
Sets the number of simulation runs to perform.[simulationDuration]
Sets the virtual simulation duration <S>.[simulationStepSize]
Sets the virtual simulation step size <T>.[service]
Sets the communication service type (pubsub, can or ethernet).[numberOfParticipants]
Sets the number of simulation participants <N>.[messageCount]
Sets the number of messages <M> to be send in each simulation step.[messageSizeInBytes]
Sets the message size <B>.[registryURi]
The URI of the registry to start.
- Optional Parameters
--help
Show the help message.--registry-uri
The URI of the registry to start. Default: silkit://localhost:8500--message-size
Sets the message size <B> in bytes. Default: 1000--message-count
Sets the number of messages <M> to be send in each simulation step. Default: 50--number-participants
Sets the number of simulation participants <N>. Default: 2--number-simulation-runs
Sets the number of simulation runs to perform. Default: 4--simulation-step-size
Sets the simulation step size <T> (virtual time). Default: 1ms--simulation-duration
Sets the simulation duration <S> (virtual time). Default: 1s--service
Sets the communication service type (pubsub, can or ethernet). Default: pubsub--configuration
Path and filename of the participant configuration YAML file. Default: empty--write-csv
Path and filename of CSV file with benchmark results. Default: empty
- System Examples
Launch the benchmark demo with default arguments but 3 participants:
./SilKitDemoBenchmark --number-participants 3
Launch the benchmark demo with positional arguments and a configuration file that enforces TCP communication:
./SilKitDemoBenchmark 4 1 1 ethernet 2 1 10 --configuration ./SilKit-Demos/Benchmark/DemoBenchmarkDomainSocketsOff.silkit.yaml
- Notes
This benchmark demo produces timings of a configurable simulation setup. <N> participants exchange <M> messages of <B> bytes per simulation step with a simulation step size of <T> ms and run for <S> seconds (virtual time).
This simulation run is repeated <K> times and averages over all runs are calculated. Results for average runtime, speedup (virtual time/runtime), throughput (data size/runtime), message rate (count/runtime) including the standard deviation are printed.
The demo uses publish/subscribe, can or ethernet controllers. In the publish/subscribe case, the same topic for the message exchange is used, so each participant broadcasts the messages to all other participants. The configuration file
DemoBenchmarkDomainSocketsOff.silkit.yaml
can be used to disable domain socket usage for more realistic timings of TCP/IP traffic. WithDemoBenchmarkTCPNagleOff.silkit.yaml
, Nagle’s algorithm and domain sockets are switched off.The demo can be wrapped in helper scripts to run parameter scans, e.g., for performance analysis regarding different message sizes. See
.\SilKit-Demos\Benchmark\msg-size-scaling\Readme.md
and.\SilKit-Demos\Benchmark\performance-diff\Readme.md
for further information.
Latency Demo
- Abstract
A sender and a receiver application use the Publish/Subscribe services and measure the round trip time of the communication. This setup is useful to evaluate the performance of a SIL Kit setup running on different platforms. E.g., between a local host, a virtual machine, a remote network, etc.
- Sources
- Requirements
- Positional Parameters
[messageCount]
Sets the number of messages to be send in each simulation step.[messageSizeInBytes]
Sets the message size.[registryURi]
The URI of the registry to start.
- Optional Parameters
--help
Show the help message.--isReceiver
This process is the receiving counterpart of the latency measurement. Default: false--registry-uri
The URI of the registry to start. Default: silkit://localhost:8500--message-size
Sets the message size. Default: 1000--message-count
Sets the number of messages to be send in each simulation step. Default: 1000--configuration
Path and filename of the participant configuration YAML file. Default: empty--write-csv
Path and filename of csv file with benchmark results. Default: empty
- System Examples
Launch the two LatencyDemo instances with positional arguments in separate terminals:
./SilKitDemoLatency 100 1000 ./SilKitDemoLatency 100 1000 --isReceiver
Launch the LatencyDemo instances with a configuration file that enforces TCP communication:
./SilKitDemoLatency 100 1000 --configuration ./SilKit-Demos/Benchmark/DemoBenchmarkDomainSocketsOff.silkit.yaml ./SilKitDemoLatency 100 1000 --isReceiver
- Notes
This latency demo produces timings of a configurable simulation setup. Two participants exchange <M> messages of <B> bytes without time synchronization.
The demo uses publish/subscribe controllers performing a message round trip (ping-pong) to calculate latency and throughput timings.
Note that the two participants must use the same parameters for valid measurement and one participant must use the
--isReceiver
flag.