TT Lab
博客

한국어 English 日本語 中文

开始
博客

博客

使用 RDMA 和 NCCL 解读 GPU 网络:InfiniBand、RoCE 与 Kubernetes 部署

状态:草稿(更新于 2026-10-06)。 本文以官方文档核实的内容为基础, 仅限使用软件 RoCE(rxe)亲自查看的部分(第 10 节末尾的「实测」) 是在一次性虚拟机中测得的数值。并未针对真实的 RDMA 硬件和 GPU 进行测量。 请先阅读文末的「核实过的版本与日期」和「未核实的内容」。 编写规则:以实测数据为基础,未测得的内容标记为「未实测」。

目录

摘要

当多张 GPU 共同计算同一个模型时,通信便决定了性能。在服务器内部有 NVLink,而在服务器之间则由支持 RDMA(Remote Direct Memory Access)的 InfiniBand 或 RoCE(RDMA over Converged Ethernet)网络负责此项工作。NCCL(NVIDIA Collective Communications Library)则会检测这些层级并调度集合通信(如 all-reduce 等)。本文将探讨各层级的带宽差异、RoCE 复杂的原因、NCCL 环境变量与测试工具、故障排查顺序以及 Kubernetes 配置。

读完本文后能够在面试中解释的内容

  1. TCP 不够用的原因,以及 InfiniBand 与 RoCE v2 的区别(特别是 PFC、ECN 在 RoCE 中所起的作用以及配置错误时的症状)。
  2. NCCL 如何执行集合通信, nccl-tests 如何读取 busbw,多节点性能下降时的排查顺序。
  3. Kubernetes 中 Pod 使用 RDMA 所需的组件,以及推理中需要 RDMA 的场景(KV 传输、专家并行、模型加载)。

作者背景。 我目前在普通以太网(1~2.5GbE 级别)环境中进行实验,没有 RDMA、InfiniBand、NVLink 和 VAST 的经验。本文是通过阅读官方文档整理而成的,并非运维经验谈。动手尝试的范围仅限于力所能及的范围内,未实际运行过的内容均已标注。

1. 为什么 TCP 不够用

根据 Dynamo 文档,RDMA 允许网络适配器直接将数据从一个主机的内存传输到另一个主机的内存(若使用 GPUDirect RDMA 则直接从 GPU 传输到 GPU),而无需经过 CPU、内核以及 TCP/IP 协议栈。通常,TCP 会伴随用户缓冲区与内核缓冲区之间的复制、系统调用以及中断。而由于 RDMA 由 NIC 直接读取和写入预先注册(ibv_reg_mr)并固定(pin)了页面的内存,因此能够实现内核旁路(kernel bypass)和零拷贝(zero-copy)。速度差距在算术上也非常巨大。1GbE 为 0.125GB/s,而 400Gb/s NIC 为 50GB/s,达到了 400 倍。因此,TCP 只是在没有 RDMA 时的替代路径(NCCL_IB_DISABLE=1 如果为真,NCCL 会退回到 IP 套接字)。

2. InfiniBand 与 RoCE v2

项目 InfiniBand RoCE v2
网络 RDMA 专用网络 运行在普通以太网交换机之上
协议 自带传输层 构建于 UDP/IP 目标端口 4791 之上,支持 L3 路由
管理 需要子网管理器(SM) PFC、ECN、DSCP 等以太网配置是核心
诊断 ibstat, perfquery, ibdiagnet, sminfo ethtool -S、交换机计数器、 rping

RoCE v1 仅使用以太网链路层,适用于单一广播域,而 v2 搭载了 UDP/IP 从而支持路由(维基百科)。

