【RDMA学习笔记】1:RDMA(Remote Direct Memory Access)介绍

帝国理工的PPT学习。

什么是RDMA

Remote Direct Memory Access,也就是Remote的DMA,是一种硬件机制,能直接访问远端结点的内存,而不需要处理器介入。

其中:

  • Remote:跨node进行数据传输
  • Direct:不需要CPU或者OS kernel介入
  • Memory:从两个node各自app的虚拟地址空间直接传输数据
  • Access:支持send、receive、read、write、atomic operation

RDMA的优点

也就说明了适用场景

  • 较高的高吞吐量(带宽)
  • 较低的E2E时延
  • 较低的CPU适用:单侧的RDMA操作完全不需要remote CPU参与)
  • 较低的内存总线争用:user space和kernel之间完全不拷贝数据)
  • 异步操作:所以很适合overlapping的通信和计算

传统的TCP/IP vs RDMA

可以看到RDMA绕过kenel mode的同时也bypass了这些协议栈

协议栈对比

RDMA网络栈

准备阶段:设置RDMA的data channels

buffer在使用前需要在网卡那边注册一下,具体地,在注册阶段需要:

  • Pin memory,保证这块memory不会被OS swap出去
  • 将地址转换信息存到NIC里
  • 对这段memory region设置权限
  • 返回remote key和local key,这是给adapter在执行RDMA操作时用的

工作队列

RDMA通信是基于Send、Receive、Completion这三种队列的,其中Send和Receive的queue属于work queue,总是以Queue Pair的形式被创建。SQ和RQ用于schedule work,当work完成时,CQ用于通知。

在工作时,应用会issue一个work request,这个struct包含了指向一个buffer的指针:

  • 对于SQ,指向要发送的消息
  • 对于CQ,指向了incoming message要放入的位置

而一旦一个work request完成了,那么adapter就会往CQ里塞一个元素。

支持RDMA的网络协议

IB (InfiniBand)、RoCE (RDMA over Converged Ethernet)、iWARP (internet Wide Area RDMA Protocol)

RDMA只是一种机制

并没有指定data transfer的语义,RDMA网络支持两种访问模型:

Two Sided:RDMA send & receive

这是最传统的消息传递模式,消息源和目标方都积极地参与通信

双方都需要创建:

  • 一对QP (SQ+CQ),用于发送和接收
  • 给这对QP用的CQ

发送方的work request会指向要传输的buffer,然后把这个WQE塞到SQ里发过去。

接收方的work request会指向一个empty buffer用于接收数据,通过这种方式WQE会被添加到对应的RQ里。

在send+receive完成之后,也就是直接写入了remote的registered memory,然后双方的CQ里都会被添加一个CQE表示完成了。

One Sided:RDMA read & write + atomic操作

只有发起方是活动的,接收方是纯被动的,不会issue任何操作,也不会有CPU cycle,甚至完全不会感知到有read/write发生了。

如果要发起RDMA read/write,那么work request必须包含:

  • 远端目标内存的虚拟地址
  • 远端的memory registration key

也就是说要使用RDMA read/write,发起方必须事先就知道这两个knowledge。

基于RDMA的上层协议

RDMA有很多好处,但也因为开发者需要使用它的Verbs API带来了额外的复杂性。

相关推荐
colus_SEU1 天前
【计算机网络笔记】第一章 计算机网络导论
笔记·计算机网络·1024程序员节
甄心爱学习1 天前
计算机网络6
网络·计算机网络
周杰伦_Jay1 天前
【计算机网络核心】TCP/IP模型与网页解析全流程详解
网络·网络协议·tcp/ip·计算机网络·算法·架构·1024程序员节
报错小能手2 天前
计算机网络自顶向下方法2——网络、ISP连接结构介绍
网络·计算机网络
深蓝岛2 天前
目标检测核心技术突破:六大前沿方向
论文阅读·人工智能·深度学习·计算机网络·机器学习
Sudo_Wang2 天前
让 Codex 用 React 生成一个博客首页
计算机网络
番茄寿司3 天前
具身智能六大前沿创新思路深度解析
论文阅读·人工智能·深度学习·计算机网络·机器学习
A.sir啊3 天前
计算机网络:知识点梳理及讲解(三)数据链路层
计算机网络·以太网·交换机·数据链路层·局域网·ppp点对点·广播信道
浣熊-论文指导3 天前
人工智能与生物医药融合六大创新思路
论文阅读·人工智能·深度学习·计算机网络·机器学习
大象耶3 天前
自然语言处理前沿创新方向与技术路径
论文阅读·人工智能·深度学习·计算机网络·机器学习