揭開 NVIDIA DOCA 的神祕面紗

作者 NVIDIA

今年年初已在 GTC 上發布 NVIDIA DOCA SDK 搶先體驗版本。DOCA 成為我們尋找加速運算的重點新方法。隨著 SmartNICs 的演進,最終出現了 DPU 範例。我們透過加速、卸載與隔離資料中心基礎架構和 DPU,讓開發人員及應用程式架構師從一般 CPU 中榨取更多價值。

其中一項最重要的方法是將 DOCA 視為 DPU 啟用平台。DOCA 能將快速消耗的 DPU 功能化為全新與現有的資料中心軟體堆疊。

現代資料中心不僅僅是由簡單的網路基礎設施組成。資料中心高效營運及可擴充的關鍵在於軟體。協調流程、佈建、監控和遙測皆屬於所有軟體元件。即使是網路基礎設施本身也絕大多數屬於軟體功能。在網路節點上使用的網路作業系統可決定功能集合,且推動操作工具和監控的多數下游決策。

我們將 DOCA 稱之為含 SDK 的軟體架構,但遠不只如此。在思考何謂 DOCA 及如何使用方式時,SDK 是一個很好的切入點。元件運行的位置是一種常見的混淆來源。主機上需要哪些 DOCA 元件,DPU 上又需要哪些?相較於執行階段環境,在哪些情況下您會需要 SDK?DOCA 函式庫到底是什麼?

概述

對於剛接觸 DOCA 的人,本文章揭露了 DOCA 堆疊及封裝的一些複雜性。首先,我想重新瀏覽一些術語並推敲在 DOCA 內文中的含義。

SDK

此為軟體開發套件。在內文中,此為應用程式開發人員使用 DOCA 寫入與編譯軟體所需的工具。其中包含了執行階段、函式庫與驅動程式。並非所有人都需要 SDK 附加或通常包含在 SDK 中的所有內容。

就嚴格意義上來說,SDK 不僅僅是軟體元件的封裝,同時也最簡單 (雖然用字不完全精準) 描述了業界應如何思考何謂 DOCA,以及消耗的方式。DOCA 主要提供應用程式開發人員使用。

執行階段

這是運行或執行 DOCA 應用程式所需的一套元件。其中包含了 DOCA 應用程式必須執行的連結函式庫與驅動程式。在封裝方面,不需要包含標題檔案與來源就能寫入及組建 (編譯) 應用程式。DOCA 應用程式可用於 x86 或 Arm 寫入及組建,因此每種架構都有不同的執行階段配套方案。

函式庫

此處有兩種不同的內文。在更廣泛與更一般性的內文中,函式庫是應用程式使用的資源集合。函式庫資源可能包括各類資料,如配置、文件或說明資料;訊息範本;預先寫入代碼;以及副程式、分類、數值或型別規格。

在 DOCA 內文中,函式庫也提供了更多函數與實用行為實作的集合。這些集合提供完善定義的介面,並透過該介面叫用該行為。

例如,DOCA DPI 函式庫提供一種在網路封包內容上檢查與動作的架構。

從頭開始使用 DPU RegEx 加速器寫入 DPI 應用程式將是一項巨大的工作。您必須寫入所有預先處理和後續處理的常式來剖析資料封包標頭及有效裝載,然後寫入一個處理程序來編譯 RegEx 規則,藉以在加速器上進行高速查閱。

Packets passing through the DPI engine go through the connection tracking module where an accelerated regex match occurs from a set of precompiled signatures. Post processing routines occur after the regex result is returned.
圖 1. DOCA DPI 函式庫區塊。

驅動程式

裝置驅動程式提供硬體裝置的介面。此部分的軟體屬於抽象層的最低層級。DOCA 為 DPU 的指定硬體功能提供了一個額外的抽象層。這樣一來,隨著 DPU 硬體的演變,最終將變為底層的硬體不需要 DOCA 應用程式就能更新,並遵循全新或不同的驅動程式介面。

DOCA 與 CUDA 的相似之處