RoCE 复杂的原因。 由于 RDMA 对丢包非常敏感,因此在以太网中必须防止或减少丢包。NVIDIA Cumulus 文档解释了两种手段。PFC(Priority Flow Control)通过按优先级进行逐跳暂停来防止缓冲区溢出,而 ECN(Explicit Congestion Notification)则在交换机对拥塞数据包进行标记时,由接收端 NIC 发回 CNP(Congestion Notification Packet)以降低发送速率。在默认配置中,RoCE 数据使用优先级 3,CNP 使用优先级 6 的严格优先队列。Onyx 文档区分了无损(全网 PFC)、半无损(仅在主机与机架顶层交换机之间启用 PFC)以及有损(无 PFC)模式。DCQCN(SIGCOMM 2015)是一种基于 ECN 的 RoCE v2 拥塞控制技术,旨在减少 PFC 的副作用。根据摘要显示,它已在 Mellanox NIC 中实现并部署在微软数据中心。DCQCN 并不能替代 PFC。论文第 7 节指出,如果丢包率超过 0.1%,吞吐量就会急剧下降,因此 PFC 依然是必需的。PFC 可能会引发全网死锁(微软 2016 年的论文曾报告过一个实际案例:测试集群中未知 MAC 地址数据包的泛洪与 PFC 交织在一起导致了死锁,以及单个 NIC 持续发出 PAUSE 信号从而阻塞整个网络的事故。详见下文「外部依据」),并且有人评价以太网 DCB 的配置比 InfiniBand 更为复杂(维基百科)。

故障往往悄无声息地出现。MinIO MemKV 运行手册(非 NVIDIA 文档的第三方资料)指出,PFC 优先级、DSCP 映射以及 MTU 必须相互匹配;如果以太网 MTU 为 1500,则启用了 RoCE 的 MTU 会协商为 1024,若不匹配,则会以 IBV_WC_RETRY_EXC_ERR 结束,且这一问题仅在节点之间才会显现。

3. 层级与带宽

 노드(예: 8 GPU)
 GPU0 ... GPU7 ══ NVLink / NVSwitch ══ (노드 안 전체 연결)
   │PCIe          │PCIe
  NIC0    ...    NIC7 ──> 같은 번호 NIC 끼리 같은 리프 스위치 (rail)
层级 带宽 来源与单位
NVLink 第 4 代(H100) 每 GPU 900GB/s NVIDIA 规格,双向总和
NVLink 第 5 代(Blackwell) 每 GPU 1,800GB/s 同左侧表述
PCIe 5.0 x16 每通道 32GT/s,每方向约 63GB/s 32GT/s 来自 Rambus 文档,63GB/s 为作者假设 128b/130b 编码计算得出
单张 ConnectX-7 400Gb/s,每方向 50GB/s NVIDIA。DGX H100 配备 8 张用于计算的 InfiniBand 卡
普通以太网 0.125~0.31GB/s 1GbE、2.5GbE 理论值

若将第 4 代 NVLink 按单方向(一半)换算,约为 450GB/s,约为单张 NIC 的 9 倍(作者换算)。DeepSeek-V3 报告中的 H800 集群也是 NVLink 160GB/s 对比 InfiniBand 50GB/s,这种差距催生了第六篇中“TP 在节点内,PP 与 EP 在节点间”的趋势。而在 NVL72 等系统中,72 个 GPU 属于同一个 NVLink 域,因此边界会有所不同。 rail 架构已在 DGX SuperPOD 参考架构中得到确认,它将每台服务器编号相同的 NIC 连接到同一个叶交换机,从而使相同 rail 的服务器之间只需经过一台交换机。

4. GPUDirect RDMA 与 GPUDirect Storage

GPUDirect RDMA 允许 NIC 直接读取和写入 GPU 内存,从而省去了经由主机内存的步骤。官方文档的前提条件是:当两个设备共享同一个 PCIe 根复合体(Root Complex)且其间仅有 PCIe 交换机时效果最佳(若跨越 QPI/UPI 则性能会下降),并且 IOMMU 必须关闭或处于 1:1 直通状态。NCCL 文档指导用户 nvidia-peermem 模块应当在每次启动时加载,或者使用开源驱动程序的 DMA-BUF 路径(未加载和 ACS 也是常见原因),并使用 NCCL_NET_GDR_LEVEL 来限制 NIC 与 GPU 之间的最大距离(LOC、PIX、PXB、PHB、SYS)。

