4. NVIDIA ConnectX网卡与DPU选型配置

在RoCE AI集群中,网卡不是“带宽配件”,而是决定端到端时延、拥塞控制粒度和CPU卸载能力的核心部件。选型时先明确三件事:单口速率与端口数、是否需要DPU形态、以及主机侧PCIe与NUMA拓扑能否喂饱网卡。ConnectX-6、ConnectX-7、ConnectX-8三代产品在速率、PCIe代际和可编程卸载上逐级演进,BlueField DPU则把网卡与Arm核、可编程数据路径整合为独立的基础设施处理器。

ConnectX-6/7/8的关键差异

ConnectX-6提供200Gb/s端口,常见双口配置,PCIe 4.0 x16,支持RoCEv2、GPUDirect RDMA和基本的ASAP2卸载。ConnectX-7将单口提升到400Gb/s,PCIe 5.0 x16,支持NDR InfiniBand与400GbE RoCE,并强化了可编程拥塞控制与精确时间同步。ConnectX-8进一步面向800Gb/s时代,PCIe 6.0,支持XDR InfiniBand与800GbE,端口密度和每端口卸载能力显著提升。对AI训练集群而言,若GPU服务器采用HGX 8-GPU平台,通常每GPU配一张400Gb/s网卡,8卡对应8张ConnectX-7;若采用800Gb/s交换架构,则需评估ConnectX-8与PCIe 6.0主板的匹配。

ConnectX-6 / 7 / 8 与 BlueField DPU 选型对照 ConnectX-6 200Gb/s 单口 PCIe 4.0 x16 RoCEv2 / GPUDirect ASAP2 基础卸载 双口常见 适用:200G 集群 或存储/管理网络 ConnectX-7 400Gb/s 单口 PCIe 5.0 x16 NDR / 400GbE RoCE 可编程拥塞控制 精确时间同步 适用:HGX 8-GPU 每GPU 400G 组网 ConnectX-8 800Gb/s 单口 PCIe 6.0 x16 XDR / 800GbE RoCE 高密度端口 增强卸载引擎 适用:800G 交换 下一代AI集群 BlueField DPU Arm 多核 + 网卡 可编程数据路径 存储/安全/网络卸载 DOCA 编程框架 主机CPU零占用 适用:多租户隔离 云原生AI平台

BlueField DPU的卸载边界

BlueField DPU并非简单地把网卡换成Arm SoC,而是把原本跑在主机CPU上的网络、存储、安全功能迁移到DPU侧。典型卸载包括:OVS/vSwitch数据面、IPsec/TLS加解密、NVMe-oF存储前端、以及RoCE的拥塞控制与QoS策略。在AI集群中,DPU常用于多租户隔离场景——训练任务运行在主机侧,而租户网络策略、存储访问控制和遥测采集由DPU独立执行,主机CPU不再被中断和协议栈消耗。需要注意的是,DPU卸载并非“全部免费”:DOCA服务需要占用DPU的Arm核和内存,配置复杂度高于普通ConnectX网卡,且部分高级RoCE特性在DPU模式下需要确认固件版本是否支持。

RoCE模式配置

ConnectX网卡支持RoCEv1(基于以太网链路层)和RoCEv2(基于UDP/IP)。AI集群应统一使用RoCEv2,因为v2可跨三层路由,便于大规模组网。配置时先确认网卡固件已启用RoCE,再通过cma_roce_mode或mlxconfig设置模式。以下为示例命令,实际参数需根据网卡型号和固件版本调整:

# 查看当前RoCE模式
cma_roce_mode -d mlx5_0 -p 1

# 设置为RoCEv2
cma_roce_mode -d mlx5_0 -p 1 -m 2

# 通过mlxconfig确认RoCE相关固件参数
mlxconfig -d /dev/mst/mt4129_pciconf0 q | grep -i roce

# 启用RoCEv2并设置DSCP优先级(示例:DSCP 26对应优先级3)
mlxconfig -d /dev/mst/mt4129_pciconf0 set ROCE_CC_PRIO_MASK_P1=0x8

RoCEv2依赖无损以太网,必须配合PFC(优先级流控)和ECN(显式拥塞通知)。PFC配置在交换机侧和网卡侧需一致:交换机为RoCE流量分配独立优先级队列,网卡侧通过mlnx_qos设置信任模式为DSCP,并将对应优先级映射到PFC使能队列。ECN则通过mlnx_qos -i eth0 --ecn查看和设置。若PFC与ECN未对齐,典型现象是RoCE流量出现大量重传,ethtool -S中rx_pause和tx_pause计数持续增长。

固件与驱动调优

固件和驱动版本直接影响RoCE稳定性和性能。建议遵循NVIDIA官方兼容性矩阵,避免混用不同代际的固件与驱动。调优时重点关注以下参数:

  • PCIe Max Read Request:设置为4096字节,提升大包传输效率。
  • RoCE自适应路由:在支持的网络中启用ROCE_ADAPTIVE_ROUTING,让流量在多路径间动态分配。
  • 中断合并:通过ethtool -C调整rx-usecs和tx-usecs,AI训练场景建议降低中断延迟,可设为8~16微秒。
  • 队列数量:根据CPU核数设置combined队列,通常每NUMA节点绑定一半队列,避免跨NUMA访问。
  • GPUDirect RDMA:确认nvidia-peermem模块已加载,ibv_devinfo中peer_mem状态为可用。

以下为示例调优命令,实际值需结合服务器CPU核数和NUMA拓扑调整:

# 设置PCIe Max Read Request为4096
mlxconfig -d /dev/mst/mt4129_pciconf0 set PCIE_MAX_READ_REQ=4096

# 查看中断合并当前值
ethtool -c ens1f0

# 设置中断合并(示例:rx 8us, tx 8us)
ethtool -C ens1f0 rx-usecs 8 tx-usecs 8

# 查看队列数
ethtool -l ens1f0

# 设置combined队列为16(示例)
ethtool -L ens1f0 combined 16

# 确认GPUDirect RDMA peer memory
ibv_devinfo -d mlx5_0 | grep peer

多主机模式

多主机模式(Multi-Host)允许一张物理网卡被多个主机(或GPU节点)共享,每个主机通过独立的PCIe功能访问网卡的独立端口或队列资源。在AI集群中,多主机模式常用于刀片服务器或HGX平台:一张ConnectX-7的多个PCIe功能分别映射到不同GPU板,减少网卡数量和交换机端口占用。配置多主机模式需要在固件中启用MULTI_HOST参数,并在BIOS中正确分配PCIe功能号。启用后,每个主机看到独立的mlx5_x设备,RoCE配置需逐主机独立进行。需要注意的是,多主机模式下PFC和ECN的配置必须在所有主机间保持一致,否则会出现优先级映射冲突。

选型时建议先确认服务器PCIe插槽代际和NUMA绑定关系,再决定网卡型号。若PCIe 4.0插槽配ConnectX-7,实际带宽会被限制在约200Gb/s,无法发挥400Gb/s能力。
多主机模式与SR-IOV同时使用时,需确认固件版本支持,并避免VF数量超过网卡资源上限。配置变更后建议重启主机并重新验证RoCE连通性。