另一種考量 DOCA 封裝的實用方式則是透過 DOCA 與 CUDA 的相似性。DOCA 執行階段旨在納入所有驅動程式與函式庫,並採用和 NVIDIA 顯示驅動程式封裝相似的特色為 CUDA 提供。

必須叫用 CUDA 函式庫進行 GPU 處理的應用程式只需安裝 NVIDIA 顯示驅動程式封裝即可。同樣的,DOCA 應用程式只需要適用指定架構的執行階段封裝。在兩種情況下,您都有額外的封裝及工具能用於整合 GPU 或 DPU 功能和加速至應用程式。

The NVIDIA DOCA runtime contains NVIDIA DOCA drivers and binaries like how CUDA driver and binary components are packaged with the NVIDIA display driver package.
圖 2. DOCA 對比 CUDA 執行階段和開發人員套件堆疊。

DOCA 平台需求

另一項複雜的因素可能是找出在何種平台上需要哪些 DOCA 元件。畢竟,DPU 不僅要執行本身的作業系統,也會將自己顯示為主機作業系統的周邊裝置。

DOCA 應用程式會在 x86 主機或 DPU Arm 核心上執行。在 x86 主機上執行的 DOCA 應用程式適合透過 DOCA 函式庫呼叫使用 DPU 加速功能。在封裝方面,不同的作業系統可代表所有這些元件不同的安裝程序;但幸好對管理員而言看上去並不會讓人困惑。

對 NVIDIA BlueField DPU 而言,所有執行階段及 SDK 元件皆與作業系統映像搭配。可在 DPU 上寫入、建立與編譯 DOCA 應用程式進行快速測試。所有 DOCA 元件一應俱全,但這並非理想的開發環境。將 SDK 元件內建並納入 DPU 作業系統映像中可讓每個人都更輕鬆,因為這是包含執行階段元件的超集合。

在 x86 主機方面,還有更多獨立的元件需要考慮。再者,管理員在主機上需仰賴的封包主要取決於此主機是否為開發環境或組建伺服器,以及架構為何。或者,主機運作與執行叫用 DOCA 函式庫的應用程式?

如 x86 主機目的旨在做為開發環境使用,則有另外一項考量。對在 x86 CPU 上執行的 DOCA 應用程式開發而言,管理員需要原生 x86 DOCA SDK 來處理主機封包。如為來自 x86 主機的開發中 Arm 應用程式,NVIDIA 則提供預先建立、管理所有跨平台複雜性的 DOCA 開發容器。

在最淺顯易懂的案例中,如為僅使用 DOCA 運作或執行應用程式的 x86 主機, 這即是 DOCA Runtime for Host 封包將滿足的目標。其中包含了透過最少元件集合讓應用程式使用 DOCA 函式庫寫入,以在目標機器上正確執行。圖 3 顯示兩個不同作業系統網域中的不同元件。

NVIDIA DOCA components exist in both places: The OS running on x86 host and on the BlueField DPU. An NVIDIA DOCA development container is available for x86 hosts to provide an Arm QEMU-emulated build environment to be able to build and compile applications to run natively on the DPU.
圖3. 主機與 BlueField DPU 之間的 DOCA 封裝。

精簡安裝

既然我已解釋所有這些封裝在 x86 主機上運作的方式,我應該提一下,好讓您可以輕易的將正確的元件安裝在正確的位置。NVIDIA SDK Manager 縮減了管理此封裝複雜性所需的時間與精力。SDK Manager 不僅無法完全透過圖形介面在主機上安裝或維修 SDK 元件,也無法偵測和安裝作業系統至 BlueField DPU 上。小事一樁!

SDK Manager provides a graphical wizard interface to ease installation of NVIDIA DOCA and the OS image on the DPU.
圖 4. 用於設定 DPU 及安裝 DOCA 元件的 SDK Manager 圖形介面。

總結

希望本文能幫助您理解和揭開 DOCA 及其封裝的神祕面紗。若要下載 DOCA 軟體並開始使用,請參見 NVIDIA DOCA 開發人員頁面。