GPUDirect Storage(GDS)通过存储与 GPU 内存之间的 DMA 消除了 CPU 中转缓冲区(bounce buffer),并支持 cuFile API 以及本地 NVMe、NVMe-oF、Lustre、WekaFS、NFS over RDMA。如果不满足条件,它将降级为经过 CPU 内存的兼容模式,从而失去性能优势。

5. NCCL

运算。 根据 NCCL 2.32.3 文档,集合运算包括 AllReduce、Broadcast、Reduce、AllGather、ReduceScatter、AlltoAll、Gather、Scatter,同时还包含点对点 send/recv。所有 rank 必须使用相同的 count 和 datatype 进行调用,否则会产生挂起、崩溃、数据损坏等未定义行为。

算法与拓扑。 NCCL_ALGO 文档中列举的算法有 Ring、Tree、CollnetChain、CollnetDirect、NVLS、NVLSTree、PAT(NVLS 指的是 NVLink SHARP 卸载)。根据 NCCL 2.4 博客,Ring 可以用尽带宽,但延迟与 GPU 数量成正比;而双二叉树(double binary tree)能够保持带宽且延迟呈对数增长,在 Summit 的 24,576 个 GPU 上,其延迟比 Ring 最多改善了 180 倍(NVIDIA 的测量主张)。NCCL 在初始化时会检测 NVLink、PCIe、NIC 的连接状态以构建图谱,并通过 NCCL_TOPO_DUMP_FILE 输出检测结果。

变量 作用(基于文档)
NCCL_DEBUG VERSION, WARN, INFO, TRACE(在 2.32 中新增 ATTN )。 NCCL_DEBUG_SUBSYS 用于子系统过滤
NCCL_SOCKET_IFNAME 要使用的 IP 接口。前缀列表, ^ 排除, = 精确匹配
NCCL_IB_HCA 要使用的 RDMA 适配器。 <hca>[:<port>] 列表, ^ 排除, = 精确匹配
NCCL_IB_DISABLE 若为 1 则关闭 IB/RoCE 并替换为 IP 套接字等
NCCL_NET_GDR_LEVEL NIC 与 GPU 之间允许的最大 GPUDirect RDMA 距离
NCCL_IB_GID_INDEX, NCCL_IB_TC RoCE 的 GID 与流量类别。2.21 及以上版本会自动选择 GID,因此无需设置
NCCL_CROSS_NIC 是否允许 Ring 和 Tree 使用不同的 NIC。取决于是否为 rail 优化网络

文档警告不要将调试和调优变量保留在生产配置中,并指出一个基准测试的收益可能会在其他地方带来损失。在推理中,NCCL 用于 TP 的逐层 all-reduce,而 EP 的路径则取决于后端(allgather_reducescatter, DeepEP 等)。KV 传输由 NIXL/UCX 负责,因此不适用 NCCL 变量(第 6 篇)。

6. 如何测量

./build/all_reduce_perf -b 8 -e 128M -f 2 -g 8                    # 노드 안 GPU 8장
mpirun -np 64 -N 8 ./build/all_reduce_perf -b 8 -e 8G -f 2 -g 1  # 8노드 x 8 GPU (MPI=1 빌드)
ib_write_bw -d mlx5_0 -a                       # perftest 서버
ib_write_bw -d mlx5_0 <서버주소> -a            # 클라이언트. --use_cuda=0 을 더하면 GPU 메모리 경로
ib_write_lat -d mlx5_0 <서버주소>              # 꼬리 지연 확인

