RDMA传输无需映射内存
我有通过IB网络交换文件的补充流程。 然后这些文件将被其他进程使用。
工作流程如下:
原来,我的方案中的瓶颈是ib_reg_mr(我单独测量3Gb内存需要1.78秒)。 它似乎触发了内存区域映射到处理器的地址空间。 不幸的是,这个操作是不需要的,因为接收处理器不使用这个存储器。 内存应该被映射并在以后被其他进程使用。
所以我认为避开接收程序的变更页面表是明智的做法,但我根本无法找到它是否可能。
你能否告诉我,如果有办法在内存区域启动数据传输而不将其映射到进程的地址空间?
据我所知,如果不将它映射到进程页表,就无法注册一个内存区域。 在注册期间,页面被固定,以便在设备访问页面时映射不会改变,这需要将它们映射到过程。 通过按需分页,您可以延迟页面到该过程的映射,直到HCA实际使用它们,但最终它们将被映射。
请尝试使用FRWR(快速内存注册工作请求)。 它是一个通过ibv_post_send动词进行内存注册的API - 快得多的方法:
http://lists.openfabrics.org/pipermail/general/2008-May/050235.html
http://lxr.free-electrons.com/source/include/rdma/ib_verbs.h?v=3.2#L734
链接地址: http://www.djcxy.com/p/64627.html上一篇: RDMA tranfer without mapping memory
下一篇: RDMA WRITE: ibv