How do I use tools (Analyzer, Monitor, Admin Console) with changed transport settings?
I've changed my transport settings to increase the amount of throughput I can achieve in my application, or I am using RTI Connext DDS 5.1.0 tools with previous versions of the middleware. When I run RTI Analyzer, RTI Monitor, or RTI Admin Console on a different machine I get incomplete discovery. When I run the tools on the same machine as my application, I see these errors:
NDDS_Transport_Shmem_attach_writer:incompatible shared memory segment found. Found segment with max message size 9216. Needed 65507.
How do I configure the tools to communicate correctly with my applications?
For more information on the causes of this error message, see this knowledge base article.
If you have configured your transport settings in XML in your applications, the easiest way to configure Analyzer to use the same transport settings you use is to specify a QoS profile using your XML file. However, if you are simply trying to use Analyzer with older versions of RTI Connext DDS, you may not have modified the transport settings in your XML file, and you will have to configure Analyzer through its configuration dialogs. Both of these options are described in more detail in chapter 4 of the RTI Analyzer Getting Started Guide.
To configure RTI Analyzer to work with changed settings, first click on the "Configure" button in the Agent Control panel (lower left corner).
Then, select (or add) the domain you are interested in.
Configure Analyzer with XML
If you have an XML file with the correct transport settings, the easiest way to configure Analyzer is to point it to that XML file. To do that, click on "Configure using XML QoS Profile." Then, enter the XML QoS file name, the QoS library name, and the QoS profile names that you are using for your application.
Configure Analyzer in the Configuration Dialog
If you do not have an existing XML file with the transport settings you want to use, you can configure Analyzer configuration dialog. To do this, first select the Transport Properties tab:
In the transport properties, edit the following fields to set them to the size you want. If you are configuring Analyzer to be backward-compatible with versions of RTI Connext DDS before 5.1.0, all of these settings should be set to 9216. Otherwise, set these values to correspond with the values your application is using.
- send_socket_buffer_size (this can be the size of your message_size_max or larger, or 9216 for backward compatibility)
- recv_socket_buffer_size (this can be the size of your message_size_max or larger, or 9216 for backward compatibility)
- message_size_max (max of 65536 for UDP, or 9216 for backward compatibility)
- message_size_max (max of 65536 for shared memory, or 9216 for backward compatibility)
For Analyzer 5.0.0 and earlier only go to the Resource Limits tab:
- Receiver pool buffer size (set this to the largest message_size_max of any of your transports)
The RTI Monitor tool has an XML configuration file that it reads at startup to get information such as transport settings. You must edit or replace this file to change the transport settings. You can find more detail on how to do this in the RTI Monitor User's Manual.
If you have installed RTI Connext DDS in your "Program Files" directory on Windows, you may have to edit this file as Administrator to be allowed to overwrite it.
The file is located in:
- For 5.1.0 and previous versions: <NDDS install directory>\RTI_Monitor_5.0.0\config\rtimonitor_qos_profiles.xml
- For 5.2.0 and older versions: <NDDSHOME>/resource/xml/RTI_MONITOR_QOS_PROFILES.xml
The following snippet shows the transport settings that need to be added for shared memory and UDP. Note that the settings have a value of 65530 in this example – if you are changing your transport settings to something other than 65530, you must change this value to match your transport size.
<participant_qos> ... <property> <value> <!-- Add the following settings to enable large data for UDPv4 transport --> <element> <name>dds.transport.UDPv4.builtin.parent.message_size_max</name> <value>65530</value> </element> <element> <name>dds.transport.UDPv4.builtin.send_socket_buffer_size</name> <value>65530</value> </element> ... <!-- Add the following settings to enable large data for shared memory transport --> <element> <name>dds.transport.shmem.builtin.parent.message_size_max</name> <value>65530</value> </element> <element> <name>dds.transport.shmem.builtin.receive_buffer_size</name> <value>65530</value> </element> <element> <name>dds.transport.shmem.builtin.received_message_count_max</name> <value>32</value> </element> </value> </property> ... </participant_qos>
RTI Administration Console
The RTI Administration Console allows you to configure a QoS profile for each domain it joins. You configure the domain information by clicking on the Preferences icon:
This will open up the Preferences dialog box. Under "Connection" in the Preferences, you can select a QoS profile for all domains, or for each domain you plan to join. To use the XML QoS profile that contains your tranport settings, click on Add File. Add your XML QoS file, and select the QoS profile containing your transport settings.