Skip to the content.

rdma 环境准备

获取一个二手的 RDMA 网卡

────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
1. 华硕主板能否插 Mellanox ConnectX-4 (mlnx4) 网卡?

答案:可以,但需要注意以下几点:

硬件兼容性

 项目        ConnectX-4 规格    华硕主板兼容性
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 PCIe 接口   PCIe 3.0 x8        消费级华硕主板通常有 PCIe x16 插槽,向下兼容 x8
 功耗        约 12W (Lx 型号)   主板 PCIe 插槽可提供 75W,完全够用
 物理尺寸    半高/全高可选      确认机箱空间,大部分消费级主板没问题

需要注意的问题

1. 插槽占用:ConnectX-4 需要 PCIe x8 或 x16 插槽。如果你的显卡已经占用了唯一的 x16 插槽,可能需要换主板或使用 PCIe 延长线/拆分卡。
2. BIOS 识别:部分消费级主板的 BIOS 可能对非标准设备支持有限,但大部分华硕主板(尤其是 ROG/TUF/PRIME 系列)都能正常识别。
3. 散热:网卡工作时会发热,确保机箱内有足够风流。

────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
2. ConnectX-4 可以测试 RDMA 吗?

答案:完全可以。 ConnectX-4 系列是 NVIDIA/Mellanox 的主流 RDMA 网卡,支持以下 RDMA 协议:

 协议         支持情况     说明
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 RoCE v1      支持         基于以太网 L2 的 RDMA
 RoCE v2      支持         基于 UDP/IP,可跨路由
 InfiniBand   仅 IB 版本   购买时需确认是 EN(以太网) 还是 IB 版本

RDMA 测试环境搭建

驱动加载(Linux):

# 加载必要的内核模块
modprobe mlx4_core
modprobe mlx4_ib
modprobe mlx4_en
modprobe ib_uverbs
modprobe rdma_cm

验证 RDMA 设备:

# 查看 RDMA 设备
ibstat
# 或
rdma dev

# 查看网卡状态
ibstatus

性能测试工具: 使用 perftest 套件进行测试:

# 安装 perftest
# Ubuntu/Debian
apt install perftest

# Server 端(接收端)
ib_write_bw -d mlx4_0

# Client 端(发送端)
ib_write_bw -d mlx4_0 <server_ip>

────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
选购建议

如果你是从京东购买华硕主板 + 二手 ConnectX-4 网卡:

 建议项        说明
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 主板选择      确保至少有 2 个 PCIe x16 插槽(一个给显卡,一个给网卡)
 网卡型号      推荐 MCX4121A-ACAT (25GbE, ConnectX-4 Lx),性价比高,功耗低
 光模块/线缆   25G 网卡需要配合 SFP28 光模块或 DAC 线缆使用
 系统支持      Linux 内核 4.x+ 自带 mlx4 驱动,无需额外安装 OFED

────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
总结

 问题                      结论
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 华硕主板能插 mlnx4 吗?   能,只要有空闲 PCIe x8/x16 插槽
 可以测试 RDMA 吗?        可以,支持 RoCE v1/v2,用 perftest 测试

如果你在安装或配置 RDMA 时遇到具体问题,可以告诉我你的主板型号和操作系统,我可以提供更详细的指导。

为什么 kunpeng 和 hygon 的机器不去利用起来,甚至可以 sriov 切分之后,然后在虚拟机中直接测试

哦,原来这样也是可以的:

可以,但有一些重要的技术限制和注意事项。

────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
技术细节分析

1. VF 支持 RDMA

Mellanox ConnectX-5 的 SR-IOV VF 确实支持 RDMA/RoCE:

 特性            支持情况
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 RoCE v1/v2      支持(需要固件和驱动支持)
 IB Verbs        支持
 perftest 测试   支持

2. 同一网卡 VF-to-VF 通信的特殊性

这是关键问题:同一物理网卡的两个 VF 之间的 RDMA 流量:

VM1 (VF0) <---> 网卡内部 eSwitch <---> VM2 (VF1)

特点:

• 流量不会离开网卡,通过网卡内部的 eSwitch 或 hairpin 机制转发
• DPDK 文档明确指出:VF-to-VF within the same physical port 有 硬件加速
• 网卡驱动代码中有 vport_loopback 统计,说明内部 loopback 是可控的

3. 这种测试能验证什么?

 测试目标          可行性         说明
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 RDMA 功能验证     可以           验证 VF 的 RDMA 能力是否正常
 驱动/软件栈验证   可以           验证内核、驱动、perftest 等软件组件
 真实网络性能      不行           bypass 了真实网络链路(线缆、交换机)
 延迟测试          参考价值有限   结果会比真实网络好很多

────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
配置步骤(如果决定测试)

Host 上启用 SR-IOV:

# 加载 mlx5 驱动
modprobe mlx5_core

# 创建 VF(假设网卡是 ens1f0)
echo 2 > /sys/class/net/ens1f0/device/sriov_numvfs

# 查看创建的 VF
lspci | grep Mellanox

直通 VF 到 VM:

# 获取 VF 的 PCI 地址(例如 04:00.2 和 04:00.3)
virsh attach-device vm1 vf0.xml
virsh attach-device vm2 vf1.xml

VM 内测试:

# VM1 (Server)
ib_write_bw -d mlx5_0

# VM2 (Client)
ib_write_bw -d mlx5_0 <VM1_IP>

────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
结论与建议

如果只是想验证 RDMA 功能

可以这样做,但要知道测的是 "内部回环"性能,不是真实网络性能。

如果想测试真实网络性能

建议方案:

1. 两张 ConnectX-5 网卡 + 直连网线/DAC 线缆
2. 一张 ConnectX-5 网卡的两个端口(双口卡),各直通给一个 VM,中间经过交换机
3. 两张单口卡,分别直通给两个 VM,中间经过 RoCE 交换机

性能对比参考

 场景                   延迟      带宽
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 同一网卡 VF-to-VF      ~1-2 μs   接近线速(无外部瓶颈)
 真实网络(直连)       ~2-5 μs   取决于线缆和协商速率
 真实网络(过交换机)   ~3-8 μs   取决于交换机转发能力

────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
一句话总结

同一网卡的两个 VF 可以跑通 RDMA 测试,但测的是网卡内部交换性能,不代表真实网络环境中的表现。 适合验证功能,不适合评估生产环境性能。

ali 的 erdma

https://help.aliyun.com/zh/ecs/user-guide/elastic-rdma-erdma/?spm=a2c4g.11186623.0.0.7bf5560bVpjE7k

解答了一个疑惑,就是虚拟机中应该是用 erdma 的 SR-IOV ,然后在虚拟机中使用的

弹性RDMA(Elastic Remote Direct Memory Access,简称eRDMA)是阿里云自研的云上弹性RDMA网络,底层链路复用VPC网络,采用全栈自研的拥塞控制CC(Congestion Control)算法,享有传统RDMA网络高吞吐、低延迟特性的同时,可支持秒级的大规模RDMA组网。可兼容传统HPC应用、AI应用以及传统TCP/IP应用。

所以阿里文档那句话如果严谨一点,应该读成:

“eRDMA 复用了阿里云 VPC 的网络资源与租户网络语义,但实例侧仍暴露为 RDMA 设备,数据面由硬件/虚拟化通路完成 RDMA 传输。”

rdma 和 cxl 有希望吗?

Polar DB 将 RDMA 共享内存转为 CXL 共享内存 https://mp.weixin.qq.com/s/xqTAPx4PgUHDjJt_J10mXA

本站所有文章转发 CSDN 将按侵权追究法律责任,其它情况随意。