Setting the Maximum Gather-Send Buffer Count for UDPv4 and UDPv6

To minimize memory copies, Connext DDS uses the "gather send" API that may be available on the transport.

Some operating systems limit the number of gather buffers that can be given to the gather-send function. This limits Connext DDS's ability to concatenate multiple DDS samples into a single network message. An example is the UDP transport's sendmsg() call, which on some OSs (such as Solaris) can only take 16 gather buffers, limiting the number of DDS samples that can be concatenated to five or six.

To match this limitation, Connext DDS sets the UDPv4 and UDPv6 transport plug-ins' gather_send_buffer_count_max to 16 by default for all operating systems. This field is part of the NDDS_Transport_Property_t structure.

If you are using an OS that allows more than 16 gather buffers for a sendmsg() call, you may increase the UDPv4 or UDPv6 transport plug-in's gather_send_buffer_count_max from the default up to your OS's limit (but no higher than 128).

For example, if your OS imposes a limit of 64 gather buffers, you may increase the gather_send_buffer_count_max up to 64. However, if your OS's gather-buffer limit is 1024, you may only increase the gather_send_buffer_count_max up to 128.

By changing gather_send_buffer_count_max, you can increase performance in the following situations:

© 2018 RTI