Configurin DDS parameters(Qos) for be... PreviousNext
Data Distribution Service (DDS) Forum > DDS Technical Forum >
Next message Janez Golob  posted on Tuesday, March 17, 2009 - 03:18 pm

I am wonder how can I achieve maximum troughput and or the lowest latency?

Which settings and Qos are importand (maxBurstSize...)? Currently I achieve very bad throughput (1GB network is utalized 20%). It seems that sender/publisher sends packages every 10ms.

My current settings:
packet size 1200 B (char sequence, max =1000000)
reliable qos
queue size 10
resolution 10ms

Thanks in advance.
Next message Hans van 't Hag  posted on Tuesday, March 17, 2009 - 03:46 pm
Hi Janez,

As this is a generic DDS forum, I'd suggest to direct product/vendor-specific questions directly to the support-organization of the DDS-vendor.

Next message Reinier Torenbeek  posted on Tuesday, March 17, 2009 - 03:50 pm
Hello Janez,

Please note that there is a difference between configuration parameters and QoS policies. Configuration parameters are not standardized and can be different for each vendor. The mechanisms for setting configuration parameters can be (and are) different for each vendor. With OpenSplice, the configuration parameters are set in a configuration XML and your application is not aware of those.
The QoS policies are standardized and appear in your code. Let's focus on you application first before going into detailed configuration settings.
I assume that your test tries to write char sequences with a length of 1,000,000 bytes as fast as possible in a tight loop -- is that correct? Typically, your application can write faster than it can be delivered to the network. So in order to avoid a situation where you are overloading the backbone, you should set the RESOURCE_LIMITS QoS on the dataWriter side, for example with max_samples=1. As soon as the middleware requires the dataWriter history to store 1 sample for reliability because it can not deliver it directly, your dataWriter will slow down. You can check whether this happens by checking the return value of the dataWriter.write() method and see if it gave a RETCODE_TIMEOUT. If it did, you can retry until it returns with RETCODE_OK. Or you can just set the max_blocking_time to a large value, if you don't mind being blocked for a while.
Concerning the configuration parameters: I will limit myself to the maxBurstSize for now -- let's see how far this brings you. The maxBurstSize parameter identifies the maximum number of bytes that are sent to the network per resolution tick (=10ms in your case). By default, its value is 200,000, which results in 20,000,000 bytes/second -- sounds like 20% on a GB network...

Next message Janez Golob  posted on Tuesday, March 17, 2009 - 06:21 pm
I try to write various char sequences [100B - 1000.000B] in tight loop and for that reason I defined in idl file max sequence length 100.000.

I set following Qos in datawriter side:
max samples = 1
max blocking time 1s
duration = 0.0s

I use Open Splice DDS and its xml settings:
maxBurstSize: 10000000 which is far enough for 1GBs network
resolution 10ns
QueueSize 10000

What else can I consider? The maxBurstSize is not a problem. Thanks.
Back to top
Add Your Message Here
Username: Posting Information:
This is a private posting area. Only registered users and moderators may post messages here.
Options: Post as "Anonymous"
Enable HTML code in message
Automatically activate URLs in message