nccl-tests 会输出时间、algbw(크기/시간)以及 busbw。busbw 是通过乘以针对不同运算的修正系数,使其与 rank 数量无关并与硬件极限进行对比的值,其中 AllReduce 为 algbw × 2(n−1)/n, ReduceScatter、AllGather 以及 AlltoAll 为 algbw × (n−1)/n 。通过观察大消息的 busbw 离 NVLink 或 NIC 理论极限有多近,以及小消息的时间(延迟)来判断。NCCL 文档中的顺序是,先看节点内 nvbandwidth 和 nvidia-smi topo -m,再看节点间 ib_write_bw/ib_write_lat ,当这些值符合预期但只有 NCCL 变慢时,再去怀疑 NCCL 的配置。

7. 常见故障

症状 检查 依据
IB 链路降级 ibstat 的 Rate 与 Active 状态,以及 mlxlink 的宽度和速度 NCCL 文档
错误的 HCA 与接口 如果选择了状态为 UP 但无法通信的接口,会导致初始化失败或挂起。 NCCL_SOCKET_IFNAME, NCCL_IB_HCA 指定。如果日志中显示 NET/IB/GDRDMA 而不是 NET/Socket 则是 TCP NCCL、vLLM 文档
固定内存限制 ibv_create_qp, ibv_reg_mr 如果失败则将 memlock 设为无限制。Kubernetes 中可以通过 IPC_LOCK 或在节点层面解除 NCCL、vLLM、Dynamo 文档
RoCE GID 错误 ibv_modify_qp ... Invalid argument。若低于 2.21,请使用 show_gids 检查 RoCE v2 GID NCCL 文档
MTU 不匹配 ibv_devinfo 的 active_mtu。仅在节点之间失败 第三方运行手册
PFC 与 ECN 配置错误 长尾延迟,吞吐量不稳定。 ethtool -S 查看 pause、PFC 计数器与 rdma statistic 重试计数器,应优先调查拥塞控制而非 NCCL NCCL 文档
单条链路变慢 由于集合运算所有 rank 都会参与,因此最慢的区段会拖慢整体(作者解释)。如果只有一条 rail 变慢, ibdiagnet NCCL 文档

8. Kubernetes 中的 RDMA

flowchart TB
  subgraph Node[GPU 노드]
    OFED[MOFED 드라이버<br/>ofedDriver]
    PEER[nvidia_peermem<br/>GPU Operator]
    DP[RDMA 공유 디바이스 플러그인]
    MUL[Multus + NetworkAttachmentDefinition]
  end
  OFED --> DP
  DP -->|rdma/hca_shared_devices_a 광고| KL[kubelet]
  KL --> Pod[파드: GPU + rdma 자원 + 보조 인터페이스 net1]
  MUL --> Pod
  PEER --> Pod

NVIDIA Network Operator(最新 v26.4.2, 2026-09-16)使用 NicClusterPolicy(README 中写作 NICClusterPolicy,名称固定为 nic-cluster-policy )这单一资源来开启下层配置。其项目包括 MOFED 驱动程序容器(ofedDriver), rdmaSharedDevicePlugin, sriovDevicePlugin, secondaryNetwork(Multus、containernetworking 插件、IPoIB CNI)、 nvIpam, nicConfigurationOperator 等,且 MacvlanNetwork, HostDeviceNetwork, IPoIBNetwork CRD 会被转换为 NetworkAttachmentDefinition 。

9. 推理中需要 RDMA 的场景(连接第 6 篇)

