初学者如何准确理解RDMA

龅牙兔谈科技 2024-05-28 07:10:17
什么是RDMA?

远程直接内存访问(RDMA,Remote Direct Memory Access)是一种网络技术,允许计算机在没有操作系统干预的情况下直接将数据传输到另一台计算机的内存中。它大幅提高了网络性能,降低了延迟,为高性能计算和数据中心网络提供了强有力的支持。

RDMA 技术解决的一个核心问题就是:高效低延迟的数据传输。在传统的网络通信模型中,数据传输涉及多个步骤和大量的CPU参与,包括数据拷贝、协议处理和中断处理,这些都会带来显著的延迟和CPU负载。

形象的来说,可以将RDMA比作一个快速的传送带系统:

传统方法:就像需要先将货物打包、运输到仓库,然后再从仓库分发到目的地,过程繁琐且耗时。RDMA方法:就像一条直接的传送带,货物从源头直接传送到目的地,中间不需要任何额外的处理步骤。

RDMA要解决的核心问题及相应的技术手段

核心问题

技术手段

说明

1、低延迟数据传输

直接内存访问(RDMA)

RDMA 允许数据直接从一台计算机的内存传输到另一台计算机的内存,绕过传统网络协议栈,减少了数据在操作系统中的处理时间。

硬件支持

RDMA 依赖于专用的网络接口卡(NIC)和交换设备,这些硬件设备需要支持低延迟数据传输协议,如 InfiniBand、RoCE(RDMA over Converged Ethernet)、iWARP 等。

2、减少CPU占用

零拷贝机制

RDMA 采用零拷贝技术,使数据从应用程序直接传输到网络接口卡,而不需要通过操作系统的缓冲区进行多次拷贝,减少了 CPU 的参与。

卸载协议处理

RDMA 网络接口卡能够卸载大量的网络协议处理工作,包括数据包封装、解封装和校验,从而减轻 CPU 负担。

3、高带宽利用率

高效的网络协议

RDMA 使用的网络协议(如 InfiniBand、RoCE)设计简洁高效,能够最大限度地利用网络带宽,减少了协议开销。

并行数据传输

RDMA 支持多条数据流的并行传输,充分利用网络链路的带宽。

4、零拷贝数据传输

直接数据传输

数据从发送方内存直接传输到接收方内存,无需在中间进行多次拷贝,这通过网络接口卡的 DMA(Direct Memory Access)引擎实现。

用户态操作

RDMA 允许应用程序在用户态直接操作数据传输,而不需要频繁切换到内核态,减少了上下文切换带来的开销。

5、并发处理能力

多队列支持

RDMA 网络接口卡通常支持多队列操作,允许多个数据流并发处理,提高并行处理能力。

高效的内存管理

RDMA 使用注册内存区域(MR,Memory Region)来管理内存,支持高效的内存访问控制和并发访问。

为了实现 RDMA ,需要综合硬件和软件的支持

支持类型

具体要求/工具(示例)

硬件支持

RDMA 网卡

- Nvidia ConnectX 系列网卡(支持InfiniBand/RoCE)

- HuaWei OceanStor系列网卡(支持InfiniBand/RoCE)

交换机和网络设备

- 支持无损网络的交换机

- 低延迟、高带宽

- 支持 InfiniBand 或 RoCE

- 示例:Nvidia Quantum系列 InfiniBand 交换机、Nvidia Spectrum系列 RoCE 交换机

光纤和电缆

- 高速低延迟的光纤或铜缆

- 兼容网卡和交换机的连接接口

软件支持

操作系统和驱动程序

- 支持 RDMA 的操作系统

- Mellanox OFED 驱动程序

- RDMA-core 驱动程序

RDMA 中间件和库

- Libfabric

- RDMA-core

- Mellanox 提供的专有库

应用程序

- 使用 RDMA API 编写和优化

- 适用于高性能计算(HPC)、大数据分析、AI/ML 训练等

网络配置工具

- 配置无损网络的工具

- 支持配置 RDMA 的工具

!!!【点赞】、【关注】不走丢^_^

!!!【点赞】、【关注】不走丢^_^



0 阅读:0

龅牙兔谈科技

简介:感谢大家的关注