【FastRTPS】测试Test

参考:fastRTPS的doc文档

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

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

cmake -DPERFORMANCE_TESTS=ON -DTHIRDPARTY=ON
make

延迟(Latency)

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

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

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

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

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

./LatencyTest publisher
./LatencyTest subscriber

publisher参数:

subscriber参数:

补充说明:

-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<Test_Time)
      1. write demand messages
      2. Time t2 = now()
      3. iterations++;
      4. wait 50 ms
    4. total_time = t2-t1-iterations*50ms
    5. throughput=demand*msg_size*iterations/total_time

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

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

./Throughout publisher
./Throughout subscriber

publisher参数:

subscriber参数:

示例:

ThroughtputTest publisher -f payload_demands.csv

ThroughtputTest publisher -s 1024 -d 1000

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值