场景 通信 依据
KV 缓存传输 使用 NIXL (UCX) 在 prefill 和 decode 之间实现 GPU-to-GPU 传输。并非 NCCL Dynamo RDMA、vLLM NixlConnector 文档
专家并行 每层都有 all-to-all。DeepSeek-V3 在解码时通过 IB 点对点和 IBGDA 降低延迟 DeepSeek-V3,vLLM EP 文档
跨节点的 TP 由于每层都是 all-reduce,因此 InfiniBand 等高速适配器是更佳选择(vLLM 文档中的表述为 “preferably”)。也有测量表明跨节点 TP 的可扩展性较差(见下方 “外部依据”) vLLM 并行化文档,Singhania 等人 2026
大模型加载 共享存储与 GDS。Dynamo 警告称,如果每个 Pod 都下载超过 70B 的模型,将需要数小时 Dynamo 安装,GDS 文档

NVIDIA 的 Dynamo 文档写道,如果通过 TCP 转移 KV,TTFT 约为 98 秒,而如果是 RDMA 则为 200~500ms。文档集中有附带条件:98 秒是在 Llama-3.1-8B、输入 8,000 个 Token、AWS p5.48xlarge 环境下 当 EFA Pod 的 NIXL 静默降级到 UCX 的慢速路径时测得的值,而 200~500ms 是同一文档标注为“基于规格的期望值”的数值(在同等条件的 EFA 上实际测得的 KV 传输附加开销为 37ms)。切勿将其简单理解为普通 TCP 与 RDMA 的对比(第 6 篇 “外部依据”)。

10. 动手尝试

由于没有 RDMA 硬件,因此属于软件和 TCP 的范畴。第 1、2 项未直接执行,第 3 项(软件 RoCE)记录了在下方“实测”中亲自执行的结果。

  1. iperf3 用于确认以太网极限。 在两台服务器上运行 iperf3 -s 和 iperf3 -c <서버> -P 4 -t 10 ,并与上表中的 1GbE、2.5GbE 理论值进行比较。避开控制平面(etcd)节点,在业务闲时进行。 亲自执行的结果: 在三个不同的节点对(Pod 网络,10 秒)中,单流为 894~902Mbit/s,4 流为 901~912Mbit/s,结果完全相同(重传为 0),约为 1GbE 线速的 90~91%(约 112MB/s)。如果通过该网络传输 KV,对于 8,000 个 Token(对于每个 Token 占 114,688 字节的 1.7B 模型约为 917MB)大约需要 8 秒;对于每个 Token 256KiB 的 32B 模型(约 2.1GB)大约需要 19 秒(计算值)。由于同一 1.7B 模型在 8GB 级 GPU 上处理 8,000 个 Token 的输入大约需要 1 秒(8.2k tok/s,第 21 篇),因此 在此网络下,重新计算比传输 KV 更快(第 14 篇、第 21 篇的测量值与此计算结果的对比)。
  2. TCP 套接字 NCCL。 在各有一张 GPU 的两台服务器(例如 hostA、hostB)上,直接在主机上使用 MPI=1 构建的 nccl-tests 进行 mpirun 。请先确认没有其他工作负载正在使用 GPU。
    mpirun -np 2 -H hostA:1,hostB:1 -x NCCL_IB_DISABLE=1 -x NCCL_SOCKET_IFNAME=<인터페이스> \
      -x NCCL_DEBUG=INFO ./build/all_reduce_perf -b 8 -e 256M -f 2 -g 1
    
    预期的现象是日志中能看到套接字传输,且大消息的 busbw 不会超过链路速度(1GbE 时为 0.125GB/s),这并非实测结果。单节点单张 GPU 因为没有通信对象而没有意义。
  3. 通过软件 RoCE (rxe) 查看 verbs 流量。 根据 RHEL 文档,Soft-RoCE 是一项技术预览功能,计划在 RHEL 10 中移除。其性能受 CPU 左右,数值没有意义,仅用于确认设备枚举、端口状态、MTU 等概念。由于会创建内核模块和 RDMA 设备,请在一次性虚拟机而非生产运行中的节点上进行。
    sudo rdma link add rxe0 type rxe netdev <이더넷 인터페이스>
    rdma link show; ibv_devices; ibv_devinfo -d rxe0 | grep -E "state|active_mtu"
    ib_write_bw -d rxe0 -a          # VM 두 대에 rxe 를 만들고 서버/클라이언트로
    sudo rdma link delete rxe0      # 정리 (man rdma-link 로 확인)
    

