ZBLOG

深入浅出R DMA

深入浅出RDMA(远程直接内存访问)

什么是RDMA?

RDMA(Remote Direct Memory Access)是一种网络技术,允许计算机直接从另一台计算机的内存中读取或写入数据,而无需操作系统内核和CPU的介入。这种”绕过”操作系统的数据传输方式带来了显著的性能优势。

RDMA的核心特点

  1. 零拷贝:数据直接从应用程序内存传输到网卡,不经过内核缓冲区
  2. 内核旁路:应用程序可以直接访问网络适配器,无需内核参与
  3. 无CPU参与:数据传输不需要消耗CPU资源

RDMA的主要优势

  • 低延迟:通常可达到微秒级延迟
  • 高带宽:充分利用网络带宽
  • 低CPU占用率:释放CPU资源用于计算任务

RDMA的实现技术

目前主要有三种实现RDMA的技术:

  1. InfiniBand

    • 专为RDMA设计的网络协议
    • 需要专用硬件支持
    • 提供最高的性能和最低的延迟
  2. RoCE (RDMA over Converged Ethernet)

    • 在以太网上实现RDMA
    • RoCEv2可在标准IP网络上运行
    • 比InfiniBand更具成本效益
  3. iWARP (Internet Wide Area RDMA Protocol)

    • 通过TCP实现RDMA
    • 支持路由功能
    • 适合广域网环境

RDMA的基本概念

1. Queue Pair (QP)

  • 由发送队列(SQ)和接收队列(RQ)组成
  • 是通信的基本端点单位

2. Completion Queue (CQ)

  • 用于通知操作完成状态
  • 每个QP可以关联一个或多个CQ

3. Memory Region (MR)

  • 描述注册的内存区域
  • 必须显式注册才能进行RDMA操作

RDMA操作类型

  1. Send/Receive

    • Send:发送端主动推送数据到接收端的缓冲区
    • Receive:接收端必须预先发布接收请求
  2. Read

    • 从远程节点读取数据到本地内存
  3. Write -将本地数据写入远程节点的内存

  4. Atomic Operations -原子比较交换、原子加法等操作

RDMA编程模型示例(使用ibverbs API)

// IB Verbs基本流程示例:
// 1.获取设备列表 
struct ibv_device** dev_list = ibv_get_device_list(NULL);

//2.打开设备 
struct ibv_context* context = ibv_open_device(dev_list[0]);

//3.分配保护域 
struct ibv_pd* pd = ibv_alloc_pd(context);

//4创建完成队列CQ 
struct ibv_cq* cq = ibv_create_cq(context, CQ_SIZE, NULL, NULL,0);

//5创建队列对QP 
struct ibv_qp_init_attr qp_init_attr;
memset(&qp_init_attr,0,sizeof(qp_init_attr));
qp_init_attr.send_cq = cq;
qp_init_attr.recv_cq = cq;
qp_init_attr.qp_type = IBV_QPT_RC; //可靠连接类型 

struct ibv_qp* qp=ibv_create_qp(pd,&qp_init_attr));

//6注册内存区域MR 
struct ibv_mr*mr=ibv_reg_mr(pd,buffer,buffer_size,
                           IBV_ACCESS_LOCAL_WRITE|
                           IBV_ACCESS_REMOTE_WRITE);

RDMA应用场景

1.高性能计算(HPC) -MPI通信加速

2.分布式存储系统 -Ceph,NFS over RDMA

3.数据库系统 -Oracle RAC,Microsoft SQL Server

4.金融交易系统 -超低延迟的交易平台

5.AI和大数据处理 -TensorFlow over RDMA,Hadoop over RDAM

6.云数据中心 -AWS EFA,Aliyun eRDAM


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

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

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

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

联系我们

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

微信号:3007537140

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

关注我们
x

注册

已经有帐号?