RDMA技术整理3 RDMA基本功能
RDMA基本元素
参考于知乎专栏
| 缩略语 | 全称 | 含义 |
| —— | ———————— | ———————————————————— |
| WQ | Work Queue | 储存工作请求的队列 |
| WQE | Work Queue Element | 工作队列里面的元素 |
| QP | Queue Pair | 一对WQ,包括了SQ,RQ;通信的基本单元 |
| SQ | Send Queue | QP中的发送端队列 |
| RQ | Receive Queue | QP中的接受端队列 |
| SRQ | Shared Receive Queue | 共享接收队列,几个QP共享同一个RQ时,我们称其为SRQ |
| CQ | Completion Queue | 完成队列,承载CQE的容器,一个先进先出的队列 |
| CQE | Completion Queue Element | 如果WQE是软件下发给硬件的“任务书”的话,那么CQE就是硬件完成任务之后返回给软件的“任务报告”。 |
| WR | Work Request | 工作请求,WQE和CQE在用户层的“映射” |
| WC | Work Completion | 工作完成,WQE和CQE在用户层的“映射” |RMDA基本操作
RDMA有two-sided和one-sided的区别,一般情况下涉及大量数据的收发更多使用的是one-sided操作,另外在resource-disaggregation的场景中也一般使用one-sided的操作,因为memory节点在设计中往往不会给强力的CPU;
RDMA双端操作 SEND & RECV
双端操作的含义是:完成一次通信过程需要两端CPU的参与,并且接收端需要提前显式下发WQE( Work Queue Element);
在SEND-RECV操作中,不仅仅发送端需要下发WQE,接收端也需要下发WQE,目的是告诉硬件收到的数据要放到哪一个地址,发送端并不知道发送的数据会放到哪里,因此每一次发送数据的时候接收端需要提前准备好接受Buffer;具体如上图(另外执行顺序并不完全和上面的顺序一致,比如步骤
8
11
12
和步骤9
10
的先后是不一定的)这部分在下一篇博客中有具体的实现。
RDMA one-sided 操作 WRITE & READ
one-sided的含义在于,除了准备阶段,服务端的CPU都不需要参与,也不需要感知数据写入和结束接受的过程,因此称为是one-sided的。
在进行WRITE和READ操作之前,首先会经历准备阶段,也就是请求端需要获得响应端某块内存的权限,具体而言:对于RDMA,响应者的buffer被描述成为一个虚拟地址(VA,Virtual Address)和一个R-KEY;在WRITE或者READ操作开始之前,响应方会把这个buffer的控制权传递给请求方,请求方会控制缓冲区,知道控制权传回到响应程序;这个准备过程通常可以用SEND/RECV来完成。完成了之后响应端的CPU就不会再参与数据收发的过程,解放了远端CPU,降低了通信时延。另外虚拟地址–物理地址的转换是通过RDMA网卡来完成的。
接下来是WRITE操作的流程:
- 请求端APP以WQE(WR)的形式下发一次WRITE任务。
- 请求端硬件从SQ中取出WQE,解析信息。
- 请求端网卡根据WQE中的虚拟地址,转换得到物理地址,然后从内存中拿到待发送数据,组装数据包。
- 请求端网卡将数据包通过物理链路发送给响应端网卡。
- 响应端收到数据包,解析目的虚拟地址,转换成本地物理地址,解析数据,将数据放置到指定内存区域。
- 响应端回复ACK报文给请求端。
- 请求端网卡收到ACK后,生成CQE,放置到CQ中。
- 请求端APP取得任务完成信息。
READ是WRITE相反的过程,是请求端主动读取响应端内存的行为,要注意到”读“这个动作的数据是附带在响应端回复的报文里面的,具体流程如下:
- 请求端APP以WQE的形式下发一次READ任务。
- 请求端网卡从SQ中取出WQE,解析信息。
- 请求端网卡将READ请求包通过物理链路发送给响应端网卡。
- 响应端收到数据包,解析目的虚拟地址,转换成本地物理地址,解析数据,从指定内存区域取出数据。
- 响应端硬件将数据组装成回复数据包发送到物理链路。
- 请求端硬件收到数据包,解析提取出数据后放到READ WQE指定的内存区域中。
- 请求端网卡生成CQE,放置到CQ中。
- 请求端APP取得任务完成信息。
通过RDMA的READ,WRITE操作,其实可以发现这个和本地内存拷贝非常像,只不过一个是用RDMA网卡一个使用CPU来做罢了。
参考资料
- RDMA用户编程手册
- IB Specification Vol 1-Release-1.5-2021-08-06b.pdf
- RDMA杂谈