实测:通过软件 RoCE (rxe) 重现 verbs 流量与故障这两种情况

环境。 在一台一次性虚拟机(4 vCPU、4GiB、Linux 6.8、虚拟 NIC 的 MTU 为 1500)内同时运行了服务端和客户端(通过自身地址访问)。安装了 rdma-core, ibverbs-utils, perftest(ib_write_bw, ib_write_lat), iperf3 。默认的云内核镜像中不包含 rdma_rxe 模块,导致 modprobe 找不到该模块,在安装了附加模块软件包(linux-modules-extra-<커널 버전>)后成功加载。性能数值由 CPU 决定,因此仅用于概念验证。

确认事项 结果
创建设备 rdma link add rxe0 type rxe netdev <인터페이스> 单行命令 ACTIVE, LINK_UP. ibv_devinfo 是 transport: InfiniBand, link_layer: Ethernet, max_mtu 4096, active_mtu 1024
GID 表 4个,全部是 RoCE v2。链路本地 IPv6、映射了 IPv4 的 ::ffff:a.b.c.d,以及同一机器的 其他接口(覆盖网络)的地址 也都登上了单个设备的 GID 表(据内核源码称,它会把带有 RDMA 的设备及其上级设备的地址添加进来。覆盖接口 flannel.1 是 VXLAN 设备,在 sysfs 中作为 enp1s0 的上级设备(upper_flannel.1)显示,这与该解释相符)
MTU 在 MTU 为 1500 的以太网设备上为 active_mtu 1024,而在 MTU 为 65536 的回环(Loopback)设备上为 4096。写入吞吐量分别为 533MB/s 和 1,643MB/s,相差 3.1 倍(路径不同,并非严谨对比)
不同大小的写入吞吐量 2B 0.30MB/s(消息率约 0.16Mpps),1KiB 208MB/s,64KiB 536MB/s,2MiB 529MB/s,在约 0.53GB/s 时饱和。小消息的消息率上限约为 0.24Mpps
相同路径的 TCP iperf3 单流 34.7Gbit/s(约 4.3GB/s),4 流 137Gbit/s。比 rxe 写入 约 8 倍 更快
写入延迟 2B 典型值 2.09µs(在同一台机器内,没有网络往返,因此无法与硬件值进行比较)
统计计数器 rdma statistic show link rxe0/1 中有 sent_pkts, rcvd_pkts, duplicate_request, out_of_seq_request, rcvd_rnr_err, retry_exceeded_err, completer_retry_err, link_downed 等。确认了第 7 节表格中的“重试计数器”确实存在
不存在的设备名称 ib_write_bw -d rxe9 → IB device rxe9 not found, Unable to find the Infiniband/RoCE device,退出代码 1

本测试的局限性在于:仅使用单台虚拟机、纯软件实现、且没有 GPU。我们未能测量两节点间的 RDMA、实际网卡(NIC)的吞吐量与延迟、PFC 与 ECN、 nccl-tests以及 GPUDirect RDMA(未实际测量)。

外部依据:通过论文与官方资料进行确认

我们通过第一手资料核实了未能直接测量的 RoCE 拥塞控制、NCCL 与 GPUDirect 相关描述,以及软件 RoCE 的性能。由于设备与条件存在差异,外部数值仅用于判定方向和架构的一致性。

