当操作系统取消固定远程内存缓冲区时,RDMA WRITE / READ的行为如何?

时间:2015-09-24 13:05:49

标签: c memory operating-system infiniband rdma

让两个infiniband进程在两台机器上执行。当一个进程终止时,即使进程为RDMA WRITE / READ操作注册的内存,也会释放其所有资源(已分配的文件,缓冲区......)。

有人可以参考另一个进程上的远程通道适配器如何知道缓冲存储器现在是免费的吗? infiniband堆栈的哪个元素可以控制它以及何时控制?

2 个答案:

答案 0 :(得分:1)

当Linux进程终止时,所有打开的文件描述符都将关闭。使用RDMA的进程将具有与ib_uverbs模块连接的打开设备文件。当该文件描述符关闭时,模块会清除进程打开的每个打开的RDMA资源,包括任何内存区域和队列对。这种清理包括通知HCA的驱动程序并通过它通知设备本身。

如果远程机器继续尝试执行RDMA操作,HCA将拒绝其请求,因为相关资源将被关闭。

答案 1 :(得分:0)

当已连接的对等方退出而未发送断开连接时,IB核心将启动清理过程,该过程还将RDMA DISCONNECT MAD数据包发送到另一个RNIC(如果是RC Q​​P)。看到断开连接后,另一端RNIC会清理SQ / RQ和内容