RDMA-QP状态转换
QP状态转换
代码位置:ib_verbs.h
enum ib_qp_state {IB_QPS_RESET,IB_QPS_INIT,IB_QPS_RTR,IB_QPS_RTS,IB_QPS_SQD,IB_QPS_SQE,IB_QPS_ERR
};
在QP的生命周期当中,可能的状态可以是
1:Reset
2:Initialize(Init)
3:Ready To Receive(RTR)
4:Ready To Send(RTS)
5:Send Queue Drained (SQD)
6:Send Queue Error (SQE)
7:Error
QP可以通过两种可能的方式从一种状态转换到另一种状态:
(1)显式调用ibv_modify_qp()
(2)在处理错误的情况下,由设备自动转换
处于Reset状态的QP正在创建。
通过从任何状态调用ibv_modify_qp(),可以将任何QP转换到Reset或Error状态。
Reset state
Description
处于Reset状态的QP正在创建。在这种状态下,已经分配了QP的所有所需资源。
为了重用QP,可以通过调用ibv_modify_qp()将其从任何状态转换为Reset状态。如果在此状态转换之前,该QP的发送或接收队列中存在任何工作请求或完成,则它们将从队列中清除。
Work Requests
工作请求不应该被发布到发送或接收队列。尝试这样做将导致立即错误。发送和接收队列中的工作请求都不会被处理。
Packets
以该QP为目标的入站数据包将被静默丢弃。此QP将不发送任何数据包。
Init state
Description
为了移动到这个状态,必须从Reset状态调用ibv_modify_qp()。
Work Requests
工作请求只能被发送到接收队列。试图将工作请求发布到发送队列将导致立即错误。
发送和接收队列中的工作请求都不会被处理。
Packets
以该QP为目标传入的数据包将被静默丢弃。
此QP将不发送任何数据包。
RTR state
Description
为了移动到这个状态,必须从Init状态调用ibv_modify_qp()。
在RTR状态下,QP只能作为响应器使用。
Work Requests
工作请求只能发送到接收队列。试图将工作请求发布到发送队列将导致立即错误。
只有接收队列中的工作请求才会被处理。
Packets
到达此QP的数据包将被送达。QP将从这个QP发送数据包作为响应器(即:数据、ack和nacks)。
RTS state
Description
为了移动到这种状态,必须从RTR或SQD状态调用ibv_modify_qp()。
在RTS状态下,QP可以用作请求者,也可以用作响应者。
Work Requests
可以将工作请求发送到发送队列和接收队列。
将处理发送和接收队列中的工作请求。
Packets
到达此QP的数据包将被送达。QP将从这个QP发送数据包作为响应器(即:数据、ack和nacks)。
QP可以作为请求者发起数据包。
SQD state
Description
为了转移到这种状态,必须从RTS状态调用ibv_modify_qp()。
此状态只影响发送队列:
已经开始处理的工作请求将被处理,直到完全完成。但是,新的工作请求将不会被处理。
这个状态被分离为两个内部状态:
耗尽——发送队列中仍有工作请求正在被处理
已耗尽——发送队列中没有任何正在处理的工作请求
只有当QP的内部状态为drain时,才能将该QP的状态转换为RTS或SQD。
Work Requests
可以将工作请求发送到发送队列和接收队列。
接收队列中的工作请求将被处理。
已开始处理的发送队列中的工作请求将被完成,新的工作请求将不会被处理。
Packets
到达此QP的数据包将被送达。QP将从这个QP发送数据包作为响应器(即:数据、ack和nacks)。
QP可以作为请求者发起数据包。
SQE state
Description
对于所有QP类型,设备将自动转换到此状态,但处于RTS状态并在发送队列中处理以完成错误结束的工作请求的RC QP除外。这个工作请求的状态是未定义的(工作请求是部分处理还是完全处理是未知的),本地或远程缓冲区的内容(取决于使用的操作码)是未定义的。
发送队列中的所有后续工作请求将被错误刷新。
可以调用ibv_modify_qp()将其移回RTS状态以恢复发送队列。
Work Requests
可以将工作请求发送到发送队列和接收队列。
只有接收队列中的工作请求才会被处理。
发送队列的工作请求将被错误刷新。
Packets
到达此QP的数据包将被送达。
QP将从这个QP发送数据包作为响应器(即:数据、ack和nacks)。
ERROR state
Description
这是QP的状态机中的最后一个状态。
如果对于RC QP,发送队列中的工作请求完成后出现错误,或者对于任何QP类型,接收队列中的工作请求完成后出现错误,或者通过从任何状态显式调用ibv_modify_qp(), QP可以被设备自动转换到这种状态。如果QP状态是自动转换的,这个工作请求的状态是未定义的(工作请求是部分处理还是完全处理是未知的),本地或远程缓冲区的内容(取决于使用的操作码)是未定义的。
Work Requests
工作请求可以在发送队列和接收队列中发布。
Packets
在这篇文章中,我们讨论了QP的各种状态和该QP的行为。
下表总结了QP的行为取决于它的状态:
Summary
翻译:https://www.rdmamojo.com/2012/05/05/qp-state-machine/
RDMA-QP状态转换相关推荐
- vue中显示和隐藏如何做动画_vue-State Transitions(状态转换)
Vue的过渡系统提供了许多简单的方法来动画进入,离开和列表,但动画数据本身又如何呢?例如: 数字和计算 显示颜色 SVG节点的位置 元素的大小和其他属性 所有这些都已经存储为原始数字或可以转换为数字. ...
- java 线程状态_JAVA线程漫谈:线程状态与状态转换解析
线程使用方式 JDK线程的顶层抽象是Runnable接口,本质上,线程相关的类都是基于Runnable和Thread实现类实现. JDK API级别有不同的创建线程的方式,但本质是还是基于Runnab ...
- JAVA线程间的状态转换
线程间的状态转换: 1. 新建(new):新创建了一个线程对象. 2. 可运行(runnable):线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法.该状态的线程位于可运 ...
- 【Android 逆向】ptrace 函数 ( ptrace 函数族 | 进程附着 | 进程脱离 | 进程数据读写权限 | 进程对应的主线程寄存器读写 | 单步调试 |ptrace 函数族状态转换 )
文章目录 一.ptrace 函数族 1.进程附着 2.进程脱离 3.进程数据读写权限 4.进程对应的主线程寄存器读写 5.单步调试 6.继续向后执行 二.ptrace 函数族状态转换 一.ptrace ...
- Leetcode224 基本加减计算器-双栈和状态转换
题目 实现一个基本的计算器来计算一个简单的字符串表达式的值. 字符串表达式可以包含左括号 ( ,右括号 ),加号 + ,减号 -,非负整数和空格 . 示例 1: 输入: "1 + 1&quo ...
- java线程主要状态及转换_Java线程状态转换及控制
线程的状态(系统层面) 一个线程被创建后就进入了线程的生命周期.在线程的生命周期中,共包括新建(New).就绪(Runnable).运行(Running).阻塞(Blocked)和死亡(Dead)这五 ...
- java线程切换 notify_浅谈 Java线程状态转换及控制
作者:城北有个混子 出自:博客园 1.线程的状态(系统层面) 一个线程被创建后就进入了线程的生命周期.在线程的生命周期中,共包括新建(New).就绪(Runnable).运行(Running).阻塞( ...
- 线程的状态转换、sleep()、wait()、yeild()、终止线程的方法、线程之间的协作(join()、wait() notify() notifyAll()、await() signal() )
1.线程的状态转换 1.1 新建(New) 创建后尚未启动 1.2 可运行(Runnable) 可能正在运行,也可能正在等待 CPU 时间片. 包含了操作系统线程状态中的 Running 和 Read ...
- boost::statechart模块实现状态转换测试
boost::statechart模块实现状态转换测试 实现功能 C++实现代码 实现功能 boost::statechart模块实现状态转换测试 C++实现代码 #include <boost ...
最新文章
- Linux命令 swap:内存交换空间
- eBay的Turmeric和VJet的源程序移到了GitHub上
- java如何保存初始化数据_java – 如何在JUnit测试中初始化数据
- Java实现复数Complex的加减乘除运算、取模、求幅角角度
- matlab制作以太网数据接收上位机_3D激光扫描仪设计及数据处理
- VS在win32平台与mysql链接_visual C++如何与MySQL在windows下建立连接
- 2字节取值范围_Java注解-元数据、注解分类、内置注解和自定义注解|乐字节
- 使用jxls技术导入Excel模版数据(转自其他博客)
- 如何使用dosbox运行程序——步骤详解
- 如何备考PMP考试?
- 北京林业大学计算机复试难度,2015年北京林业大学考研复试经验
- 计算机网络ip地址计算广播地址,ip地址计算与子网划分的方法讲解
- 湖南大学ACM程序设计新生杯大赛(同步赛)L - Liao Han
- 关闭Windows系统的应用程序或窗口的快捷键有哪些?
- 运营_APP的常见盈利模式
- docx行间距怎么设置_Word行间距怎么调?Word调行间距的方法
- 登录页-登录成功后的路由守卫
- 联芯 1860平台 icn6211 mipi to RGB 转换芯片 调试 和 st7789 LCD调试spi 9bit 模式
- PC时代IE浏览器获胜,Web时代呢?
- 链式前向星——最完美图解