主题 资料与确认位置 确认的内容与条件 与本文的关系
DCQCN Zhu 等人,“Congestion Control for Large-Scale RDMA Deployments”,SIGCOMM 2015,第 1、2、6、7 节 在网卡中实现基于 ECN 的端到端拥塞控制。在 40Gbps 环境下,传输 2KB 的平均延迟:TCP 为 25.4µs,RDMA 读写为 1.7µs。在 10 左右的 incast 程度下,没有 DCQCN 时 PAUSE 消息超过 600 万个,使用后约为 3,000 个。第 7 节明确指出,当丢包率超过 0.1% 时吞吐量急剧下降,且 PFC 无法被完全取代 支持。 与“减少 PFC 副作用的拥塞控制”一节的描述一致。正文中的“已部署”已根据摘要更正为“正在部署”
PFC 死锁与 PAUSE 风暴 Guo 等人,“RDMA over Commodity Ethernet at Scale”,SIGCOMM 2016,第 4.2、4.3、6.2 节 在测试集群中,未知 MAC 地址的数据包泛洪与 PFC 相互作用导致死锁,重启服务器也无法解除。由于网卡漏洞,单个服务器每秒产生超过 2,000 个 PAUSE 帧,导致一半的客户服务器受到影响。第 99 百分位延迟:RDMA 为 90µs,TCP 为 700µs(混合流量) 支持。 “PFC 配置错误会演变成整个网络的问题”的实际故障依据
精准拥塞控制 Li 等人,“HPCC”,SIGCOMM 2019 使用带内遥测(In-band Telemetry)的速度控制。对于小于 3KB 的流,第 99 百分位完成时间的慢化情况:DCQCN 为 53.9,而 HPCC 为 2.70(阿里巴巴内部测量,基于 FPGA 网卡和 P4 交换机) 相关。 展示了基于 ECN 方法的局限性以及对 PFC 的依赖
NCCL 常见故障 NCCL 2.32.3 “Networking Troubleshooting”、“GPU troubleshooting” ibv_create_qp·ibv_reg_mr 失败是由固定内存限制问题(memlock 无限制)引起的。如果 GID 选择错误会导致 ibv_modify_qp ... Invalid argument,2.21 及以上版本会动态选择 GID。如果开启了 ACS 和 IOMMU,GPUDirect P2P 会被绕过,从而导致性能下降或挂起 支持。 与第 7 节的表格及本次 memlock 复现得出的解决方法一致
memlock 与权限 Linux 内核 drivers/infiniband/core/umem.c(master,调查日期) 注册用户内存时,超出 RLIMIT_MEMLOCK 的部分在没有 CAP_IPC_LOCK 时会以 -ENOMEM 失败 支持。 解释了 root 用户未触及限制的原因
MTU NVIDIA MLNX_OFED v5.9 “RoCE”文档中的 ibv_devinfo 示例,内核 rxe_param.h 以太网 MTU 为 1500 的 mlx5 设备会 max_mtu 4096, active_mtu 1024。rxe 会减去 80 字节的头部并向下取整 支持。 根据源码修正了上述关于 MTU 的描述
GPUDirect RDMA NVIDIA “GPUDirect RDMA”文档第 1、3.4 节 网卡和 GPU 必须共享同一个 PCIe 根复合体(Root Complex);如果仅有 PCIe 交换机则是最佳状态;若经过 CPU 则速度变慢,若经过 QPI 则会导致性能受限或不稳定。文档中未给出具体的性能数值 支持。 与第 4 节的描述一致。关于优势的具体数值可在 DCQCN 2016 年的论文中找到(CPU 占有率 20% 对比小于 3%)
软件 RoCE linux-rdma 邮件列表(2019 年,由维护者诊断),内核 rxe_icrc.c,Red Hat RHEL 9 文档 报告显示 soft-RoCE 约为 2Gbps,而 TCP 为 20Gbps,CPU 需要为每个数据包计算 ICRC (CRC32)。RHEL 文档将其标为技术预览版,并记录了计划在 RHEL 10 中移除 有限支持。 与我们的测试结果方向一致(rxe 写入约 4.2Gbit/s,同机 TCP 约 34Gbit/s)。在可访问的范围内未找到经过严格控制的测量论文
跨节点并行化 DeepSeek-V3 技术报告(arXiv 2412.19437)第 3.2、3.4 节。Singhania 等人,arXiv 2511.09557。vLLM 并行化文档 专家并行最多只将 Token 发送到 4 个节点,先通过 IB 再转发给 NVLink;解码(decode)则使用 IB 点对点和 IBGDA(NVLink 为 160GB/s 对比 IB 为 50Gbps)。跨节点 TP 的扩展性较差,且在解码任务较重的批处理中,PP 甚至可能不如 TP。vLLM 文档将高速适配器表述为“推荐” 支持。 与第 9 节的表格一致,但将“必需”降级为“推荐”

