LKEY(Local Key):本端密钥 RKEY(Remote Key):远端密钥 二、背景技术 RDMA使能硬件直接访问用户态应用软件分配的内存从而实现零拷贝和绕过内核以达到低延迟和高带宽。为了达到此目的,通信前,应用软件必须向驱动软件注册内存,提供内存的起始虚拟地址、长度和访问权限(比如读、写)等信息。驱动软件根据虚拟地址和长度,会...
MR(Memory Registration):RDMA 中对内存保护的一种措施,只有将要操作的内存注册到 MR 中,这段内存才能被 RDMA 使用。MR包括了 PD、lkey、rkey、地址、长度、权限这几个属性。PD 是这个 MR 所属的保护域,其他保护域的上下文是不能访问这个 MR 的(避免了暴力遍历内存访问其他进程内存的可能)。lkey、rkey...
* When opcode is *_INV: Stores the rkey to invalidate */ union { __be32 imm_data; uint32_t invalidate_rkey; }; union { struct { uint64_t remote_addr; uint32_t rkey; } rdma; struct { uint64_t remote_addr; uint64_t compare_add; uint64_t swap; uint32_t rkey; } atomic; ...
MR(Memory Registration):RDMA 中对内存保护的一种措施,只有将要操作的内存注册到 MR 中,这段内存才能被 RDMA 使用。MR包括了 PD、lkey、rkey、地址、长度、权限这几个属性。PD 是这个 MR 所属的保护域,其他保护域的上下文是不能访问这个 MR 的(避免了暴力遍历内存访问其他进程内存的可能)。lkey、rkey 统称...
注册一个内存区域:VPI仅适用于已注册的内存。进程的虚拟空间中任何有效的内存缓冲区都可以进行注册。在注册过程中,用户设置内存权限并接收本地和远程秘钥(lkey,rkey),稍后将使用这些秘钥来引用此内存缓冲区。 创建完成队列:一个CQ包含完成的工作请求(WR)。每个WR将生成放置在CQ中的完成队列实体CQE。CQE将制定WR是否...
MR包括了 PD、lkey、rkey、地址、长度、权限这几个属性。PD 是这个 MR 所属的保护域,其他保护域的上下文是不能访问这个 MR 的(避免了暴力遍历内存访问其他进程内存的可能)。lkey、rkey 统称为 mkey 是一个访问内存的凭据(分别对应本地访问和远程访问),RDMA 的所有操作都要有 mkey 才能进行。
处于安全的考虑,只有被允许的远端才可以访问,这些远端持有远端访问密钥,即Remote Key(简称 RKey),只有带有正确 RKey 的请求才能够访问成功。为了内存管理的细粒度化,RDMA 还提供了 Memory Window(简称 MW),一个 MR 上可以分列出多块 MW,并且每一块 MW 上都可以自定义访问权限。除了上述中的 MR 和 MW...
rkey:MR被注册的远程key 对Memrory Registration:Memory Registration只是RDMA中对内存保护的一种措施,只有将要操作的内存注册到RDMA Memory Region中,这快操作的内存就交给RDMA 保护域来操作了。这个时候我们就可以对这快内存进行操作,至于操作的起始地址、操作Buffer的长度,可以根据程序的具体需求进行操作。我们只要保证...
远端拿着这个 rkey 进行远程内存访问操作。 异步任务处理(重点) 为了发挥最高的性能,整个 UCX 通信接口是全异步的。所谓异步指的是 IO 操作的执行不会阻塞当前线程,一次操作的发起和完成是独立的两个步骤。如此一来 CPU 就可以同时发起很多 IO 请求,并且在它们执行的过程中可以做别的事情。 不过接下来问题来了...
远程键 rkey:供远程机器通过 RDMA 访问内存的 key 在工作请求中,将使用这些 key 来访问内存缓冲区,同一内存缓冲区可以被多次注册(甚至设置不同的操作权限),并且每次注册都会生成不同的 key。 结构ibv_mr 用来描述内存注册。 1 2 3 4 5 6 7 8 9 1. 2. 3. 4. 5. 6. 7. 8. 9. struct ibv_mr ...