業務目標
明確要解決的性能、擴容、穩定性、覆蓋、互連或運維問題,並確認上線優先級。
身為 Mellanox 英偉達網路精英級合作夥伴,Extreme 金牌合作夥伴 ,Ruckus Elite partner (SSP) 認證代理商,Aruba 認證代理商雙強夥伴,精推 AI 算力、智能網路、光聯產品及方案,深耕全棧 AI 技術,深諳網路架構精髓,精准輸出高性能算力、超穩網路、極速光聯方案,深度打磨全棧技術,全力為互聯網世界 「架橋鋪路」,助力創新騰飛。
查看方案背景、關鍵能力與適配場景,幫助你更快判斷下一步應進入測試、諮詢還是部署階段。

NVIDIA DOCA GPUNetIO是 NVIDIA DOCA SDK 中的一個庫,專門為實時內聯 GPU 資料包處理而設計。它結合了GPUDirect RDMA和GPUDirect Async等技術,能夠創建以 GPU 為中心的應用程序,其中 CUDA 內核可以直接與網路接口卡(NIC)通信,用於發送和接收資料包,繞過 CPU 並將其排除在關鍵路徑之外。
DOCA GPUNetIO 的核心原理和用途已在前幾篇文章《Inline GPU Packet Processing with NVIDIA DOCA GPUNetIO》和《Realizing the Power of Real-Time Network Processing with NVIDIA DOCA GPUNetIO》以及DOCA GPUNetIO 編程指南中進行了討論。
此前,DOCA GPUNetIO與DOCA Ethernet和DOCA Flow一起,僅限於處理乙太網路傳輸層上的資料包傳輸。隨著 DOCA 2.7 的推出,現在有一組擴展的 API使 DOCA GPUNetIO 能夠直接從 GPU CUDA 內核使用 RoCE 或 InfiniBand 傳輸層支援 RDMA 通信。
RDMA 首字母縮寫描述了一種協議,該協議允許從一台計算機的儲存器到另一台計算機儲存器的遠程直接儲存器訪問,而不涉及任何一台計算機中的操作系統。操作示例包括 RDMA 寫入和 RDMA 讀取。不能將其與GPUDirect RDMA混淆,後者與 RDMA 協議無關。GPUDirect RDMA 是 NVIDIA 在 GPUDirect 技術家族中啓用的技術之一,使網路介面卡能夠繞過 CPU 內存副本和操作系統例程,直接發送或接收訪問 GPU 內存的資料。GPUDirect RDMA 可以由任何使用乙太網路、InfiniBand 或 RoCE 的網路框架啓用。
RDMA 提供了在兩個主機的主內存之間的直接訪問,而不涉及操作系統、緩存或儲存。這使得資料傳輸具有高吞吐量、低延遲和低 CPU 利用率。這是通過註冊並共享本地內存區域,以便遠程主機知道如何訪問它。
兩個對等方需要通過 RDMA 交換資料的應用程序通常遵循三個基本步驟:
步驟 1–本地配置:每個對等端在本地創建 RDMA 隊列和內存緩衝區,以便與其他對等端共享這些資源。
步驟 2–交換資訊: 使用帶外(OOB)機制(例如,Linux 套接字),對等端交換有關 RDMA 隊列和要遠程訪問的內存緩衝區的資訊。
步驟 3–資料路徑:兩個對等方使用遠程內存地址執行 RDMA 讀、寫、發送和接收,以交換資料。
DOCA RDMA 庫按照上面列出的三個步驟通過 InfiniBand 或 RoCE 實現 RDMA 通信,所有這些步驟都是用 CPU 執行的。隨著新GPUNetIO RDMA功能的引入,應用程序可以在 GPU 上執行步驟 3,使用 CUDA 內核管理 RDMA 應用程序的資料路徑,而步驟 1 和 2 保持不變,因為它們與 GPU 資料路徑無關。
將 RDMA 資料路徑移動到 GPU 上的好處與乙太網路用例中的好處相同。在資料處理髮生在 GPU 上的網路應用程序中,將網路通信從 CPU 卸載到 GPU,使其能夠成為應用程序的主控制器,消除與 CPU 交互所需的額外延遲,知道資料何時準備就緒以及資料位於何處,這也釋放了 CPU 週期。此外,GPU 可以同時並行管理多個 RDMA 隊列,例如,每個 CUDA 塊可以在不同的 RDMA 隊列上發佈 RDMA 操作。
IB Verbs 和 DOCA GPUNetIO 性能測試
在 DOCA 2.7 中,引入了一個新的 DOCA GPUNetIO RDMA 客戶機-伺服器代碼示例,以顯示新 API 的使用情況並評估其正確性。這篇文章分析了 GPUNetIO RDMA 函數與 IB Verbs RDMA 函數之間的性能比較,重現了眾所周知的 perftest 套件中的一個微基準。
簡而言之,perftest 是一組微基準點,用於使用基本的 RDMA 操作測量 RDMA 頻寬(BW)和兩個對等點(伺服器和客戶端)之間的延遲儘管網路控制部分發生在 CPU 中,但可以通過啓用 GPUDirect RDMA 並指定--use_cuda標誌來指定資料是否駐留在 GPU 內存中。