由于访问限制而未能打开的资料(IEEE Network 2019 论文、内核 Bugzilla 190951、SoftRDMA)中的数值未被采用。

11. 面试常见问题

  1. 为什么要用 RDMA 代替 TCP? 因为网卡可以在没有内核拷贝和 CPU 介入的情况下直接读写固定内存,从而减少了延迟和 CPU 负担,而 GPUDirect RDMA 甚至省去了经过主机内存的步骤。
  2. InfiniBand 与 RoCE v2 应该选择哪个?RoCE 的风险是什么? IB 拥有专用网络和子网管理器(SM),配置简单;而 RoCE 使用现有的以太网和 L3 路由,代价是必须同时配置好 PFC、ECN、DSCP 和 MTU。如果配置错误,表现出来的将是长尾延迟或仅在节点间通信失败,需要通过交换机计数器来确认。
  3. all_reduce_perf 如果的 busbw 仅为网卡线速的一半,应该从哪里开始排查? ib_write_bw 应通过 nvidia-smi topo -m 检查网卡本身是否达到了线速,通过 NCCL_DEBUG=INFO 检查 GPU 与网卡的距离,并通过NET/IB确认所选的传输方式(
  4. 、是否使用 GDRDMA)以及 rail 拓扑配置。 如果多节点训练突然变慢,排查顺序是什么?ibstat 依次检查:链路降级(ibdiagnetRate)、端口错误计数器、特定 rail 倾斜(
  5. ),如果是 RoCE 则检查 PFC·ECN 计数器。只有在硬件完全正常的情况下,再去调整 NCCL 环境变量。 在 Kubernetes 中,Pod 若要使用 RDMA 需要哪些条件? rdma/... 需要 MOFED 与设备插件(Network Operator)、Pod 的 nvidia_peermem资源请求、

、memlock 限制,如有必要还需 Multus 辅助接口或 SR-IOV,以及分配到靠近 GPU 的网卡的调度策略。

NCCL 文档并不建议常态化开启这些设置。

已确认的版本与日期,以及未确认的内容

确认日期为 2026-10-05。通过 GitHub Release API 确认了 NCCL v2.32.3-1(2026-09-17)、perftest 26.07.8(2026-09-28)、Network Operator v26.4.2(2026-09-16)、RDMA 共享设备插件 v1.5.4(2026-07-28)、Multus v4.3.1(2026-09-08)、SR-IOV 设备插件 v3.11.0(2025-12-16),而 nccl-tests 未发布 Release,读取的是 master(2026-10-02 提交)。

未确认的内容:(1) DCQCN 论文正文现已直接阅读(见下方“外部依据”)。(2) Network Operator README 中的系统要求(ConnectX-5、Ubuntu 20.04)看起来已过时,当前支持矩阵未作确认。(3) 在 Kubernetes 中配对分配 GPU-NIC 的方法。(4) rdma link delete 与 nccl-tests 的预期输出未进行实际运行。(5) MTU 协商规则基于第三方运行手册。(6) 未涵盖 InfiniBand 链路层流控与 NVLink 第 6 代细节。(7) 第 10 节的三项练习均未实际执行。

登录后即可点赞

评论

还没有评论。

登录后即可发表评论