RDMA read/write with ib verbs

RDMA因为其kernel-bypass,zero-copy,cpu offload三种特性,能够提供低延迟、高吞吐的数据传输性能。

使用RDMA进行数据传输时,read/write在client/server端的具体操作可以概括为以下步骤:

     1. 初始化连接和注册内存区(Memory Region);

     2. 建立连接;

     3. 使用send/receive verbs在client和server间传递内存区地址(addr)和key;

     4. 发出read/write请求;

     5. 断开连接。

为了详细的描述上述过程,在第2步建立连接以后,Client端执行以下操作:

     1. 使用MSG_MR消息发送内存区的地址和key;

     2. 等待接收Server端发来的包含内存区地址和key的MSG_MR消息;

     3. 发出read/write请求;

     4. 向Server端发送MSG_DONE消息,通知Server端准备断开连接;

     5. 等待Server端的MSG_DONE消息;

     6. 断开连接。

Server端的操作流程是类似的:

     1. 等待Client端的MSG_MR消息;

     2. 使用MSG_MR消息发送内存区的地址和key;

     3. 发出read/write请求;

     4. 向Client端发送MSG_DONE消息,通知Client端准备断开连接;

     5. 等待Server端的MSG_DONE消息;

     6. 断开连接。

为了避免断开连接影响read/write操作的正常进行,通信双方必须在断开连接前等待MSG_DONE消息。但是,二者在发出MSG_DONE消息时不需要等待read/write请求结束,因为InfiniBand的特点是请求将按发起的顺序被依次执行。这意味着在read/write操作完成之前,另一方不会收到MSG_DONE。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值