我最近开始使用Infiniband卡,两个梅拉诺克斯技术公司的MT27700家族连接器-4是具体的。最后,我希望基于VPI谓词API/RDMA CM扩展现有框架的接口。
关于我已经做过的关于RDMA编程的研究:我从阅读Mellanox的RDMA感知网络编程用户手册开始。其次,我阅读了关于VPI谓词/RDMA谓词的功能的相当全面的博客。最后,我阅读了由Tarick出版的关于RDMA编程的三篇论文:[1]、[2]、[3]。
为了了解什么是最适合我的需求,我创建了一个测试平台,用于测量延迟、CPU使用和吞吐量等。我测试了不同的操作(参见下面的表1)、不同的发送标志(例如IBV_SEND_INLINE),以及不同的工作完成方式(繁忙的轮询与在完成通道中等待事件)。我的测试平台在一定程度上受到了RDMA编程的性能研究的研究结果的启发。
OPCODE | IBV_QPT_UD | IBV_QPT_UC | IBV_QPT_RC
----------------------------+------------+------------+-----------
IBV_WR_SEND | X | X | X
IBV_WR_SEND_WITH_IMM | X | X | X
IBV_WR_RDMA_WRITE | | X | X
IBV_WR_RDMA_WRITE_WITH_IMM | | X | X
IBV_WR_RDMA_READ | | | X
IBV_WR_ATOMIC_CMP_AND_SWP | | | X
IBV_WR_ATOMIC_FETCH_AND_ADD | | | X目前,我仍在寻找各种可能性。
我注意到的一件事是,每当我想分别用IBV_WR_RDMA_WRITE或IBV_WR_RDMA_READ写入远程内存或从远程内存中读取时,都必须调用IBV_WR_RDMA_WRITE。因此,我的问题是,是否可以将远程内存地址映射到主机的虚拟地址空间。
当然,所有VPI组件的初始化、ibv_reg_mr内存的注册以及远程密钥和地址的交换都必须完成。英飞凌提供了什么让这成为可能吗?
谢谢!
发布于 2018-06-12 20:31:02
没有原生的方法来提供您想要的RDMA功能。RDMA是作为一种网络协议设计的,它依赖于用户应用程序提交上述表单的工作请求。然而,尽管这不是原始协议的一部分,但我认为实现一个通过本地内存空间提供远程内存访问的层并非完全不可能--但我不知道任何这样的系统。
想到的最接近的事情是一个内存分解解决方案,它基本上允许您在充分利用本地内存时使用远程内存。下面是这样一个系统的示例:https://github.com/SymbioticLab/infiniswap
https://stackoverflow.com/questions/50802181
复制相似问题