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主板的匹配。
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的配置必须在所有主机间保持一致,否则会出现优先级映射冲突。