RDMA MR重注册
时间: 2023-10-31 10:58:35 浏览: 55
RDMA MR的重注册是指在RDMA操作中,对已经注册过的内存区域进行再次注册的过程。重注册可以用来更新内存区域的属性或者重新分配MR的本地和远程key。
重注册的过程如下:
1. 首先,需要使用原来注册时所使用的RDMA操作上下文和被注册的Buffer地址、长度来创建一个新的Memory Region对象。
2. 通过调用RDMA库提供的重注册函数,将新创建的Memory Region对象与原来的Memory Region对象进行重注册。重注册函数通常会返回一个新的本地key和远程key。
3. 更新原来Memory Region对象中的本地key和远程key,使其与新的本地key和远程key保持一致。这样,原来的Memory Region对象就完成了重注册。
需要注意的是,重注册并不会改变Memory Region对象的物理地址和长度,只会更新Memory Region对象的本地key和远程key。因此,在进行RDMA操作时,需要使用新的本地key和远程key来指示要操作的内存区域。
总结一下,RDMA MR的重注册包括以下步骤:
1. 创建一个新的Memory Region对象。
2. 调用重注册函数,将新的Memory Region对象与原来的Memory Region对象进行重注册,并获得新的本地key和远程key。
3. 更新原来的Memory Region对象中的本地key和远程key,使其与新的本地key和远程key保持一致。
引用:
注册一个Memory Region之后,这个时候这个Memory Region也就有了它自己的属性:context: RDMA操作上下文,addr: MR被注册的Buffer地址,length: MR被注册的Buffer长度,lkey:MR被注册的本地key,rkey:MR被注册的远程key。
注意无论是DMA或者RDMA都要求物理地址连续,这是由DMA引擎所决定的。那么怎么进行内存注册呢?创建两个key (local和remote)指向需要操作的内存区域,注册的keys是数据传输请求的一部分。
RDMA的特点是绕过了内核数据直接到网卡,所以速度快,减轻CPU负担,底层实现有很多厂家。infiniband的价格很快,RoCE使用较多,下面主要讲讲这个。