RTI Perftest可以将样本从28 Bytes发送到2,147,483,135 Bytes(2 GBytes - 512 Bytes - 8 Bytes),这对应于RTI Connext DDS能够在单个样本中发送的最大有效载荷。
数据大小由命令行参数-dataLen <bytes> 。 根据此参数, RTI Perftest将自动配置某些RTI Connext DDS行为。
在样本量小于或等于63000字节的情况下,默认情况下, RTI Perftest将使用带有序列的类型(绑定设置为63000个元素)。 如果样本量大于63000字节,则RTI Perftest将自动切换到与前面提到的类型相同的类型,但使用无界序列。这种行为背后的原因是,在RTI Perftest使用无界序列的情况下, RTI Connext DDS不会预先将序列分配给其最大值(与使用有界序列时相反)。 对于无界限成员,由RTI Connext DDS生成的代码将通过动态分配和解除分配内存来反序列化样本,以适应无界成员的实际大小。 无界 - -DynamicData (命令行参数-DynamicData )也支持序列和字符串。
除了使用Unbounded-Sequences外,通过设置大于63000字节的样本, RTI Perftest将启用异步发布 ,如RTI Connext DDS默认流量控制器。
用户想要使用Unbounded-Sequences,异步发布或不同于缺省值的流控制器但样本量小于63000字节的情况也受支持。 通过使用命令行参数 - 无-unbounded <managerMemory> , - -asynchronous和-flowController ,可以实现这些行为,请参阅测试参数部分以获取更多详细信息。
在此处查找样本大小配置为1GB的示例:
- Publisher:
bin/<architecture>/<release or debug>/perftest_cpp -pub -dataLen 1073741824
- Subscriber:
bin/<architecture>/<release or debug>/perftest_cpp -sub -dataLen 1073741824
这是RTI Perftest接受的完全有效的配置,但是,在某些情况下,由于样本量较大,此情况下的通信将受到限制或非最佳。因此可能需要进行一些额外的调整:
写入器端的发送队列的默认值是50 。 这可能是一个非常高的价值, RTI Connext DDS中间件可能无法在最佳条件下执行。 因此,对于大数据采样,建议将发送队列减少为较低值。
可以使用此参数来限制RTI Perftest发布样品的频率。 这有助于减少网络中的软件包数量,有助于实现更好的延迟和吞吐量数量。
由于样本量大于63000字节, RTI Perftest将启用异步发布。 通过启用该功能,您还可以使用默认的流量控制器 ,这可能不是最佳的。 指定针对场景所在网络定制的流量控制器可能是一种好的做法。
RTI Perftest提供了使用专为10Gbps网络和1Gbps网络设计的流量控制器的选项。 但是,通过访问perftest_qos_profiles.xml配置文件,可以修改这2个流量控制器,并根据特定的网络要求定制它们。
<qos_profile name="BaseProfileQos"> <participant_qos> . . . <property> <value> <element> <name>dds.flow_controller.token_bucket.10Gbps.token_bucket.max_tokens</name> <value>300</value> </element> <element> <name>dds.flow_controller.token_bucket.10Gbps.token_bucket.tokens_added_per_period</name> <value>200</value> </element> <element> <name>dds.flow_controller.token_bucket.10Gbps.token_bucket.bytes_per_token</name> <value>65536</value> </element> <element> <name>dds.flow_controller.token_bucket.10Gbps.token_bucket.period.sec</name> <value>0</value> </element> <element> <name>dds.flow_controller.token_bucket.10Gbps.token_bucket.period.nanosec</name> <value>10000000</value> </element> </value> </property> . . . </participant_qos> </qos_profile>
流量控制器和发送队列的具体值将高度依赖于执行测试的场景和机器,但作为一般性建议,建议进行以下更改:
- Publisher:
bin/<architecture>/<release or debug>/perftest_cpp -pub -dataLen 1073741824 -sendQueueSize 1 -flowController 1Gbps
- Subscriber:
bin/<architecture>/<release or debug>/perftest_cpp -sub -dataLen 1073741824