Data Fields | |
DDS_Long | max_samples |
Represents the maximum samples the middleware can store for any one DDS_DataWriter (or DDS_DataReader). | |
DDS_Long | max_instances |
Represents the maximum number of instances a DDS_DataWriter (or DDS_DataReader) can manage. | |
DDS_Long | max_samples_per_instance |
Represents the maximum number of samples of any one instance a DDS_DataWriter (or DDS_DataReader) can manage. | |
DDS_Long | initial_samples |
<<eXtension>> Represents the initial samples the middleware will store for any one DDS_DataWriter (or DDS_DataReader). | |
DDS_Long | initial_instances |
<<eXtension>> Represents the initial number of instances a DDS_DataWriter (or DDS_DataReader) will manage. | |
DDS_Long | instance_hash_buckets |
<<eXtension>> Number of hash buckets for instances. |
For the reliability protocol (and DDS_DurabilityQosPolicy), this QoS policy determines the actual maximum queue size when the DDS_HistoryQosPolicy is set to DDS_KEEP_ALL_HISTORY_QOS.
In general, this QoS policy is used to limit the amount of system memory that RTI Data Distribution Service can allocate. For embedded real-time systems and safety-critical systems, pre-determination of maximum memory usage is often required. In addition, dynamic memory allocation could introduce non-deterministic latencies in time-critical paths.
This QoS policy can be set such that an entity does not dynamically allocate any more memory after its initialization phase.
If DDS_DataWriter objects are communicating samples faster than they are ultimately taken by the DDS_DataReader objects, the middleware will eventually hit against some of the QoS-imposed resource limits. Note that this may occur when just a single DDS_DataReader cannot keep up with its corresponding DDS_DataWriter. The behavior in this case depends on the setting for the RELIABILITY. If reliability is DDS_BEST_EFFORT_RELIABILITY_QOS, then RTI Data Distribution Service is allowed to drop samples. If the reliability is DDS_RELIABLE_RELIABILITY_QOS, RTI Data Distribution Service will block the DDS_DataWriter or discard the sample at the DDS_DataReader in order not to lose existing samples.
The constant DDS_LENGTH_UNLIMITED may be used to indicate the absence of a particular limit. For example setting DDS_ResourceLimitsQosPolicy::max_samples_per_instance to DDS_LENGTH_UNLIMITED will cause RTI Data Distribution Service not to enforce this particular limit.
If these resource limits are not set sufficiently, under certain circumstances the DDS_DataWriter may block on a write() call even though the DDS_HistoryQosPolicy is DDS_KEEP_LAST_HISTORY_QOS. To guarantee the writer does not block for DDS_KEEP_LAST_HISTORY_QOS, make sure the resource limits are set such that:
The setting of RESOURCE_LIMITS max_samples_per_instance
must be consistent with the HISTORY depth
. For these two QoS to be consistent, it must be true that depth <= max_samples_per_instance.
Represents the maximum samples the middleware can store for any one DDS_DataWriter (or DDS_DataReader).
Specifies the maximum number of data samples a DDS_DataWriter (or DDS_DataReader) can manage across all the instances associated with it.
For unkeyed types, this value has to be equal to max_samples_per_instance if max_samples_per_instance is not equal to DDS_LENGTH_UNLIMITED.
When batching is enabled, the maximum number of data samples a DDS_DataWriter can manage will also be limited by DDS_DataWriterResourceLimitsQosPolicy::max_batches.
[default] DDS_LENGTH_UNLIMITED
[range] [1, 100 million] or DDS_LENGTH_UNLIMITED, >= initial_samples, >= max_samples_per_instance, >= DDS_DataReaderResourceLimitsQosPolicy::max_samples_per_remote_writer or >= DDS_RtpsReliableWriterProtocol_t::heartbeats_per_max_samples
For DDS_DataWriterQos max_samples >= DDS_DataWriterProtocolQosPolicy::rtps_reliable_writer.heartbeats_per_max_samples if batching is disabled.
Represents the maximum number of instances a DDS_DataWriter (or DDS_DataReader) can manage.
[default] DDS_LENGTH_UNLIMITED
[range] [1, 1 million] or DDS_LENGTH_UNLIMITED, >= initial_instances
Represents the maximum number of samples of any one instance a DDS_DataWriter (or DDS_DataReader) can manage.
For unkeyed types, this value has to be equal to max_samples or DDS_LENGTH_UNLIMITED.
[default] DDS_LENGTH_UNLIMITED
[range] [1, 100 million] or DDS_LENGTH_UNLIMITED, <= max_samples or DDS_LENGTH_UNLIMITED, >= DDS_HistoryQosPolicy::depth
<<eXtension>> Represents the initial samples the middleware will store for any one DDS_DataWriter (or DDS_DataReader).
Specifies the initial number of data samples a DDS_DataWriter (or DDS_DataReader) will manage across all the instances associated with it.
[default] 32
[range] [1,100 million], <= max_samples
<<eXtension>> Represents the initial number of instances a DDS_DataWriter (or DDS_DataReader) will manage.
[default] 32
[range] [1,1 million], <= max_instances
<<eXtension>> Number of hash buckets for instances.
The instance hash table facilitates instance lookup. A higher number of buckets decreases instance lookup time but increases the memory usage.
[default] 1 [range] [1,1 million]