基本概念

- uverbs、 /dev/infiniband/uverbsX
- RDMA 的软硬交换的基础单元是 Work Queue。Work Queue 是一个单生产者单消费者的环形队列。Work Queue 根据功能不同,主要分为 SQ(发生)、RQ(接收)、CQ(完成)和 EQ(事件)
- PD(Protection Domain)PD 是一个容纳了各种资源的“容器”,类似一个租户 ID,将这些资源纳入自己的保护范围内,避免他们被未经授权的访问。一个进程中可以创建多个 PD,各个 PD 所容纳的资源彼此隔离,无法一起使用
- MR(Memory Registration)只有将要操作的内存注册到 MR 中,这段内存才能被 RDMA 使用。MR包括了 PD、lkey、rkey、地址、长度、权限这几个属性。PD 是这个 MR 所属的保护域,其他保护域的上下文是不能访问这个 MR 的,lkey、rkey 统称为 mkey 是一个访问内存的凭据(分别对应本地访问和远程访问),RDMA 的所有操作都要有 mkey 才能进行
- QP is a virtual interface between hardware and software. QP is a queue structure that sequentially stores tasks (WQE) issued by software to hardware. The WQE contains information such as where to retrieve data, how long the data is, and to which destination it should be sent.
- RoCEv2
- MTT (Memory Translation Table) 记录了虚拟地址到物理地址的映射关系,PIN内存的目的就是为了让这个表发生变化。普通的DMA是通过iommu来实现IOVA到PA的转换。iommu负责PIN内存。
- RDMA CM 对应的就是/dev/infiniband/rdma_cm这个设备,通过这个设备来实现建链,实现QP信息的交换
- Mkey
- Indirect Mkey 可以基于现有的 Mkey 产生一个新的 Mkey,这个新的 Mkey 可以自定义各种上文中提到的 mkey 属性
- UMR:User-Mode Memory Registration UMR 是一种在用户态修改 Indirect Mkey 的机制,用户可以构造一个特殊的 UMR WQE 提交到 SQ 中由于 UMR 只是修改 Indirect Mkey 的属性,而且是通过 RDMA 的 QP 进行操作的,可以做到极低的开销(比如给每个请求单独注册内存、反注册内存)
- PA Mode Mkey 这是一种特殊的 mkey,可以绕过网卡的虚拟地址到物理地址的转换,用户可以直接下发一个操作物理地址的命令给网卡
- Dump Fill Mkey、NULL Mkey、NIC Mem Mkey 不同的场景可以定义不同的mkey进行扩展
- BlueField 引入了两种新的 Mkey
- Introspection Mkey:Introspection 的意思是 “the examination or observation of one's own mental and emotional processes”。Introspection Mkey 是 Representor 设备的一个属性。使用 Introspection Mkey 可以访问 Representor 设备表示的实际设备能够访问的所有物理地址空间。
- Crossing Mkey:由于 Introspection Mkey 是属于 Representor 设备的,并不能直接使用 Representor 设备发起 RDMA 请求。Crossing Mkey 是一种特殊的 Indirect Mkey。与普通的 Indirect Mkey 不同的是,Crossing Mkey 可以指向其他设备的 Mkey。
- Unified Address Register (统一地址寄存器)
- IBGDA (InfiniBand GPUDirect Async)