【发布时间】:2018-11-20 23:12:11
【问题描述】:
我最近开始使用 Infiniband 卡,具体来说是两个 Mellanox Technologies MT27700 系列 [ConnectX-4]。最终,我想使用基于 VPI Verbs API/RDMA CM API 的接口扩展现有框架。
关于我已经对 RDMA 编程进行的研究:我从阅读 Mellanox' RDMA Aware Networks Programming User Manual 开始。其次,我阅读了关于 VPI Verbs/RDMA Verbs 功能的a quite comprehensive blog。最后,我阅读了 Tarick Bedeir 发表的三篇关于 RDMA 编程的论文:[1]、[2]、[3]。
为了了解最适合我的需求,我创建了一个测试平台来测量延迟、CPU 使用率和吞吐量等。我测试了不同的操作(见下表 1)、不同的发送标志(例如IBV_SEND_INLINE)以及检索工作完成的不同方式(忙轮询与等待完成通道中的事件)。我的测试台部分受到this performance study on RDMA programming 的发现的启发。
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_post_send。所以,我的问题是是否可以将远程内存地址映射到主机的虚拟地址空间。
当然,VPI 组件的所有初始化、向ibv_reg_mr 注册内存以及远程密钥和地址的交换仍然需要完成。 Infiniband 是否提供任何使这成为可能的东西?
谢谢!
【问题讨论】:
标签: infiniband rdma mellanox