How can I increase performance of Database Integration Service?


I set up the RTI DB Integration Service to store samples of DDS and I used MySQL for the RDBMS.
I wanted to know how many samples are stored in a second, so I tested.

And the result was embarrassed, because under 100 samples were stored in a second.
(Of course, I published more than 100 samples per a second from a localhost datawriter.)

Understanding on_sample_lost LOST_BY_WRITER

Trying to understand the causes of this error, how it's reported, and how to narrow down possible solutions

Data overhead of each packet & domain ID size


I have two questions;

1- What is the data overhead of DDS Connext v 5.2.0? I read a document about it ( which said it is 56 byte. But I'm wondering where the dynamic data and dynamic type of every packet are stored. I think they definitely need more space.

2- Is it possible to increase domain ID size? It's 8 bits (0 to 232 plus reserved IDs) (For example increase it to a 16 bits word)

Thanks in advance for your answer :)

Subscriber dropping samples (can't keep up ?)

I have a publisher/subscriber pair (created using  DDSTheParticipantFactory->create_participant_from_config). The subscriber uses a dynamic reader and waits on DDS_DATA_AVAILABLE_STATUS to receive new data from the publisher. At publication rates of > around 5 Hz, the subscriber begins to "miss" new samples, getting worse as the publication rate is increased. It will typically go for 1 - 3 seconds without seeing new samples, then receive a short burst (2 - 10) of consecutive samples, and repeat this cycle.


DDS_DynamicData::get_complex_member() performance

I have written code to traverse dynamic data to collect data (read only) of samples. The code yields the correct results, however, performance can be very slow. In particular, traversing samples with arrays of structures. Running valgrind, 70% of call time is dedicated to get_complex_member().  I have also tried bind_complex_member() which is 40% slower, and is counter to what I expected (eliminating the overhead of copying should be faster.)

large data at high rate


I am trying to send 440k at 22Hz.

the QOS profile set at the publisher is:

{reliability = false, deadline = 0, priority = 0, history = 1, durability = VOLATILE, hasKey = false}

So really this is just a bestEffort-Volatile writer.

Reader is set up same.

It's a pretty busy network.  My reader displays the topics/sec as a user feedback mechanism.  And although it often sustains 20-22Hz, it can dip as low at 4-6, and will frequently stay at 16Hz for periods of time.


Performance implications for using XTypes

We are looking into using the DynamicData / DynamicType interfaces specified by the DDS-XTypes standard. The spec mentions "may be lower performance to use than plain data objects" for the use of "dynamic language bindings". Before we dive deeper into trying it and building prototypes with that we would like to ask for an assessment about the performance implications. We are intrested in a rough estimation (rather then exact numbers).

Is the performance impact mostly limited to the discovery phase or does it affect the handling of every single message?


[Reposted] How to configure data reader to receive data in the order that are sent?

Please help, I am in a crunch mode for a demo and my DDS app is not behaving as expected.

I have two apps running in a standalone linux box.  App1 has one publisher with 4 datawriters, one for each topic.  This is supposed to be a realtime app which is required to write hundreds of messages per topic for each 640ms.  App2 is the receivers of all the messages that App1 publishes, one receiver per topic.  I am using UDP unicast for transport with ASYNCHRONOUS_PUBLISH_MODE_QOS and RELIABILITY_QOS.


Measuring Performance with PerfTest Utility

This video guides users through architecting, building, and running tests with PerfTest, a free utility that measures throughput and latency when using RTI Connext DDS. 

This is module #26 of 27 in RTI Connext™ DDS Online Training, part of the RTI eLearning program. Watch other free modules in the RTI eLearning program.


Publishing only the changed fields

Hi all,

I'm wondering if there is a way to write only a member subset of a complex type so that, for instance, I could send those members whose value has changed.




Subscribe to RSS - Performance