当前位置: 首页 > java >正文

RDMA核心组件 的总结表格

以下是关于 RDMA核心组件 的总结表格,涵盖 WQE、WQ、QP、CQ 等核心概念:


概念组成与作用关键操作关联组件关键特性
WQE工作队列元素,包含:
- 任务类型(SEND/WRITE/READ等)
- 数据地址、长度、访问密钥
软件生成,硬件执行WQ(工作队列)类似以太网描述符(Desc),是硬件执行任务的最小单位
WQ工作队列,包含多个WQE,以FIFO队列形式存在:
- SQ(发送队列)
- RQ(接收队列)
Post Send(下发发送任务)
Post Receive(下发接收任务)
QP(队列对)SQ和RQ独立运行,发送端仅操作SQ,接收端仅操作RQ
QP队列对(Queue Pair),由以下组成:
- SQ(发送队列)
- RQ(接收队列)
通过ibv_create_qp创建CQ(完成队列)- 通信基本单位(非节点)
- 每个QP有唯一QPN(QP编号)
- 需与远端QP建立连接(RC/UC类型)
CQ完成队列,包含多个CQE(完成队列元素):
- 任务状态(成功/失败)
- 关联的WQE信息
ibv_poll_cq(轮询完成事件)WQ(通过CQE关联WQE)- 异步通知机制
- 一个CQ可绑定多个QP
- CQE与WQE一一对应(任务完成后生成)
QPNQP的唯一标识符(32位整数)通过QP属性(qp_attr)获取QP(本地与远端)用于标识通信双方QP(如SEND操作需指定目标QPN)
SQ/RQ- SQ:存放发送任务的WQE
- RQ:存放接收任务的WQE
SQ:Post Send
RQ:Post Receive
QP(作为其组成部分)- 发送端无需等待接收端Post Receive(但RECV操作需要)
- RQ的WQE需预先分配(否则数据到达后无法处理)
CQE完成队列元素,包含:
- 操作结果(成功/错误码)
- 关联的WQE指针
硬件生成,软件轮询处理CQ(完成队列)- CQE可能乱序到达(需业务层处理)
- 需主动轮询或通过事件通道(Event Channel)异步通知

补充说明

  1. QP类型与通信模式

    • RC(可靠连接):确保数据按序到达,需显式建立连接(通过QPN)。
    • UC(不可靠连接):数据可能丢失,但保留包顺序。
    • UD(不可靠无连接):支持组播,无连接状态。
  2. 内存与安全

    • WQE中的内存地址需通过ibv_reg_mr注册(确保物理连续或IOMMU映射)。
    • 访问密钥(Access Key)用于权限验证(防止越界访问)。
  3. 性能优化

    • 批量Post WQE(减少用户态-内核态切换)。
    • 使用CQ事件合并(通过ibv_req_notify_cq)。

流程图示意

软件流程:  
1. 注册内存(MR) → 2. 创建QP/CQ → 3. Post Receive(RQ) → 4. Post Send(SQ) → 5. 轮询CQE  
硬件流程:  
1. 从SQ读取WQE → 2. 执行RDMA操作 → 3. 生成CQE → 4. 将CQE写入CQ  

此表格可用于PPT中对比核心组件关系,建议配合分层架构图(展示QP/CQ/WQ的层级)和数据流图(WQE下发→硬件执行→CQE返回)增强可视化效果。

http://www.xdnf.cn/news/5653.html

相关文章:

  • RSA算法详解一:初识RSA
  • Python爬虫如何获取JavaScript动态渲染后的网页内容?
  • VUE3基础样式调整学习经验
  • yarn workspace使用指南
  • 配置集群(yarn)
  • 消息队列如何保证消息可靠性(kafka以及RabbitMQ)
  • MySQL全量、增量备份与恢复
  • Qt创建项目
  • 基于千眼狼高速摄像机与三色掩模的体三维粒子图像测速PIV技术
  • 前苹果首席设计官回顾了其在苹果的设计生涯、公司文化、标志性产品的背后故事
  • CentOS下安装MySQL数据库
  • node .js 启动基于express框架的后端服务报错解决
  • WEB安全--RCE--webshell bypass2
  • NestJS 知识框架
  • 区块链大纲笔记
  • 人脸识别deepface相关笔记
  • 物联网无线传感方向专业词汇解释
  • git|gitee仓库同步到github
  • JDK动态代理和CGLIB动态代理的区别?
  • 《Head First 设计模式》第一章 - 笔记
  • 关于nextjs中next-sitemap插件生成文件样式丢失问题及自定义样式处理
  • 开启WSL的镜像网络模式
  • git和gdb
  • 《Flutter社交应用暗黑奥秘:模式适配与色彩的艺术》
  • hashCode()和equals(),为什么使用Map要重写这两个,为什么重写了hashCode,equals也需要重写
  • Decimal.js 的常用方法
  • HNUST软件测试B考前最终复习
  • 密码学--仿射密码
  • 配置文件介绍xml、json
  • (自用)Java学习-5.12(Redis,B2C电商)