【问题标题】:Mapping remote memory into the address space of a host using Inifiniband使用 Infiniband 将远程内存映射到主机的地址空间
【发布时间】: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

[source of table 1]

目前,我仍在寻找所有可能性。

我注意到的一件事是,每次我想分别使用IBV_WR_RDMA_WRITEIBV_WR_RDMA_READ 写入远程内存或从远程内存读取时,我都必须调用ibv_post_send。所以,我的问题是是否可以将远程内存地址映射到主机的虚拟地址空间。

当然,VPI 组件的所有初始化、向ibv_reg_mr 注册内存以及远程密钥和地址的交换仍然需要完成。 Infiniband 是否提供任何使这成为可能的东西?

谢谢!

【问题讨论】:

    标签: infiniband rdma mellanox


    【解决方案1】:

    没有提供您正在寻找的 RDMA 功能的本机方式。 RDMA 被设计为一种网络协议,它依赖于用户应用程序来提交上述形式的工作请求。然而,虽然这不是原始协议的一部分,但我相信实现一个通过本地内存空间提供远程内存访问的层并非完全不可能——但我不知道有任何这样的系统。

    想到的最接近的事情是内存分解解决方案,基本上可以让您在本地内存充分利用时使用远程内存。这是此类系统的示例:https://github.com/SymbioticLab/infiniswap

    【讨论】:

      猜你喜欢
      • 2023-03-03
      • 2017-11-18
      • 2016-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-28
      • 2018-10-19
      相关资源
      最近更新 更多