https://github.com/rticommunity/rtiperftest
RTI Perftest is a command-line application that measures the Latency and Throughput of very configurable scenarios that use RTI Connext DDS middleware to send messages.
https://github.com/rticommunity/rtiperftest
connextdds dds latency latency-test maximum-throughput measure multicast performance rti rti-perftest throughput throughput-test
Last synced: about 1 month ago
JSON representation
RTI Perftest is a command-line application that measures the Latency and Throughput of very configurable scenarios that use RTI Connext DDS middleware to send messages.
- Host: GitHub
- URL: https://github.com/rticommunity/rtiperftest
- Owner: rticommunity
- License: epl-1.0
- Created: 2016-08-23T20:27:26.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2025-04-04T12:10:45.000Z (11 months ago)
- Last Synced: 2025-04-04T13:25:05.564Z (11 months ago)
- Topics: connextdds, dds, latency, latency-test, maximum-throughput, measure, multicast, performance, rti, rti-perftest, throughput, throughput-test
- Language: C++
- Homepage: https://community.rti.com/static/documentation/perftest/current/index.html
- Size: 9.24 MB
- Stars: 54
- Watchers: 14
- Forks: 23
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE.md
Awesome Lists containing this project
README
RTI Perftest
RTI's Network Performance Benchmarking Tool
Explore the documentation »
Binaries
·
Download
·
Compile
·
Execution
·
Examples
## Overview
**RTI Perftest** is a command line tool intended to measure the minimum latency,
maximum throughput and loaded latency in a very configurable set of scenarios.
It can help you answer questions such as:
* For a given publishing configuration (e.g., queue size, batching settings), sample size, and subscribing configuration (e.g., queue size, Listener vs. WaitSet), what is the throughput of my network?
* When my network is heavily loaded, what latency can I expect?
* For a given configuration, what is the best-case latency with no other traffic on the network?
### _How does it work_
The publishing side of the test writes data as fast as it can. Every few samples (configured through the command line), it sends a special sample requesting an echo from the subscribing side. It uses this ping -> pong exchange to measure the round-trip time latency (RTT) and then the one-way latency.
The publisher prints the latency test results while the subscriber prints the throughput results.

**RTI Perftest** allows 2 operational modes: _Throughput Test_ and _Latency Test_
Learn more [here »](https://community.rti.com/static/documentation/perftest/current/introduction.html)
## Features
**RTI Perftest** features include:
* Supports **RTI Connext DDS Professional** and **RTI Connext DDS Micro**.
* Suppots multiple platform including Windows, Linux, Mac, VxWorks or Android.
* Supports multiple test setups - Multicast, One-to-many communication (Pub -> Sub), Latency test, Throughput test, Latency vs Throughput test.
* Supports using raw transports (UDPv4 Sockets and Shared Memory segments).
* Suports benchmarking Connext Pro and Micro features such as Flat Data and Zero Copy.
## Getting Started
This is an example of how you may give instructions on setting up your project locally.
To get a local copy up and running follow these simple example steps.
### _Download_
**RTI Perftest** bundle is provided in 3 different ways:
1. Clone and compile from the official Github repository:
```sh
git clone https://github.com/rticommunity/rtiperftest.git
```
2. Download and compile from: github.com/rticommunity/rtiperftest.
3. Download the executables for popular platforms from: https://github.com/rticommunity/rtiperftest/releases in the “Binaries” section of the **RTI Perftest** release page.
To learn more about the supported platforms and installation, please refer to the
[Documentation](https://community.rti.com/static/documentation/perftest/current/download.html).
### _Requisites_
If you need to compile **RTI Perftest** these are the 2 main requisites. This is not
needed if you downloaded the executables already compiled, you can skip this section.
* **RTI Connext DDS Professional** or **RTI Connext DDS Micro** should be installed
in the system where the build.sh script is going to run. The Target libraries for
the platform to be generated should also be installed.
* The `$NDDSHOME` environment variable should be set correctly. Alternatively,
`$NDDSHOME` can be passed directly to the `build.sh` script by using the `--nddshome ` command-line option.
* If you intend to compile and test using *RTI Security Plugins*, you will need to
link against the OpenSSL libraries for your architecture.
Learn more [here »](https://community.rti.com/static/documentation/perftest/current/introduction.html)
### _Compile_
For Linux, MacOS, QNX, VxWorks, Lynx, and Android, **RTI Perftest** makes use of a script in the top level directory named ```build.sh```. In order to build using ```build.sh``` you just need to invoke the script with the command-line parameters desired.
For example, for a given architecture (x64Darwin15clang7.0) for C++ (traditional and modern) and Java the command would be
```sh
./build.sh --platform x64Darwin15clang7.0
```
Learn more about compilation for other platforms and examples [here »](https://community.rti.com/static/documentation/perftest/current/compilation.html)
## Usage
The following are examples of how to run the performance test for two use cases:
* The tests below print final results only; if you want to see intermediate values, remove the ```-noprint``` argument from the command line.
* If you are running on two unequal machines---i.e., one machine is faster (has better processors) than another---you will see better performance by running the Publisher on the slower machine.
### Example 1: 1-to-1, Unicast, Best Latency as a Function of Message Size
Publisher:
```sh
bin//release/perftest_cpp -pub -noPrint -nic -dataLen -latencyTest -executionTime 100
```
Subscriber:
```sh
bin//release/perftest_cpp -sub -noPrint -nic -domain -multicast
```
Modify ```-dataLen ```to see latencies for different data sizes. Set ```-executionTime ```
to be >=100 for statistically better results.
### Example 2: 1-to-1, Multicast, Maximum Throughput as a Function of Message Size (with Batching)
Publisher:
```sh
bin//release/perftest_cpp -pub -noPrint -nic -dataLen -batchSize -multicast -executionTime 100
```
Subscriber:
```sh
bin//release/perftest_cpp -sub -noprint -nic -multicast
```
To achieve maximum throughput, start by setting See ```-batchSize ``` to 8192, then increase the size to see if you get better throughput.
_Note: Batching will not be enabled if the data length is larger than 1/2 the batch size._
### More examples
See more examples [here »](https://community.rti.com/static/documentation/perftest/current/examples.html)
## Configuring RTI Perftest
See how to configure **RTI Perftest** [here »](https://community.rti.com/static/documentation/perftest/current/command_line_parameters.html)
## License
Distributed under the EPL License. See the [license](LICENSE.md) file for more information.