RDMA(远程直接内存访问)
一、核心定义
RDMA(Remote Direct Memory Access,远程直接内存访问)是一种高性能网络技术,允许计算机直接从另一台计算机的内存中读取或写入数据,无需涉及对方 CPU 和操作系统内核,实现真正的 “端到端” 直接通信。
它源于 DMA(直接内存访问)技术的扩展,DMA 允许本地 IO 设备直接访问主机内存,而 RDMA 将这一能力扩展到了网络环境中,使分布式系统中的节点能够像访问本地内存一样高效地访问远程内存。

二、核心特性
1,零拷贝:数据直接从应用内存传输到网卡,绕过内核缓冲区,无需多次内存拷贝;减少延迟,降低内存带宽占用
2,内核旁路:用程序直接与网卡交互,不经过操作系统内核;消除上下文切换开销,降低 CPU 占用
3,CPU 卸载:数据传输、校验和计算等操作由网卡硬件完成;释放 CPU 资源用于业务处理
4,内存语义:支持读、写、原子操作等内存级指令;将通信抽象从 “字节流 / 消息” 提升到 “内存操作”
5,异步通信:通信操作可异步执行,不阻塞应用程序;提高系统并发性和吞吐量

三、工作原理

  1. 内存注册
    应用程序首先将需要共享的内存区域注册到 RDMA 网卡(RNIC),RNIC 会将这些内存锁定并映射到硬件可访问的地址空间,确保数据传输期间内存不会被操作系统换出。
  2. 地址转换
    通过内存密钥(Memory Key, MR) 和远程密钥(Remote Key, RKey) 机制实现安全的远程内存访问控制。本地应用获得 LKey 用于本地访问,远程应用获得 RKey 用于远程访问,RNIC 会验证每个访问请求的密钥合法性。
  3. 队列对(QP)通信
    RDMA 使用发送队列(SQ) 和接收队列(RQ) 来管理通信操作:
    应用程序将 RDMA 操作指令(读 / 写 / 原子操作)放入 SQ
    RNIC 自动处理这些指令,通过网络传输数据
    操作完成后,RNIC 将完成状态写入完成队列(CQ)
    应用程序通过轮询或中断方式获取完成通知
  4. 三种核心操作模式
    单向写(RDMA Write):本地节点直接将数据写入远程节点的注册内存
    单向读(RDMA Read):本地节点直接从远程节点的注册内存读取数据
    原子操作(Atomic Operations):支持远程内存的原子性读写,如比较并交换(CAS),适用于分布式锁和同步场景

四、主流实现方式对比
在这里插入图片描述
在这里插入图片描述
五、与传统网络通信对比
传统 TCP/IP 通信流程:
应用内存 → 内核缓冲区 → 网卡缓冲区 → 网络 → 目标网卡缓冲区 → 目标内核缓冲区 → 目标应用内存
需要经过4 次内存拷贝和多次上下文切换,CPU 开销大,延迟高。
RDMA 通信流程:
应用内存 → 网卡 → 网络 → 目标网卡 → 目标应用内存
仅需0 次内核空间拷贝,CPU 几乎不参与数据传输过程,延迟可降低至微秒甚至亚微秒级别,吞吐量提升数倍,CPU 利用率降低 90% 以上。

六、核心优势
极致低延迟:端到端延迟可达微秒级甚至亚微秒级,比传统 TCP/IP 低一个数量级
超高吞吐量:单端口带宽可达200Gb/s~400Gb/s,接近物理链路极限
超低 CPU 占用:数据传输几乎不消耗 CPU 资源,释放更多算力用于业务处理
高可扩展性:支持数千节点的大规模集群,适合分布式系统横向扩展
内存语义通信:简化分布式编程模型,使开发人员可以像操作本地内存一样操作远程内存

七、典型应用场景

  1. 高性能计算(HPC)
    大规模科学计算集群,如气象模拟、基因测序、天体物理研究
    加速 MPI(消息传递接口)通信,提高集群整体计算效率
  2. 人工智能与机器学习
    分布式深度学习训练:加速模型参数同步和梯度交换(如 TensorFlow、PyTorch 的分布式训练)
    大规模模型推理:提高多节点间数据共享效率
  3. 分布式存储系统
    分布式数据库(如 MySQL Cluster、PostgreSQL 分布式集群)
    软件定义存储(SDS):如 Ceph、GlusterFS,加速节点间数据复制和同步
    NVMe over Fabrics(NVMe-oF):实现远程 NVMe 设备的低延迟访问
  4. 云计算与数据中心
    虚拟机迁移:加速 VMware、KVM 等虚拟化平台的虚拟机实时迁移
    容器网络:提高 Kubernetes 等容器编排平台的跨节点通信性能
    分布式缓存:如 Redis Cluster,加速缓存节点间数据同步
  5. 金融科技
    高频交易系统:降低订单传输延迟,提高交易执行速度
    风险计算:加速大规模风险模型的分布式计算

参考文章:
https://www.zhihu.com/column/c_1231181516811390976

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