一般來說,RDMA 寫單向 BW 基準測試(即 ib_write_bw)在每個 RDMA 隊列上發佈一個針對相同大小消息的寫請求列表,用於固定迭代次數,並命令 NIC 執行發佈的寫操作,這就是所謂的「按門鈴」程序。為了確保所有寫入都已發出,在進入下一次迭代之前,它輪詢完成隊列,等待每個寫入都已正確執行的確認。然後,對於每個消息大小,可以檢索發佈和輪詢所花費的總時間,並以 MB/s 為單位計算 BW。
Ib_write_bw性能測試主循環迭代中,CPU 發佈一個 RDMA 寫入請求列表,命令 NIC 執行這些請求,然後等待完成後移動到下一次迭代。啓用 CUDA 標誌後,要寫入的資料包將從 GPU 內存本地獲取,而不是從 CPU 內存。
實驗是用 DOCA 庫複製ib_write_bw微基準標記,使用 DOCA RDMA 作為 CPU 上的控制路徑以建立客戶端-伺服器連接,並使用 DOCA GPUNetIO RDMA 作為資料路徑,在 CUDA 內核內發佈寫入。這種比較並不完全一致,因為 perftest 使用 GPUDirect RDMA 來傳輸資料,但網路通信由 CPU 控制,而 DOCA GPUNetIO 同時使用 GPUDirect RDMA 和 GPUDirect Async 來控制網路通信和來自 GPU 的資料傳輸。目標是證明 DOCA GPUNetIO RDMA 性能與 IB Verbs 性能測試相當,後者被視為基線。
為了重現ib_write_bw資料路徑並測量針對每個消息大小發佈 RDMA 寫入操作所花費的時間,CPU 記錄一個 CUDA 事件,啓動rdma_write_bw CUDA 內核,然後記錄第二個 CUDA 事件。這應該可以很好地近似 CUDA 內核使用 DOCA GPUNetIO 函數發佈 RDMA 寫入所用的時間(以毫秒為單位)。在每次迭代時,GPU CUDA 內核並行發佈一個 RDMA 寫入請求列表,每個 CUDA 塊中的 CUDA 線程一個。在同步所有 CUDA 線程後,只有線程 0 命令 NIC 執行寫入並等待完成,然後刷新隊列,最後再進行下一次迭代。
在進入報價、測試或實施前,先把業務目標、現網條件和風險邊界整理清楚。
明確要解決的性能、擴容、穩定性、覆蓋、互連或運維問題,並確認上線優先級。
整理拓撲、服務器/交換機型號、接口速率、鏈路距離、供電散熱和現有管理平台。
確認是否需要 PoC、相容測試、吞吐測試、時延測試、無線覆蓋測試或故障切換測試。
確認交付窗口、責任分工、備件策略、培訓需求、驗收指標和後續擴容路徑。
先回答「適合誰、如何評估、下一步怎麼做」,再決定是否繼續進入測試與實施階段。
如果你已經明確業務規模、性能目標和實施時間,這類方案更容易直接轉化為可執行的落地路徑。
對相容性、吞吐、延遲和交付風險有要求的專案,更適合先通過 PoC 或測試申請把關鍵問題前置。
業務規模、接口需求、現網架構和時間節點越清楚,後續選型、測試和部署節奏越容易收斂。
適合已經明確業務目標,需要繼續判斷網絡架構、產品組合和實施路線的團隊,用於加快技術評估與落地決策。
建議準備業務規模、性能目標、現網架構、關鍵接口、時間節點,以及是否需要測試驗證等資訊。
可以。對於需要驗證相容性、性能或交付風險的專案,可先進入諮詢、測試申請和 PoC 節奏,再推進部署。
可在當前方案基礎上繼續溝通品牌方向、業務場景、計劃規模和時間要求,再細化產品組合、測試路徑和實施建議。
建議先看業務目標、現網瓶頸、性能指標、擴展規模、上線窗口和預算約束,再判斷方案架構與產品組合是否匹配。
需要前置確認相容性、鏈路帶寬、時延要求、設備供電與散熱、施工窗口、測試範圍和交付責任邊界。