RDMA
RDMA(Remote Direct Memory Access,远程直接内存访问)是一种面向高性能计算和数据中心场景的网络通信技术。顾名思义,它允许一台计算机直接访问另一台计算机的内存,而无需像传统通信那样依赖操作系统内核来转发和管理数据。
内核旁路(Kernel Bypass)与零拷贝(Zero-Copy)是 RDMA(远程直接内存访问)技术的两大核心机制,共同支撑其低时延、高带宽、低 CPU 开销的优势,具体作用如下:
内核旁路的作用
降低传输时延:传统 TCP/IP 通信中,应用程序需通过系统调用切换至内核态,由内核协议栈处理数据传输逻辑,每次上下文切换耗时 5-10 微秒。RDMA 的内核旁路允许应用程序在用户态通过 Verbs API 直接操作网卡(RNIC),无需内核介入,可将传输时延降至接近 1 微秒。
减少 CPU 调度负担:内核无需参与数据传输的协议处理与调度,避免了高带宽场景下内核态与用户态频繁切换导致的 CPU 资源耗尽问题。例如,40Gbps 带宽下,TCP/IP 可能占用 100% CPU,而 RDMA 的 CPU 占用率可降至 5% 以下。
零拷贝的作用
消除冗余数据拷贝:传统通信需经过 “用户空间→内核缓冲区→网卡” 的多次数据拷贝,RDMA 通过内存注册(如ibv_reg_mr函数)将用户空间内存映射到网卡可直接访问的区域,数据从发送端用户内存经网卡直接传输至接收端用户内存,减少至少 2 次拷贝操作。
提升带宽与 CPU 效率:无需 CPU 参与数据拷贝过程,释放 CPU 资源用于业务逻辑处理。同时,减少内存拷贝的延迟叠加,使 RDMA 能充分利用高带宽网络(如 100Gbps 及以上),提升整体数据传输吞吐量。
RDMA 协议实现
RDMA 本身指的是一种技术,具体协议层面,包含三种:InfiniBand、iWARP、RoCE(RoCE v1 和 RoCE v2),这三种协议都符合 RDMA 标准,使用相同的上层接口,简要介绍如下:
- IB(InfiniBand):基于 InfiniBand 架构的 RDMA 技术,由 IBTA(InfiniBand Trade Association)提出。搭建基于 IB 技术的 RDMA 网络需要专用的 IB 网卡和 IB 交换机。
- iWARP(Internet Wide Area RDMA Protocal):基于 TCP/IP 协议的 RDMA 技术,由 IETF 标 准定义。iWARP 支持在标准以太网基础设施上使用 RDMA 技术,但服务器需要使用支持 iWARP 的网卡。
- RoCE(RDMA over Converged Ethernet):基于以太网的 RDMA 技术,也是由 IBTA 提出。RoCE 支持在标准以太网基础设施上使用 RDMA 技术,但是需要交换机支持无损以太网传输,需要服务器使用 RoCE 网卡。
三者的主要对比如下:
| 特性 | InfiniBand (IB) | RoCE (RDMA over Converged Ethernet) | iWARP (Internet Wide Area RDMA Protocol) |
|---|---|---|---|
| 底层协议 | 原生 RDMA 架构 | 以太网 / UDP/IP (RoCEv2) | TCP/IP |
| 性能表现 | 最高 (延迟最低,最稳定) | 很高 (性能接近 IB,延迟略高) | 较高 (受 TCP/IP 协议栈影响,延迟相对最高) |
| 网络要求 | 专用网络 (IB 网卡、IB 交换机、IB 线缆) | 无损以太网 (需要交换机支持 PFC 等 DCB 功能) | 标准以太网 (可在普通有损网络运行) |
| 部署复杂度 | 高 (需要构建和管理一套独立网络) | 中等 (需要精心配置交换机以保证无损) | 低 (即插即用,无需特殊网络配置) |
| 路由能力 | 不支持 IP 路由 (需要网关) | RoCEv2 支持 IP 路由 | 支持 IP 路由 |
XCCL
XCCL(XXXX Collective Communication Library)集合通信库,大体上会遵照 MPI 提供 API 的接口规定,实现包括点对点通信(SEND,RECV 等),集合通信(REDUCE,BROADCAST,ALLREDUCE)等相关接口。同时针对统一通信原语,在不同的网络拓扑实现不同的优化算法。每个公司可以根据自己的硬件设计或者是系统需要,在底层实现上进行相应改动,保证接口的稳定和性能。因此有了业界常见的通信库,如英伟达的 NCCL,微软的 MSCCL、Meta 的 GLOO、华为的 HCCL 等。
SuperPod
SuperPod 是一种大规模 AI 基础设施,集成了大量计算、存储和网络资源,具备强大计算能力、高速互联和高效协同能力,能满足大规模 AI 模型训练和推理等复杂任务需求。目前华为和英伟达均推出了相关产品。
- 华为 CloudMatrix384 SuperPod:由 48 台服务器组成,包含 384 个 Ascend NPU 芯片 ,集成 VPC、RoCE、UB 三种网络。其中 UB 网络提供全局共享内存地址空间,实现芯片间高速互联,带宽达数百 GB/s,为 AI 计算提供强大支持,是 xDeepServe 系统运行的硬件基础,用于大规模 MoE 模型的高效服务。
- NVIDIA DGX SuperPOD:基于 NVIDIA Blackwell Ultra GPU 构建,是企业 AI 基础设施。有 DGX GB300 和 DGX B300 等不同系统配置,前者采用液冷架构,搭载 Grace Blackwell Ultra 超级芯片,用于高级推理模型;后者采用风冷设计,基于 B300 NVL16 架构,满足不同数据中心需求。通过 NVLink、Quantum-X800 InfiniBand 和 Spectrum-X 以太网连接,可扩展至数万个超级芯片,提供强大计算能力,加速 AI 应用中的 token 生成效率,为代理式 AI、生成式 AI 和物理 AI 工作负载提供支持。DGX是英伟达的一站式服务设备的服务名称,其他还有类似DGX H100的服务,就是一整个主机,包含8个H100
SRAM与HBM的协同作用
SRAM和HBM(High Bandwidth Memory)在GPU中协同工作以优化性能:
-
SRAM作为缓存:SRAM的L1和L2缓存用于存储经常访问的数据,减少对HBM的访问频率,从而降低延迟。
-
HBM作为主存储:HBM存储大规模数据和模型参数,通过缓存机制将数据逐步加载到SRAM中,供计算单元使用。
D2H和H2D数据传输
- Host(主机):指服务器 / 客户端的「主内存」(即物理内存 DRAM),是应用程序直接访问的内存空间(如应用缓存、数据缓冲区)。
- Device(设备):指支持 RDMA 的硬件设备的本地内存,常见的有:
- RDMA 网卡(RNIC)的接收 / 发送缓冲区(如 SRAM 缓存);
- 存储设备(如 NVMe SSD)的本地缓存 / 控制器内存;
- 加速卡(如 GPU、FPGA)的显存 / 本地内存。
优势皆为零拷贝,CPU卸载。
H2D
数据从「主机内存(Host)」直接传输到「设备内存(Device)」,全程由 RDMA 硬件(如 RNIC)主导,CPU 仅负责初始化传输参数(如内存地址、长度、队列对 QP),不参与任何数据拷贝。
- 例子 1:分布式存储的「数据写入」(最典型场景)
假设采用 RDMA 的分布式块存储系统(如 Ceph RBD、GlusterFS),客户端需要将本地文件写入远端存储服务器的 NVMe SSD:- 客户端侧:文件数据先加载到「主机内存(Host)」(如应用层的写入缓冲区);
- 发起 H2D 操作:客户端通过 RDMA 网卡(RNIC),将主机内存中的文件数据直接传输到远端存储服- 务器的「NVMe SSD 设备内存」(如 SSD 的本地缓存);
- 后续:NVMe SSD 控制器再将自身内存中的数据写入闪存芯片(此步骤与 CPU 无关)。
- 例子 2:AI 训练的数据加载(GPU+RDMA 场景)
在大规模 AI 训练中,训练数据需从主机内存加载到 GPU 显存(Device 内存):- 主机内存中存储着训练样本、模型权重(Host 侧数据);
- 通过 RDMA 的 H2D 操作,数据直接从主机内存传输到 GPU 显存(Device 内存),无需 CPU 拷贝;
- 优势:GPU 可直接读取显存中的数据进行计算,避免 CPU 成为数据加载的瓶颈(尤其训练数据量达 TB 级时,吞吐量提升显著)。
D2H
数据从「设备内存(Device)」直接传输到「主机内存(Host)」,与 H2D 相反,同样由 RDMA 硬件主导,CPU 仅负责初始化和后续数据读取,不参与数据拷贝。
-
例子 1:分布式存储的「数据读取」(最典型场景)
客户端从远端存储服务器读取文件:- 存储服务器侧:NVMe SSD 先将文件数据从闪存加载到自身「设备内存(缓存)」;
- 发起 D2H 操作:存储服务器的 RDMA 网卡,将 SSD 设备内存中的数据直接传输到客户端的「主机内存(应用缓冲区)」;
- 客户端应用:无需等待 CPU 拷贝,可直接从主机内存读取数据(延迟比传统 IO 低 50% 以上)。
-
例子 2:分布式数据库的「查询结果返回」
在基于 RDMA 的分布式数据库(如 TiDB、MongoDB 分布式版)中,查询请求的处理流程:- 远端数据节点执行查询后,结果数据暂存于该节点的「RDMA 网卡接收缓冲区(Device 内存)」;
- 通过 D2H 操作,查询结果直接从网卡缓冲区传输到客户端的「主机内存(应用查询缓冲区)」;
- 客户端应用可立即读取结果,避免 CPU 在「网卡→内核→应用」的拷贝开销(尤其适合高频小查询场景)。
-
例子 3:GPU 训练结果回写
AI 训练完成后,GPU 显存(Device 内存)中的模型权重需回写到主机内存(用于持久化存储或模型分发):- 发起 D2H 操作:GPU 的 RDMA 网卡,将显存中的模型权重直接传输到主机内存(如应用层的模型存储缓冲区);
- 后续:主机内存中的模型权重可被应用程序读取或持久化存储。
- 优势:避免 CPU 成为模型回写的瓶颈,提升训练迭代效率。
说些什么吧!