RTI Connext DDS Micro
Version 2.4.7
|
Modules | |
Datasheet for armv6leLinux2.6gcc4.6.3 | |
Datasheet for i86Linux2.6gcc4.1.1 |
This document provide metrics for the RTI Connext DDS Micro libraries. The information contained here is only meant as guidance and actual numbers will vary across different hardware and compilers. Please note that the numbers are generated before the final release and the source-code line count and library sizes may vary slightly. Performance numbers are always valid for the final release. Datasheets are provided for the following two platforms:
The following information is gathered for each architecture with a data-sheet:
This section provides information on how to interpret this information.
The "Source Line Count" section gives the size of each library in terms off effective lines of source-code (ELOC) and is gathered from the pre-processed files for the release library only. The ELOC number only include lines with source that directly contribute to the object-files. For example, the following are not included:
The ELOC number by itself is not very useful, but is provided since it is a frequently asked question.
The "Library Size" section gives the size of each shared library's text,bss and data segment in bytes. This number is retrieved using the GCC size command on Linux.
The "Heap" section provides information about how much dynamically allocated memory is used by RTI Connext DDS Micro. It should be noted that exact numbers are very difficult to estimate and that the numbers should used as guidance. Please refer to Introduction for a more information on resource-limits and memory usage.
On Linux, for each heap allocation using malloc, malloc_usable_size() is called to determine the actual size of each allocation. The numbers include resources used by the RH_SM, WH_SM, and UDP components, but not the resources used by the dynamic discovery component (DPDE) or the static discovery component (DPSE). In addition, please note that the memory does not include memory for the actual user-data. This must be added according to the resource-limits.
Two tables are provided: one for debug libraries and one for release libraries. The size for entities that are controlled by resource-limits are provided. In addition, a formula is provided to estimate the amount of memory used by a data-reader and data-writer as these are typically the ones that consume most of the memory. The following short-hands are used in these formulas:
The throughput is measured between two identical machines using the test configuration is shown below.
+-----------+ +----------+ | | | | | Sender +----------Sample --------->| Receiver | | | | | +-----------+ +----------+
Interpretation of the measurements:
The round-trip latency is measured between two identical machines using the test configuration is shown below.
+-----------+ +--------+ | +----- PING --------------->| | | Sender | | Echoer | | |<-----PONG ----------------+ | +-----------+ +--------+
The latency is measured by sending one PING sample and wait for the Echoer to return the PONG sample. The sender then records the time it took to receive the PONG sample. The test is repeated a number of times for each size. Note that it is the round-trip latency that is measured.
Interpretation of the measurements (all numbers are reported in micro-seconds):
The DPDE plugin is a DDS application that advertises locally created DDS entities and listens for DDS entities available in the DDS data-space. It is implemented using the DDS APIs supported by RTI Connext DDS Micro.
The DPDE plugin creates the following DDS entities:
The DPDE plugin also registers the following three types:
All heap memory allocated by the DPDE plugin is allocated after the DDS DomainParticipant is created (no additional memory is allocated after the DDS DomainParticipant is enabled).
The DPSE plugin is a DDS application that only advertises locally created DDS DomainParticipants and listens for other DDS DomainParticipants available in the DDS data-space. It is implemented using the DDS APIs supported by RTI Connext DDS Micro.
The DPSE plugin creates the following DDS entities:
The DPSE plugin also registers the following type:
All heap memory allocated by the DPSE plugin is allocated after the DDS DomainParticipant is created (no additional memory is allocated after the DDS DomainParticipant is enabled).
RTI Connext Micro uses multiple threads. The timer thread is managed by the domain participant and cannot easily be removed. All the UDP threads are managed by the UDP transport and a different UDP transport implementation can choose a different threading model.
Thread | Heap | Default Stack(1) |
---|---|---|
Timer | N/A | 16384 |
UDP Receive | 8192 (2) | 16384 |