参考:fastRTPS的doc文档
FastRTPS源码包里面有test文件夹,里面是一些测试工具,这里主要用吞吐量测试和延迟测试。
在编译的时候指定编译测试工具:
cmake -DPERFORMANCE_TESTS=ON -DTHIRDPARTY=ON
make
消息在系统中的传递时间。
在网络中,单向延迟是从发送端发出数据包到接收端接收到数据包到时间,往返延迟就是从发送端发出数据包到接收端返回数据包到时间。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。
在通信网络中,吞吐率是指通信通道成功传递消息的速率。用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是恢复时间,这是为了防止阻塞读写通道。过程图:
到../test/performance目录下执行:
./Throughout publisher
./Throughout subscriber
publisher参数:
subscriber参数:
示例:
ThroughtputTest publisher -f payload_demands.csv
ThroughtputTest publisher -s 1024 -d 1000