1. DMA和RDMA的概念
1.1 什么是DMA?
Direct Memory Access(DMA) is a capability provided that allows data to be sent directly from an attached device to the memory on the computer's motherboard.
DMA(直接内存访问)是一种能力,允许在计算机主板上的设备直接把数据发送到内存中去,数据搬运不需要CPU的参与。
1.2 什么是RDMA?
RDMA is a concept whereby two or more computers communicate via Direct Memory Access directly from the main memory of one system to the main memory of another.
RDMA是一种概念,在两个或者多个计算机进行通讯的时候使用DMA, 从一个主机的内存直接访问另一个主机的内存。
RDMA 是一种主机卸载、主机旁路技术,它允许应用程序(包括存储)直接向/从另一个应用程序的内存空间传输数据。支持 RDMA 的以太网 NIC (RNIC)——而不是主机——管理源和目标之间的可靠连接。应用程序使用专用队列对 (QP) 和完成队列 (CQ) 与 RDMA NIC 进行通信:
- 每个应用程序可以有许多 QP 和 CQ
- 每个 QP 都有一个发送队列 (SQ) 和接收队列 (RQ)
- 每个 CQ 可以与多个 SQ 或 RQ 关联
RDMA是一种host-offload, host-bypass技术,允许应用程序(包括存储)在它们的内存空间之间直接做数据传输。具有RDMA引擎的以太网卡(RNIC)--而不是host--负责管理源和目标之间的可靠连接。使用RNIC的应用程序之间使用专注的QP和CQ进行通讯:
- 每一个应用程序可以有很多QP和CQ
- 每一个QP包括一个SQ和RQ
- 每一个CQ可以跟多个SQ或者RQ相关联
2. RDMA的优势
传统的TCP/IP技术在数据包处理过程中,要经过操作系统及其他软件层,需要占用大量的服务器资源和内存总线带宽,数据在系统内存、处理器缓存和网络控制器缓存之间来回进行复制移