【FastRTPS】测试Test

参考:fastRTPS的doc文档

FastRTPS源码包里面有test文件夹,里面是一些测试工具,这里主要用吞吐量测试和延迟测试。

在编译的时候指定编译测试工具:

cmake -DPERFORMANCE_TESTS=ON -DTHIRDPARTY=ON
make

延迟(Latency)

消息在系统中的传递时间。

在网络中,单向延迟是从发送端发出数据包到接收端接收到数据包到时间,往返延迟就是从发送端发出数据包到接收端返回数据包到时间。FastRTPS就是测试的往返延迟。

在RTPS通信中,延迟是从publisher序列化并发送数据到subscriber接收并反序列化数据的时间。往返延迟就是

从publisher发送到subscriber接收并返回到publisher到时间。如下图:

【FastRTPS】测试Test_第1张图片

【FastRTPS】测试Test_第2张图片

 到../test/performance目录下执行:

./LatencyTest publisher
./LatencyTest subscriber

publisher参数:

【FastRTPS】测试Test_第3张图片

subscriber参数:

【FastRTPS】测试Test_第4张图片

补充说明:

-r 是参与者的工作模式(reliable可靠模式、besteffort高效模式)

-n 是subscriber的个数

-s 是发送数据包的个数

例如:./LatencyTest publisher -n 1 -s 10000

测试结果单位是us。

吞吐率(Throughout)

在通信网络中,吞吐率是指通信通道成功传递消息的速率。用B/s(字节/秒)表示。通常测试方法是发送一个大文件(或几个小文件),然后测量到另一端到时间,最后用数据量除以时间。

在RPTS通信中吞吐率测量方法:在规定时间内发送多组消息,并获取已接收的数据量。并通过测试不同的demands(连续发送的消息数)来获取最大吞吐量。测试过程伪代码:

1. for msg_size = {16,32,...,8192}
  1. for demand = {500,750,850,1000,1250,1400,1500,1600,1750,2000}
    1. iterations = 0;
    2. Time t1=now()
    3. while(t2-t1

对每一种消息大小(16~8192),每种需求(500~2000),都尽量在测试时间内发送最大数据量。50ms是恢复时间,这是为了防止阻塞读写通道。过程图:

【FastRTPS】测试Test_第5张图片

到../test/performance目录下执行:

./Throughout publisher
./Throughout subscriber

publisher参数:

【FastRTPS】测试Test_第6张图片

subscriber参数:

【FastRTPS】测试Test_第7张图片

示例:

ThroughtputTest publisher -f payload_demands.csv

ThroughtputTest publisher -s 1024 -d 1000

你可能感兴趣的:(FastRTPS)