RDMA设计64:数据吞吐量性能测试分析

本博文主要交流设计思路,在本博客已给出相关博文约190篇,希望对初学者有用。 注意这里只是抛砖引玉,切莫认为参考这就可以完成商用IP 设计。

这里将在基于 XCZU47DR FPGA 核心的开发板上对 RoCE v2 高速传输系统进行数据吞吐量、包吞吐量及传输延迟性能测试,并对测试结果进行解读与分析。

数据吞吐量是评估连续数据传输性能的核心指标,数据吞吐量越高,表明系统面临大量数据传输请求时拥有更强的数据传输能力和更高的速率。由于数据吞吐量受队列数量及队列深度影响较小,故这里使用单队列对不同长度的数据包进行数据吞吐量测试。在进行数据吞吐量测试时由于 SEND 指令为双边语义,不涉及到大量数据的传输,故数据吞吐量测试只对 READ 和 WRITE 指令进行。同时由于远程主机内存限制,进行数据吞吐量测试时的传输长度为 1MB-1GB。数据吞吐量测试结果如图 1所示。

由于 READ 和 WRITE 指令单边语义的特点,在进行数据交互时,并不需要远程主机 CPU 参与,故无法直接使用 CPU 监控的方式进行数据吞吐量测试。在进行 READ指令数据吞吐量测试时,通过在 FPGA 侧对收到的数据字节数进行统计,当收到的数据字节数等于期望的数据量是,则认为数据传输结束,以此时间来计算数据吞吐量。而对于 WRITE 指令,在 FPGA 侧进行数据字节数统计的方式并不严谨,故在远程主机上持续轮询内存数据边界,当内存边界数据与预期相同时,则认为数据传输结束,计算数据吞吐量。

图1 数据吞吐量测试结果图

测试结果图表明,WRITE 指令数据吞吐量一直大于 READ 指令数据吞吐量,原因有以下两点。第一个原因是,READ 指令由远程主机响应并处理数据,其数据吞吐量与远程主机 PCIe 总线性能及 DDR 读取、寻址操作等强相关。其二是 WRITE 指令数据包在 FPGA 上组装,远程主机只负责将数据写入 DDR,而 READ 指令则需要远程主机从 DDR 中读取数据,并组装数据包后在发送给 FPGA。以上两点原因共同作用导致 READ 指令数据吞吐量小于 WRITE 指令数据吞吐量。

当传输长度从 1MB 向 1GB 递增时,READ 指令与 WRITE 指令的传输速度均呈上升趋势,持续逼近理论速率极限,并在传输长度大于 128 MB 后趋于稳定。上图中给出的数据吞吐量为去掉所有头部开销后,净数据的传输速率。如果包含所有头部开销,则 READ 指令数据吞吐量为 92.10 Gbps,WRITE 指令数据吞吐量为 97.49 Gbps,速率接近理论极限且大于项目要求速率 90 Gbps,可以满足项目设计需求,实现了设计目标。此外的,麦洛斯 CX455-A 网卡工作在 Ethernet 物理层模式下时,存在一定程度上的理论速率降低现象,理论极限速率约为 98.5Gbps。故本设计实现的 RoCE v2

高速传输系统数据吞吐量已逼近理论极限速率。

相关推荐
库玛西1 小时前
深入浅出传输层:UDP 与 TCP 协议全景指南
linux·服务器·网络·c++·笔记·tcp/ip·udp
STQY燊桐启元(深圳)电子科技10 小时前
医疗精密电源散热方案:相变陶瓷片保障医疗设备长效稳定低干扰
大数据·网络·人工智能
CDN36012 小时前
节点智能调度实操:解决出海区域访问快慢不均、节点拥堵、跨洋延迟高,CDN 全网择优落地方案
运维·服务器·网络
roman_日积跬步-终至千里12 小时前
【数据治理(6)】DataOps 不是调度工具,而是让数据产品长期可信的运行机制
java·服务器·网络
可乐鸡翅yeah_14 小时前
个人 / 外包流媒体项目交付实战,M3U8 验收与问题闭环完整工作流
运维·网络·python·低代码·django·m3u8·在线播放
黄俊懿16 小时前
【架构师从入门到进阶】第五章:DNS&CDN&网关优化思路——第十节:网关安全-单向加密
网络·数据库·计算机网络·安全·架构·系统架构·架构师
Patrick在香港16 小时前
Python 拉取城巴开放数据:406 条路线,香港岛巴士网络的数字画像
网络·python·数据分析·php·数据可视化·香港·开放数据
一直C16 小时前
Linux系统编程|进程间通信IPC全套详解(1)(管道、信号)
linux·c语言·开发语言·网络·青少年编程·visual studio code
Experience-摆渡16 小时前
自建 IP 轮换方案实战:健康探测 + 熔断剔除 + 粘性会话
网络·网络协议·tcp/ip
luj_176816 小时前
合法避税与投资评估实战指南
c语言·开发语言·网络·经验分享·算法