线程/进程将在传递给post_send()的数据中包含MR rkey,并使用MR lkey配置sge列表以从中传输。
我正在使用infiniband HW,想要检查在本地发送和接收RDMA的同一线程中使用lkey和rkey是否合法。
答案 0 :(得分:1)
我不确定我是否理解这个问题,但是对于本地请求同时使用相同MR的L_Key和R_Key是完全可以的。如果您使用重叠内存来发送和接收工作请求,您可能会得到奇怪的结果 - 例如,从地址X获取的100字节的RDMA WRITE到地址X + 50.同样在飞行中有多个工作请求,其中一个正在覆盖另一个人使用的相同记忆会导致令人困惑的结果。
然而,从本地地址X到本地地址X + 200(其中这些地址在同一存储区域中)的100字节的RDMA WRITE完全没问题 - 你只是使用你的RDMA适配器作为一个奇特的本地DMA引擎。