本文将mark下RDMA UMR(User-Mode Memory Registration)机制相关notes。

What

User-Mode Memory Registration (UMR) supports the creation of memory keys for non-contiguous memory regions. This includes the concatenation(连接) of arbitrary contiguous regions of memory, as well as regions with regular structure.

Examples

Three examples of non-contiguous regions of memory that are used to form new contiguous regions of memory are described below.

将多块非连续的MR拼接成一个VA连续的MR

如上图所示,我们之前创建了3个常规的MR:MR1(green), MR2(purple), MR3(red),现在我们想从这三个MR中各抽取一部分拼接起来形成一个新的连续的MR:第一块是MR1(v0-v1)部分,第二块是MR2(v2-v3)部分,第三块是MR3(v4-v5)部分。这个新的MR有一个新的base VA地址,长度是3个小块的长度之和。这样虽然内部是不连续的,但在外部访问者看来这个MR是连续的。

将一个MR内有规律非连续的块拼接成一个连续的MR

如上图所示,当我们做一个矩阵的转置时,需要把一列的元素拼成新的行,这个行就成了新的连续的MR。

将多个MR拼接成新的相互交织的连续MR

如上图所示,2个老矩阵的列相互交织形成新的列,这是一个新的VA连续的MR,它有自己新的base address和length。

思考

UMR会创建新的memory keys、VA(Virtual Address)地址和MTT entries;在MTT entry中,保证新的VA地址指向目标PA(Physical Address)即可。


参考资料:

  1. RDMA Aware Networks Programming User Manual
  2. RDMA 高级