3.1.2.1.17 ResourceLimitsQosPolicy
该QoS策略控制服务可以使用的资源,以满足应用程序和其他QoS策略施加的要求。
QoS策略数据成员列表:
数据成员名称 | 类型 | 默认值 |
---|---|---|
max_samples | int32_t | 5000 |
max_instances | int32_t | 10 |
max_samples_per_instance | int32_t | 400 |
allocated_samples | int32_t | 100 |
extra_samples | int32_t | 1 |
max_samples: 控制DataWriter或DataReader可以管理的最大样本数量,适用于所有关联实例。换句话说,它表示中间件可以为DataReader或DataWriter存储的最大样本数。值小于或等于0表示无限资源。
max_instances: 控制DataWriter或DataReader可以管理的最大实例数量。值小于或等于0表示无限资源。
max_samples_per_instance: 控制在一个实例中,DataWriter或DataReader可以管理的最大样本数量。值小于或等于0表示无限资源。
allocated_samples: 指定初始化时将分配的样本数量。
extra_samples: 指定将在池中分配的额外样本数量,因此池中的最大样本数将是
max_samples
加上extra_samples
。这些额外样本在历史记录已满时作为样本储备存在。
注意: 此QoS策略适用于Topic、DataWriter和DataReader实体,并且不能在启用实体上更改。
一致性规则
为了维护ResourceLimitsQosPolicy内的一致性,数据成员的值必须遵循以下条件:
max_samples
的值必须大于或等于max_samples_per_instance
的值。为HistoryQosPolicy深度设定的值必须小于或等于
max_samples_per_instance
所述的值。
示例
// 此示例使用一个 DataWriter,但也可应用于 DataReader 和 Topic 实体
DataWriterQos writer_qos;
// ResourceLimitsQosPolicy默认构造时max_samples = 5000
// 将max_samples更改为2000
writer_qos.resource_limits().max_samples = 2000;
// ResourceLimitsQosPolicy默认构造时max_instances = 10
// 将max_instances更改为20
writer_qos.resource_limits().max_instances = 20;
// ResourceLimitsQosPolicy默认构造时max_samples_per_instance = 400
// 将max_samples_per_instance更改为100
writer_qos.resource_limits().max_samples_per_instance = 100;
// ResourceLimitsQosPolicy默认构造时allocated_samples = 100
// 将allocated_samples更改为50
writer_qos.resource_limits().allocated_samples = 50;
// 使用修改后的QoS创建相应实体
writer_ = publisher_->create_datawriter(topic_, writer_qos);
总结
ResourceLimitsQosPolicy提供了一种方式来限制和控制服务组件(如DataWriter和DataReader)所能使用的系统资源。这些限制对于确保系统稳定性、性能以及合理分配资源非常重要。在实际应用中,需要根据具体需求对这些参数进行调整,以达到最佳性能效果。
内容由零声教学AI助手提供,问题来源于学员提问