Hi,
I've been running some tests using RTI Perftest and have some questions regarding the architecture as well as some of the data.
I've been running these scripts:
Subscriber:
start cmd /k perftest_java.bat -dataLen 4096
start cmd /k perftest_java.bat -dataLen 4096
start cmd /k perftest_java.bat -dataLen 4096
start cmd /k perftest_java.bat -dataLen 4096
start cmd /k perftest_java.bat -dataLen 4096
Publisher:
start cmd /k perftest_java.bat -pub -dataLen 4096
I then write the results to a .csv file and here is a snippet of the results:
Publisher:
One-Way Latency (us): | Ave (us): | Std (us): | Min (us): | Max (us): |
13036 | 8205.5 | 4830.5 | 3375 | 13036 |
50925 | 22445.33 | 20520.76 | 3375 | 50925 |
57378 | 31178.5 | 23337.33 | 3375 | 57378 |
64248 | 37792.4 | 24711.93 | 3375 | 64248 |
837 | 31633.17 | 26430.67 | 837 | 64248 |
22172 | 30281.57 | 24692.99 | 837 | 64248 |
28208 | 30022.38 | 23108.36 | 837 | 64248 |
38398 | 30953 | 21945.2 | 837 | 64248 |
46063 | 32464 | 21306.82 | 837 | 64248 |
329 | 29542.64 | 22317.11 | 329 | 64248 |
9431 | 27866.67 | 22078.19 | 329 | 64248 |
16468 | 26989.85 | 21428.4 | 329 | 64248 |
24619 | 26820.5 | 20657.95 | 329 | 64248 |
31793 | 27152 | 19995.98 | 329 | 64248 |
319 | 25474.94 | 20421.5 | 319 | 64248 |
12452 | 24708.88 | 20047.33 | 319 | 64248 |
21793 | 24546.89 | 19493.95 | 319 | 64248 |
28395 | 24749.42 | 18993.46 | 319 | 64248 |
35439 | 25283.9 | 18658.55 | 319 | 64248 |
1854 | 24168.19 | 18880.14 | 319 | 64248 |
Firstly, what exactly is the measurement of the one-way latency since this is 1 publisher to 5 subscribers? As seen from above every 5 results drops to a low value before rising for the next 5 values and then repeating itself. Why does this happen? Since this is 1 publisher and 5 subscribers, how are the results measured. What is the architecture of the system?
I really appreciate any answers and if there is anything required from me please do let me know.
Thanks,
Blitz3r
Hello,
First: I think you are missing some parameters in order to correctly setup the test you want:
By default, RTI Perftest Publisher is going to wait JUST FOR ONE subcriber, therefore, I believe the results you took are not valid.
If you want to specify the number of subscribers, you will need to do something like this:
- Specify in the publisher side the number of subscriber you will launch (-numSubscribers)
- Specify the id of each subscriber with -sidMultiSubTest <#> (# being 0, 1, 2, ..., N-1) in each subscriber.
Therefore you will need to launch something like this:
start cmd /k perftest_java.bat -dataLen 4096 -pub -domain X -numSubscribers 5 -executionTime Y
start cmd /k perftest_java.bat -dataLen 4096 -domain X -sidMultiSubTest 0
start cmd /k perftest_java.bat -dataLen 4096 -domain X -sidMultiSubTest 1
start cmd /k perftest_java.bat -dataLen 4096 -domain X -sidMultiSubTest 2
start cmd /k perftest_java.bat -dataLen 4096 -domain X -sidMultiSubTest 3
start cmd /k perftest_java.bat -dataLen 4096 -domain X -sidMultiSubTest 4
Second: With respect to the architecture of the system: In the scenario I just mentioned, the publisher side will wait until it finds 5 perftest applications acting as subscribers, then it will start doing a Throughput test.
Doing a throughput test means that it will start sending samples as fast as possible, and once every `latencyCount` samples (which for a Throughput test is 10000 samples), it will mark the sample so it is answered by one subscriber. The answer is the exact same sample, so, by getting the time when you sent it and the time when you receive it back you can get the Round-Trip Time (RTT), which is twice the latency.
This is also important: Doing a Throughput test will give you the maximum throughput (mbps) at what the publisher will be able to send samples to N subscribers. The latency you will get there is there impacted by the fact that you are in a crowed network, with your queues being full. If you want to test te minimum latency you will be able to achieve, you will need to do a Latency Test instead.
In order to do a latency test, you will only need to add `-LatencyTest` to your Perftest publisher command line parameters. This will change the behavior of the test. Now, instead of trying to send as fast as possible, it will do a ping pong test: Send a sample and wait until it receives it back to calculate the RTT (and therefore the Latency), then send again.
Last: In this scenario with multiple subscribers and since perftest uses by default unicast, I highly recommend you test also with the `-multicast` parameter, since it should help you optimize your bandwidth (sending one single packet per sample, instead of having to send one packet containing the sample to each subscriber).
Hope all this helps you. Let me know if you have further questions.
Hi Javier,
Apologies for the late reply but I want thank you greatly. I really appreciate the descriptive explanation. I now understand the testing variations better now.
Thanks!
Blitz3r