Limitations of shared memory

Due to the manner in which data is exchanged over shared memory, there are some limitations to the types of data that may be exchanged, and delivery are required to ensure their correct functioning.

Fixed size data types

The data types to be exchanged need to have a fixed size. This precludes the use of strings and sequences at any level in the data type. This does not prevent the use of arrays, as their size is fixed at compile time. If any of these types of member variables are encountered in the IDL code generating the data types, shared memory exchange is disabled.

A possible workaround for this limitation is to use fixed size arrays of chars instead of strings (and arrays of other types in stead of sequences), and accept the overhead.

iceoryx data exchange

The manner in which the Eclipse iceoryx memory pool keeps track of exchanged data puts a number of limitations on the QoS settings. For Writers, the following QoS settings are prerequisites for shared memory exchange:

Liveliness

DDS_LIVELINESS_AUTOMATIC

Deadline

DDS_INFINITY

DDS_INFINITY is a define in Cyclone DDS that indicates an amount of time in excess of the maximum duration that can be represented. It is used to tell the interface that this duration is infinite. If timeouts depend on this duration, they will never occur in the program’s lifetime. Due to this, some code paths can differ, and be more efficient.

Reliability

DDS_RELIABILITY_RELIABLE

Durability

DDS_DURABILITY_VOLATILE

History

DDS_HISTORY_KEEP_LAST

The depth is no larger than the publisher history capacity as set in the configuration file

For Readers, the following QoS settings are prerequisites for shared memory exchange:

Liveliness

DDS_LIVELINESS_AUTOMATIC

Deadline

DDS_INFINITY

Reliability

DDS_RELIABILITY_RELIABLE

Durability

DDS_DURABILITY_VOLATILE

History

DDS_HISTORY_KEEP_LAST

The depth is no larger than the subscriber history request as set in the configuration file

If any of these prerequisites are not satisfied, shared memory exchange is disabled and data transfer falls back to the network interface.

A further limitation is that the maximum number of subscriptions per process for the iceoryx service is 127.

Operating system limitations

The limit on the operating system. iceoryx has no functioning implementation for the Windows operating system. Refer to iceoryx issues for further information.