告别硬件依赖:用Soft-RoCE和`perftest`给你的普通服务器测个RDMA性能
告别硬件依赖用Soft-RoCE和perftest给你的普通服务器测个RDMA性能在数据中心和高性能计算领域RDMA远程直接内存访问技术因其极低的延迟和高吞吐量而备受青睐。但传统RDMA实现通常需要专用硬件支持这让许多想尝鲜的团队望而却步。好消息是通过Soft-RoCE技术我们现在可以在普通以太网卡上体验RDMA的核心特性——本文将手把手带你在零硬件投入的情况下完成从环境搭建到性能测试的全流程。1. 理解Soft-RoCE的技术本质RDMA over Converged EthernetRoCE允许在以太网上实现绕过CPU的内存直接访问而Soft-RoCE是其纯软件实现方案。与动辄上万元的InfiniBand网卡不同它通过Linux内核模块rdma_rxe模拟RDMA协议栈让普通网卡也能支持RDMA操作。关键优势对比特性硬件RoCESoft-RoCE需要专用硬件是否最大带宽100Gbps受限于网卡延迟1μs10-100μs适用场景生产环境测试/验证实际测试中我们在两台配备Intel X550-T210Gbps网卡的服务器上测得Soft-RoCE的延迟约为23μs虽不及硬件方案的极致性能但相比传统TCP/IP栈的150μs仍有显著提升。2. 环境准备与内核配置开始前需要确认Linux内核版本≥4.15推荐5.4两台互联的物理机或虚拟机已安装基础开发工具链检查内核支持grep RXE /boot/config-$(uname -r)若输出包含CONFIG_RDMA_RXEy或m则支持Soft-RoCE。对于自编译内核需确保勾选Device Drivers - InfiniBand - RDMA RXE support安装用户态工具集# Ubuntu/Debian sudo apt install rdma-core ibverbs-utils librdmacm-dev perftest # RHEL/CentOS sudo yum install rdma-core-devel libibverbs-utils librdmacm perftest3. 配置Soft-RoCE网络接口假设我们的物理网卡名为ens192配置步骤如下加载内核模块sudo modprobe rdma_rxe创建虚拟RDMA设备sudo rdma link add rxe_0 type rxe netdev ens192验证配置ibv_devices应显示类似输出device node GUID ------ --------- rxe_0 0200:0000:0000:0000关键参数调优# 设置MTU为最大值 sudo ip link set ens192 mtu 9000 # 查看详细设备信息 ibv_devinfo -d rxe_04. 使用perftest进行基准测试perftest套件提供了多种测试工具我们重点介绍两个核心组件4.1 带宽测试ib_write_bw服务端ib_write_bw -d rxe_0 -F --report_gbits客户端ib_write_bw -d rxe_0 -F --report_gbits 192.168.1.100典型输出示例--------------------------------------------------------------------------------------- RDMA_Write BW Test Dual-port : OFF Device : rxe_0 Number of qps : 1 Transport type : IB Connection type : RC Using SRQ : OFF TX depth : 128 CQ Moderation : 100 Mtu : 4096[B] Link type : Ethernet GID index : 0 Max inline data : 0[B] rdma_cm QPs : OFF Data ex. method : Ethernet --------------------------------------------------------------------------------------- local address: LID 0000 QPN 0x0001 PSN 0x000000 GID: 00:00:00:00:00:00:00:00:00:00:255:255:192:168:1:100 remote address: LID 0000 QPN 0x0001 PSN 0x000000 GID: 00:00:00:00:00:00:00:00:00:00:255:255:192:168:1:101 --------------------------------------------------------------------------------------- #bytes #iterations BW peak[Gb/sec] BW average[Gb/sec] MsgRate[Mpps] 65536 1000 9.72 9.71 0.0194.2 延迟测试ib_send_lat服务端ib_send_lat -d rxe_0 -F客户端ib_send_lat -d rxe_0 -F 192.168.1.100结果解读技巧带宽测试应接近物理网卡标称值的90%以上延迟结果需多次测试取平均值测试时建议关闭其他网络密集型应用5. 性能优化实战经验在真实项目中我们通过以下调整将性能提升了40%调整内核参数# 增加RDMA内存注册限制 echo 65536 /proc/sys/kernel/shmmax # 优化中断平衡 sudo service irqbalance stop for f in /proc/irq/*/smp_affinity; do echo 3 $f; done测试参数进阶用法# 多QP队列对测试 ib_write_bw -d rxe_0 -q 8 -F --report_gbits # 改变消息大小测试 for size in 64 128 256 512 1024 2048 4096; do ib_write_bw -d rxe_0 -s $size -F done常见问题排查连接失败检查防火墙sudo ufw disable低带宽确认网卡协商速率ethtool ens192高延迟关闭节能模式ethtool -K ens192 gro off gso off tso off