当前位置: 首页 > news >正文

告别硬件依赖:用Soft-RoCE和`perftest`给你的普通服务器测个RDMA性能

告别硬件依赖:用Soft-RoCE和perftest给你的普通服务器测个RDMA性能

在数据中心和高性能计算领域,RDMA(远程直接内存访问)技术因其极低的延迟和高吞吐量而备受青睐。但传统RDMA实现通常需要专用硬件支持,这让许多想尝鲜的团队望而却步。好消息是,通过Soft-RoCE技术,我们现在可以在普通以太网卡上体验RDMA的核心特性——本文将手把手带你在零硬件投入的情况下,完成从环境搭建到性能测试的全流程。

1. 理解Soft-RoCE的技术本质

RDMA over Converged Ethernet(RoCE)允许在以太网上实现绕过CPU的内存直接访问,而Soft-RoCE是其纯软件实现方案。与动辄上万元的InfiniBand网卡不同,它通过Linux内核模块rdma_rxe模拟RDMA协议栈,让普通网卡也能支持RDMA操作。

关键优势对比

特性硬件RoCESoft-RoCE
需要专用硬件
最大带宽100Gbps+受限于网卡
延迟<1μs10-100μs
适用场景生产环境测试/验证

实际测试中,我们在两台配备Intel X550-T2(10Gbps)网卡的服务器上,测得Soft-RoCE的延迟约为23μs,虽不及硬件方案的极致性能,但相比传统TCP/IP栈的150μs仍有显著提升。

2. 环境准备与内核配置

开始前需要确认:

  • Linux内核版本≥4.15(推荐5.4+)
  • 两台互联的物理机或虚拟机
  • 已安装基础开发工具链

检查内核支持

grep RXE /boot/config-$(uname -r)

若输出包含CONFIG_RDMA_RXE=y=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 perftest

3. 配置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_0

4. 使用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.019

4.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

常见问题排查

  1. 连接失败:检查防火墙sudo ufw disable
  2. 低带宽:确认网卡协商速率ethtool ens192
  3. 高延迟:关闭节能模式ethtool -K ens192 gro off gso off tso off
http://www.gsyq.cn/news/1384219.html

相关文章:

  • 深度解析AICoverGen项目:RVC v2语音克隆与AI音乐生成架构演进
  • Vue.draggable.next终极指南:掌握Vue 3拖放排序的7个高效技巧
  • 如何用OCLP-Mod让旧Mac焕发新生:完整升级指南
  • 别再粗暴关闭验证!OnlyOffice Docker版‘证书错误’的两种安全修复方案
  • 如何快速掌握Topit窗口置顶工具:提升macOS工作效率的完整指南
  • 双屏演示利器:Pympress如何让您的演讲更专业高效
  • 构建私有音乐播放服务的完整技术指南:any-listen架构解析
  • ESP32语音交互终端:集成ChatGPT与TTS的嵌入式AI实践
  • sql1(DDL+DML)
  • Claude Code , Codex, Curser, OpenCode 等 CodeAgent 的实现原理与应用深度研究
  • 在Python中运行JavaScript:PyExecJS的现代应用指南
  • 如何在7天内构建一个本地运行的AI虚拟主播?Neuro开源项目的技术实践
  • 腾讯面试官:“用 Claude Code 半年了,CLAUDE.md 你是怎么维护的?”我不假思索:“就 init 一下啊”,他愣住了。
  • Burp Suite渗透工作流设计:30款插件的阶段化实战应用
  • 淘宝任务自动化:如何用智能脚本每天节省25分钟
  • 3小时完成汽车智能升级:openpilot完整安装指南让普通车辆拥有高级驾驶辅助
  • 3大创意方案:戴森球计划翘曲器生产蓝图实战指南
  • 基于433MHz模块与Arduino的低成本四通道无线遥控系统实战
  • 5分钟快速上手LivePortrait:让静态照片“活“起来的终极指南
  • 告别游戏中断:如何用XB1ControllerBatteryIndicator彻底解决Xbox手柄电量焦虑
  • Yalmip调试秘籍:用好verbose、debug和warning,快速定位模型报错与性能瓶颈
  • 深圳梅雨季来临,房屋漏水抓紧修!2026最新房屋漏水维修公司TOP5调研盘点!卫生间免砸砖防水、楼顶外墙、阳光房+地下室渗漏解决方案解析 - 防水百科
  • 终极探索:如何用cursor-free-vip免费解锁Cursor Pro完整功能
  • AI-7D-SATS 开发笔记 04:为什么要做一个面向性能分析的 Agent?
  • 暗黑破坏神2存档编辑器终极指南:从新手到高手的完整实战手册
  • SVGnest终极指南:免费开源材料切割优化工具完全解析
  • Windows 本地运行轻量级 代码仓库 gogs
  • RevSSH反向SSH隧道:无公网IP设备的安全远程运维方案
  • 从安装到排错:手把手解决Linux服务器上Nacos启动失败的十大常见问题
  • 手把手教你用Mind+和Blynk,让手机轻松遥控掌控板(含自建服务器避坑指南)