性能测试方法
性能测试方法一
- 步骤一:进程A记录起始时间戳start_time。
- 步骤二:进程A通过topic1发送数据给进程B,数据中可以打上当前时间戳send_time,便于分析单向发送的延时;
- 步骤三:进程B把收到的数据不做任何修改,通过topic2再次发送给进程A。
- 步骤四:进程A收到数据了,用当前时间戳recv_time减去数据包中的send_time,就可以得到单次往返的时间间隔。
- 步骤五:进程A通过循环不断的给进程B发送数据,发送当前数据时不需要等待前面的数据回来,直到所有数据发送完毕。
- 步骤六:进程A在收到最后一个数据之后,记录下结束时间戳end_time。
- 步骤七:进程A计算并打印出基础统计信息:
- 起始时间:start_time
- 结束时间:end_time
- 总的耗时(单位:微秒):end_time - start_time
- 每次发送数据大小(字节):
- 总共发送数据大小(字节):
- 总的发送次数(总共发送数据大小 / 每次发送数据大小):
- 单次来回用时01(微秒):总的耗时 / 总的发送次数
- 单次来回用时02(微秒):这个和上面那个计算方式有些区别,是计算每个数据包往返的平均值。 ((recv_time01 - send_time01)+(recv_time02 - send_time02) +...))/n,这里的n就是总的发送次数
- 把结论记录到表格中。
性能测试方法二
- 步骤一:进程A记录起始时间戳start_time。
- 步骤二:进程A按指定的帧率发送数据。帧率可以设置为20fps,25fps,30fps,50fps,100fps,200fps,500fps,1000fps等。发送的数据中可以打上当前时间戳send_time,便于分析单向发送的延时。
- 步骤三:进程B收到数据之后。
- 记录下收到数据的个数。
- 用当前的时间戳 - 数据包中的send_time = 单向传输延迟(微秒)
- 步骤四:进程A发送完所有数据之后,记录下结束时间戳end_time。
- 步骤五:进程A计算并打印出基础统计信息:
- 起始时间:start_time
- 结束时间:end_time
- 总的耗时(单位:微秒):end_time - start_time
- 每次发送数据大小(字节):
- 总共发送数据大小(字节):
- 总的发送次数(总共发送数据大小 / 每次发送数据大小):
- 发送帧率fps(一秒发送几个消息):
- 步骤六:手动停止进程B,进程B计算并打印出基础统计信息:
- 收到的数据包总个数:
- 单向传输延迟 Latency(微秒):计算每个数据包传输的平均值。
- 丢包率((进程A发送的数据包总数 - 收到的数据包总个数)/ 进程A发送的数据包总数):
- 吞吐量 Throughput(MByte/s):收到的所有字节数量 /(结束时间 - 开始时间)
注意事项:
- 测试前需要尽量把电脑中无关的程序都关闭了,避免影响。
- 如果是用wsl测试的,需要备注是用了wsl。
- 需要测试单次发送不同大小的数据量,比如(512Byte,1024Byte,2048Byte,5KByte,10KByte,最大到32MByte)等。
- 同样配置最好多次测量,并把测量结果记录表格。
- ConnectX底层接入的中间件都需要进行测试并记录,比如(libflow,minieyedds,nanomsg,fastdds,some/ip)等,确保整体性能符合预期。