RDMA本地内存操作的读保护



我有以下场景:我的服务器分配了一个1MB的缓冲区,它会定期更新并写入(大约每50ms一次)。客户端通过Infiniband连接到服务器,并通过RDMA Read定期读取缓冲区(可能比更新更快)。

我的问题是:是否有任何方法可以确保本地写操作是原子的,以便RDMA读取只能读取有效和连续的内存?

我是否正确理解内存区域仅受并行RDMA操作保护,而不受本地内存操作保护?是否有任何方法可以使用ibverbs API本地完成此行为?

答案可能取决于设备。在RDMA Verbs中,原子操作有两种不同的模式(可以使用ibv_query_device谓词进行检查)。对于IBV_ATOMIC_HCA,原子操作仅相对于来自同一设备的其他操作是原子的,而IBV_ATOMIC_GLOB意味着它们对于CPU操作和其他RDMA设备也是原子的。

如果设备使用IBV_ATOMIC_HCA,需要将RDMA读操作与CPU写操作同步,以保证数据的一致性。

最新更新