Reset state

QP可以通过两种方式获得Reset:
1:通过创建它
2:通过调用ibv_modify_qp()将其从任何其他状态移动到Reset状态
在创建QP时,需要花费一些时间来创建它(有上下文切换、为工作队列缓冲区分配内存、QP编号分配等)。

如果需要在快速路径中使用新的QP,较好的替代方法如下:
Create a QP
Use the QP (modify to RTS and send/receive data)
Destroy the QP
可以是:只创建一次QP,然后在需要时执行以下操作:
Use the QP (modify to RTS and send/receive data)
Modify the QP to Reset for later use

当QP不再被需要时,它可以被摧毁。
重用相同的QP可能比每次创建它更快。将QP从任何其他状态移动到Reset状态将清除前一个事务的所有“剩余”(例如发送和接收队列中的工作请求和完成)。
但是,不建议在相同的节点之间使用相同的qp,因为可能会出现意外的结果(包丢失)。
将QP移到Reset状态将阻止QP发送或接收报文。

Init state

当QP移动到RTR状态时,QP将处理传入的报文。如果由于任何原因(例如:操作系统调度程序没有给该进程时间),在转换到RTR状态后,工作请求没有被发布到该QP的接收队列中,那么这些包的请求者可能会发生接收器未准备好(RNR)错误。为了防止这种情况发生,可以在QP处于Init状态时向它发送接收请求。在QP转换到RTR状态之前,不会处理这些工作请求。

RTR state

在这种状态下,QP处理传入的报文。如果QP不被用作请求者(例如,工作请求不会被发布到它的发送队列中),QP可能会停留在RTR状态。

RTS state

在大多数应用程序中,qp将被转换到RTS状态。在这种状态下,QP可以作为请求者发送报文并处理传入的报文。即使您的QP不充当请求者,它也可以转换到这种状态。

SQD state

如果希望更改某些发送队列属性,他应该将QP转换为SQD状态,修改所需的属性,然后将QP转换回RTS状态,以便能够继续发送数据包。

SQE state

QP只能在发送队列中的工作请求以错误完成的情况下由设备自动转换到此状态。在这种状态下,发送队列不能作为请求者发送包。如果希望从这种状态恢复QP,他应该将QP修改回RTS状态。

ERROR state

QP可以通过两种方式移动到Reset:
1:自动,由RDMA设备的情况下完成与错误
2:将QP状态从其他状态移动到Error状态

如果出现错误,则收到错误的队列(发送或接收队列)的完成队列中的第一个完成将保持指示错误原因的状态。该队列和另一个队列中的其余工作请求将被错误地刷新。

此状态对于回收所有工作请求以释放其缓冲区非常有用(例如,如果工作请求中的wr_id属性指定此工作请求使用的缓冲区)。

将QP移到Error状态将导致QP无法发送或接收报文。

Destroying the QP

这本身不是一个QP状态,但是当用户使用完一个QP并希望阻止QP发送或接收数据包时,可以销毁它。

RDMA-Using the QP states相关推荐

  1. 【RDMA】IRN|Revisiting Network Support for RDMA-(重新审视RDMA的网络支持)

    目录 重新审视RDMA的网络支持 Abstract (摘要) 1 Introduction (引言) 2 Background (背景) 2.1 Infiniband RDMA and RoCE (I ...

  2. 【RDMA】优化 RDMA 代码的提示和技巧

    目录 RDMA性能优化理论依据 二.基础概念背后的硬件执行方式和原理 Memory Region RDMA Verbs Queue Pair 三.RDMA性能优化 3.1 关注地址翻译的性能开销 3. ...

  3. 【verbs】ibv_get_async_event()

    原文:ibv_get_async_event() - RDMAmojo RDMAmojo 描述 ibv_get_async_event() 读取 RDMA 设备上下文context的下一个异步事件. ...

  4. 【vbers】ibv_get_async_event()

    原文:ibv_get_async_event() - RDMAmojo RDMAmojo 描述 ibv_get_async_event() 读取 RDMA 设备上下文context的下一个异步事件. ...

  5. 构建政务服务区块链 助推数据共享和业务协同

    一.问题和需求 随着"互联网+政务服务"不断深化,跨部门.跨系统的数据共享和业务协同需求日益迫切.传统的解决方案一般是建立统一的数据中心(政务服务平台或数据共享平台),各个数据提供 ...

  6. RDMA Mellanox官方使用VPI verbs API的例子

    来源:Mellanox RDMA文档中的样例 编译库的需求:libibverbs 编译参数:GCC <文件名> -o service -libverbs 运行方式: 1. 有IB网络支持: ...

  7. 【RDMA】intel 英特尔RDMA 驱动和ibverslib 库安装|流控PFC

    目录 关键步骤概览 查已经安装的版本 详细步骤和说明 编译和安装(Building and Installation ) 确认RDMA功能(Confirm RDMA Functionality) iW ...

  8. 《FreeFlow: Software-based Virtual RDMA Networking for Containerized Clouds》

    FreeFlow: Software-based Virtual RDMA Networking for Containerized Clouds Abstract 1 Introduction 背景 ...

  9. 深入浅出全面解析RDMA

    RDMA(RemoteDirect Memory Access)技术全称远程直接内存访问,就是为了解决网络传输中客户端与服务器端数据处理的延迟而产生的.它将数据直接从一台计算机的内存传输到另一台计算机 ...

最新文章

  1. hdu 1598 find the most comfortable road
  2. 计算机二级在学校报还是外面报好,谁知道考计算机二级在哪个学校比较好啊?...
  3. JZOJ 3819. 【NOI2015模拟9.9】取石子
  4. The driver has not received any packets from the server
  5. 赵泽良:规范引导数字平台健康发展是时代面临的新课题
  6. 插画与UI组合素材APP模板|一切简单而美好
  7. php导出csv插件,PHP导出CSV,EXCEL
  8. python rtftotxt_利用python将docx文件转为txt
  9. linux 移动硬盘 优化,不花一分钱,给移动硬盘加速
  10. PHP无限极分类巧用引用生成树
  11. 有限状态机 Finite State Machine(FSM)
  12. 基础:用android开发的ASCII码转换器
  13. BCM94360CD+linux+驱动,BCM94360CD WINDOWS驱动(32+X64位)
  14. (STM32CubeMX)超声波模块测距传感器学习笔记
  15. 计算机课堂小游戏活跃气氛,活跃气氛课堂互动小游戏大全
  16. Ubuntu18.04 安装360 WIFI驱动
  17. Python:实现fuzzy operations模糊运算算法(附完整源码)
  18. Android 常用API自查表(二)
  19. android中进程间通信的几种方式
  20. 金山毒霸6 、金山网镖6 增强版 发布在即!!!

热门文章

  1. kaldi windows安装_kaldi 在 Windows 下的使用
  2. vue render 渲染函数 属性写法
  3. 【Google地球环游世界】Google Earth Pro for Mac 7.3.2
  4. Glide加载大图长图
  5. IDEA setting设置
  6. 电子产品中EMC隔离设计的方法
  7. SpringBoot整合MP(MybatisPlus)分页插件pagehelper和pagination区别
  8. 计算机软件合同审查要点有,关于技术合同的审核要点清单
  9. Python的10种谋生方法,你们都知道了吗?
  10. [USACO06FEB]数字三角形Backward Digit Su…