哈哈哈,今天我們把下面這張圖理解了,我們的任務就完成了!
視頻教程在這:1.2 RDMA基本元素和組成 通信過程元素關系解析_嗶哩嗶哩_bilibili
一、WQ和WQE
工作隊列元素(work queue element,WQE):是軟件下發給硬件的任務:軟件希望硬件完成的任務,例如:遠程讀\寫,發送\接收等,以及有關該任務的詳細信息(數據所在地址、數據長度、秘鑰等)。
工作隊列(Work Queue, WQ):可容納多個工作隊列元素WQE,WQE是WQ中的一個元素。
二、QP和QPN
QP對(Queue Pair,QP):包含一個發送隊列SQ(send queue)和一個接收隊列RQ(reveive queue),其實就是兩個WQ。發送隊列發送請求RDMA操作的出站消息。接收隊列接收傳入消息或即時數據。
一次發送和接收過程中,發送端軟件需將一個發送任務WQE放到SQ中。接收端軟件需將一個接收任務WQE放到RQ中,這樣硬件才知道接收到的數據保存到內存中的哪個位置。
QP編號(Queue Pair number,QPN):RDMA節點上每個QP對都有一個唯一的編號QPN來標識它。
在RDMA技術中,通信的主體是QP,而不是節點(每個節點可以申請和使用多個QP),本地的一個QP可以連接到一個遠端的QP,如下圖所示。描述一次RDAM通信“節點A發送數據給節點B”,更精確的描述是“節點A的QP2發送數據給節點B的QP0”。
三、CQ和CQN
完成隊列元素(completion queue element,CQE): WQE是軟件下發給硬件的任務,CQE是硬件完成任務后返回給軟件的完成報告。
完成隊列(completion queue,CQ):類似WQ中含有多個WQE,CQ中含有多個CQE(completion queue element,完成隊列要素)。
完成隊列編號(completion queue number, CQN):DMA節點上每個CQ對都有一個唯一的編號CQN來標識它。
四、WR和WC
工作請求(work request, WR):由用戶發布到工作隊列的請求。
工作完成(work completion, WC):提示用戶工作完成。
工作隊列元素WQE和完成隊列元素CQE在驅動層,本身對用戶并不可見。WR和WC分別是WQE和CQE在用戶層的映射。WR/WC和WQE/CQE是相同概念在不同層次的體現,用戶直接通過API下發的是WR和WC。
哈哈哈,最后再看這張圖!