4
第四章:消息传输核心机制
队列对与操作
消息传输核心机制
队列对 · 传输操作 · 服务类型 · Verbs API
队列对 (Queue Pair, QP)
QP 是 InfiniBand 的消息传输引擎,软件通过调用"动词 (Verbs)" API 将工作请求提交到 QP,实现高效的内核旁路操作。
发送队列 (SQ)
Send Queue
发送工作请求
发送工作请求
接收队列 (RQ)
Receive Queue
接收工作请求
接收工作请求
门铃机制
Doorbell
通知硬件处理
通知硬件处理
发送 (Send)
Basic Data Transfer
基本的数据传输操作。发送方将数据推送到接收方的接收缓冲区中。需要接收方预先发布接收请求(WQE)。
RDMA 写入
RDMA Write
将本地数据直接写入远程指定内存地址。无需接收方参与,实现真正的单边操作。
RDMA 读取
RDMA Read
从远程指定内存地址读取数据到本地。同样是单边操作,远程节点无需感知此操作。
原子操作
Atomic Operations
在远程内存上执行"读-修改-写"操作。保证操作的原子性,支持比较交换、加法等操作。
传输服务类型 (Service Types)
| 服务类型 | 连接性 | 可靠性 | 支持操作 | 关键用途 |
|---|---|---|---|---|
| 可靠连接 (RC) | 需要建立连接,点对点 | 可靠 (Ack/Nak 确认) | Send, RDMA Read/Write, Atomic | 主要的数据传输、MPI 通信 |
| 不可靠数据报 (UD) | 无连接 | 不可靠 (无确认) | 仅 Send (单包消息) | 管理消息 (SMP/GMP)、多播 |
| (UC 和 RD 为 RC 和 UD 的变种,较少使用) |