让两个infiniband进程在两台机器上执行。当一个进程终止时,它的所有资源(分配的文件、缓冲区,…)都会被释放,甚至是进程为RDMA
写/读操作注册的内存。
是否有人可以引用另一个进程上的远程通道适配器如何知道缓冲区内存现在是空闲的?infiniband堆栈的哪个元素可以控制什么时候?
最佳答案
当Linux进程终止时,其所有打开的文件描述符都将关闭。使用RDMA的进程将有一个与ib-uverbs模块连接的打开的设备文件。当该文件描述符关闭时,模块将清除进程打开的所有RDMA资源,包括任何内存区域和队列对。此清理包括通知HCA的驱动程序并通过它通知设备本身。
如果远程计算机继续尝试执行RDMA操作,HCA将拒绝其请求,因为相关资源将被关闭。
关于c - 当操作系统取消固定远程内存缓冲区时,RDMA WRITE/READ的行为如何?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32762153/