ZBLOG

RDMA

RDMA(远程直接内存访问)详解

1. 什么是 RDMA?

RDMA(Remote Direct Memory Access) 是一种高性能网络通信技术,允许计算机直接从一台机器的内存读取或写入数据到另一台机器的内存,无需 CPU 介入。它显著降低了延迟、提高了吞吐量,并减少了 CPU 开销。

2. RDMA 的核心优势

  • 零拷贝(Zero-Copy):数据直接从应用缓冲区传输到网卡,绕过操作系统内核。
  • 内核旁路(Kernel Bypass):应用程序可以直接与网卡交互,减少上下文切换。
  • 低延迟(Low Latency):通常延迟在微秒级(μs),远低于传统 TCP/IP。
  • 高带宽(High Bandwidth):支持 100Gbps+ 的网络速率。

3. RDMA 的实现方式

目前主流的 RDMA 实现有三种:

技术 协议 适用场景
InfiniBand (IB) Native RDMA HPC、超算中心
RoCE (RDMA over Converged Ethernet) Ethernet + RDMA 数据中心、云环境
iWARP (Internet Wide Area RDMA Protocol) TCP/IP + RDMA WAN/跨数据中心

其中:

  • RoCEv2 (基于 UDP)是目前企业级应用的主流选择。
  • iWARP 由于依赖 TCP/IP,性能稍逊于 InfiniBand 和 RoCE。

4. RDMA vs. TCP/IP

特性 RDMA 传统 TCP/IP
CPU 使用率 ≈0% 高(内核协议栈处理)
延迟 μs级 ms级
吞吐量 ≥100Gbps 受限于协议栈优化
适用场景 HPC、存储、AI训练 通用网络通信

5. RDMA 的应用场景

  1. 高性能计算(HPC)
    • MPI(消息传递接口)加速多节点计算。
  2. 分布式存储
    • Ceph、NVMe over Fabrics (NVMe-oF) 。
  3. AI/ML训练
    • GPU/NPU之间高速数据传输(如NVIDIA GPUDirect RDMA)。
  4. 金融交易系统
    • Ultra-Low Latency Trading (纳秒级延迟需求)。
  5. 云计算 & SDN
    • AWS EFA, Azure Accelerated Networking。

6. RDMA编程模型

主要使用以下 API/库:

  • Verbs API(底层,直接操作硬件)
  • libibverbs (Linux下的标准RDAM库)
  • (OFED) OpenFabrics Enterprise Distribution)
    示例代码片段:
// ibv_post_send() - RDMA发送请求
struct ibv_sge list = { .addr = buf_addr, .length = len, .lkey = mr->lkey };
struct ibv_send_wr wr = { 
    .wr_id = id, .sg_list = &list, .num_sge =1,
    .opcode= IBV_WR_SEND, .send_flags= IBV_SEND_SIGNALED
};
ibv_post_send(qp, &wr, &bad_wr);

7. Linux下RDAM工具

#查看RDAM设备
ibv_devices   
#测试带宽和延迟
ib_send_bw    #带宽测试
ib_write_lat   #延迟测试
#监控统计信息
perfquery      #InfiniBand性能计数

如果需要更深入的内容(如具体代码示例或部署方案),可以进一步探讨!


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://sdn.0voice.com/?id=8026

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?