How to increase socket buffer sizes on QNX
If you follow the recommendations on the Improve RTI Connext DDS Network Performance on Linux Systems KB article, you’ll see that the rmem/wmem_default settings need to be increased. These 2 settings have no limit.
On QNX, however, you’ll see that those 2 values have a limit: 233016 bytes. This limit is given by the sbmax value:
# sysctl -a | grep kern.sbmax kern.sbmax = 262144
If you try to increase the values over 233016, sysctl may not behave correctly. If on Connext you try to set a bigger send_socket_buffer_size (5000000) and you set verbosity to LOCAL, you’ll see this message:
NDDS_Transport_UDPv4_SocketFactory_setSendBufferSize:The specified send_socket_buffer_size, 5000000, was not set. The actual send socket buffer size is 9216
In order to increase the sbmax value (for instance, to ~6 MB), you have to run the following:
# sysctl -w kern.sbmax=6000000
# sysctl -w net.inet.udp.sendspace="5000000" net.inet.udp.sendspace: 9216 -> 5000000 # sysctl -w net.inet.udp.recvspace="5000000" net.inet.udp.recvspace: 41600 -> 5000000
If you run an application with verbosity LOCAL and setting those new buffers, the warning message will disappear.