第一步
第二步
去喝杯咖啡…
第三步
您在說(shuō)明書(shū)中常常看到“去喝杯咖啡”嗎?作為一名開(kāi)發(fā)人員,我很早就發(fā)現(xiàn)這種令人生厭的俏皮話是我生活中的禍根。無(wú)論持續(xù)時(shí)間長(zhǎng)短,進(jìn)程切換(Context Switches)在應(yīng)用程序開(kāi)發(fā)周期中都是一項(xiàng)高昂的成本。在所有需要您離開(kāi)的步驟中,等待應(yīng)用程序編譯是最難擺脫的。
當(dāng)我們進(jìn)入 NVIDIA BlueField DPU 應(yīng)用程序開(kāi)發(fā)的新世界,有效地設(shè)置構(gòu)建步驟非常重要,以便您能夠無(wú)縫地編碼→編譯→單元測(cè)試。在本文中,我介紹了 DPU 編譯應(yīng)用程序的不同方法。
DOCA 數(shù)據(jù)平面插件的 FRR
(Free Range Routing)
在 DPU 應(yīng)用程序開(kāi)發(fā)系列文章中,我談到了在 FRR 中創(chuàng)建 DOCA 數(shù)據(jù)平面插件以用于卸載策略。FRR 的代碼行數(shù)接近 100 萬(wàn)行( 789678 SLOC ),這使得它成為衡量構(gòu)建時(shí)間的絕佳候選。
直接在 BlueField DPU 上開(kāi)發(fā)
DPU 具有 Arm64 架構(gòu),一種快速啟動(dòng) DPU 應(yīng)用程序的方法就是直接在 DPU 上開(kāi)發(fā)。本測(cè)試使用具有 8G RAM 和 8 個(gè) A72 CPU 內(nèi)核的 NVIDIA BlueField2 DPU 。
我安裝了 BlueField 引導(dǎo)文件( BFB ),它為 DPU 提供 Ubuntu 20.04.3 操作系統(tǒng)映像。它還包括 DOCA 1.2 和 DPDK 20.11.3 庫(kù)。為了使用 DOCA 庫(kù)構(gòu)建應(yīng)用程序,我將 DPDK pkgconfig 位置添加到 PKG_CONFIG 路徑。
接下來(lái),我通過(guò)克隆 FRR 在 DPU 上設(shè)置了我的代碼工作區(qū),并切換到 DOCA 數(shù)據(jù)平面插件。
FRR 需要一個(gè)不斷發(fā)展的先決條件列表,這些先決條件列舉在FRR 社區(qū)文檔中。安裝了這些依賴項(xiàng)后,我將 FRR 配置為包括 DPDK 和 DOCA 數(shù)據(jù)平面插件。
當(dāng)我使用 DPU 作為我的開(kāi)發(fā)環(huán)境時(shí),我構(gòu)建并安裝了 FRR 二進(jìn)制文件:
以下是構(gòu)建時(shí)間的表現(xiàn)。我用多種方法來(lái)衡量:
-
使用make -j12 all 和 make install構(gòu)建和安裝二進(jìn)制文件的時(shí)候
-
使用dpkg-buildpackage –j12 –uc –us將它們組裝成 Debian 軟件包來(lái)構(gòu)建相同二進(jìn)制文件的時(shí)候
第一種方法用于編碼和單元測(cè)試。第二種生成 deb 的方法需要與其他外部開(kāi)發(fā)環(huán)境上的構(gòu)建時(shí)間進(jìn)行比較。
表 1 . DPU Arm 構(gòu)建時(shí)間
時(shí)間上的差異是意料之中的。生成一個(gè)包需要幾個(gè)額外的步驟。
使用 DPU 作為開(kāi)發(fā)環(huán)境有一些明顯的優(yōu)勢(shì):
-
您可以在不離開(kāi)工作區(qū)的情況下進(jìn)行編碼、構(gòu)建和安裝,然后進(jìn)行單元測(cè)試。
-
您可以針對(duì)增量代碼更改來(lái)優(yōu)化構(gòu)建。
與完整構(gòu)建(Complete make)相比,最后一個(gè)選擇通常可以大幅縮短構(gòu)建時(shí)間。例如,我在 FRR 中修改了 DOCA 數(shù)據(jù)平面代碼,并重建的結(jié)果如下:
雖然這可能會(huì)讓事情變得更簡(jiǎn)單,但它需要為每個(gè)開(kāi)發(fā)人員無(wú)限期的保留 DPU ,僅用于應(yīng)用程序開(kāi)發(fā)或維護(hù)。您的開(kāi)發(fā)環(huán)境可能還需要更多的內(nèi)存和性能,因此長(zhǎng)期來(lái)看,這是一個(gè)不太可行的選擇。
在 x86 服務(wù)器上開(kāi)發(fā)
我的 BlueField-2 DPU 由一臺(tái) x86-64 Ubuntu 20.04 服務(wù)器托管,我將這臺(tái)服務(wù)器用于我的開(kāi)發(fā)環(huán)境。
在本例中,構(gòu)建機(jī)器是 x86 ,應(yīng)用程序?qū)⑦\(yùn)行的主機(jī)是 DPU-Arm64 。有幾種方法可以做到這一點(diǎn):
-
在 x86 構(gòu)建機(jī)器上使用 Arm 仿真。提供的 DOCA 開(kāi)發(fā)容器作為 DOCA 軟件包的一部分。
-
使用交叉編譯工具鏈。
在這個(gè)測(cè)試中,我使用了第一個(gè)選項(xiàng),因?yàn)樗亲詈?jiǎn)單的。第二個(gè)選項(xiàng)可以提供不同的性能,但創(chuàng)建該工具鏈有其挑戰(zhàn)。
我在x86 服務(wù)器上下載并加載了bfb_builder_doca_ubuntu_20.04容器,并啟動(dòng)了它。
DOCA 和 DPDK 庫(kù)預(yù)先安裝在這個(gè)容器中,我只需要將它們添加到PKG_CONFIG路徑。
我在容器中設(shè)置了工作區(qū)和 FRR 先決條件,與前面的選項(xiàng)相同。
我可以在這個(gè) DOCA 容器中構(gòu)建我的應(yīng)用程序,但我無(wú)法對(duì)其進(jìn)行測(cè)試。因此,必須將 FRR 二進(jìn)制文件構(gòu)建并打包到 deb 中,然后將其復(fù)制到 BlueField DPU 進(jìn)行測(cè)試。我設(shè)置了 FRR Debian 規(guī)則,以匹配前面選項(xiàng)中使用的 FRR 構(gòu)建配置,并生成了軟件包:
表 2 顯示了構(gòu)建時(shí)間與以前方法的比較:
表 2 . DPU Arm 和 X86 構(gòu)建時(shí)間
構(gòu)建時(shí)間的大幅增加讓我感到驚訝,因?yàn)槲矣幸慌_(tái)充足 x86 資源的服務(wù)器,而且沒(méi)有 Docker 限制。因此,將 CPU 和 RAM 用于解決問(wèn)題似乎并不總是有幫助的!這種性能下降是因?yàn)榭珞w系結(jié)構(gòu)造成的,正如您在下一個(gè)選項(xiàng)中看到的那樣。
在 AWS Graviton 實(shí)例中開(kāi)發(fā)
接下來(lái),我嘗試在 Arm 上構(gòu)建我的應(yīng)用程序,但這次是在性能更大的外部服務(wù)器上。為此,我使用了 Amazon EC2 Graviton 實(shí)例,其規(guī)格與我的 x86 服務(wù)器相當(dāng)。
-
Arm 64 arch , Ubuntu 20.04 操作系統(tǒng)
-
128G 內(nèi)存
-
32 vCPU
為了在這個(gè)實(shí)例中設(shè)置 DOCA 和 DPDK 庫(kù),我安裝了 DOCA SDK repo meta 包。
克隆和構(gòu)建 FRR Debian 軟件包的其余步驟與前面的選項(xiàng)相同。
表 3 顯示了構(gòu)建在 AWS Arm 實(shí)例上的運(yùn)行情況:
表 3 . DPU Arm 、X86 和 AWS Arm 的構(gòu)建時(shí)間
這是一個(gè)明顯的贏家,不需要咖啡。
圖 1 顯示了這些環(huán)境中的編譯時(shí)間。
圖 1 . 具有不同選項(xiàng)的 FRR 構(gòu)建時(shí)間
總結(jié)
在本文中,我討論了 DPU 應(yīng)用程序的幾個(gè)開(kāi)發(fā)環(huán)境:
-
BlueField DPU
-
x86 服務(wù)器上的 DOCA 開(kāi)發(fā)容器
-
AWS Graviton 計(jì)算實(shí)例
你可以直接在 DPU 上對(duì)您的應(yīng)用程序進(jìn)行原型設(shè)計(jì),在 x86 DOCA 開(kāi)發(fā)容器中進(jìn)行開(kāi)發(fā)實(shí)踐,然后用 DOCA 獲取一個(gè) AWS Graviton 實(shí)例,使其高速運(yùn)行!
原文標(biāo)題:為 NVIDIA BlueField DPU 應(yīng)用程序選擇開(kāi)發(fā)環(huán)境
文章出處:【微信公眾號(hào):NVIDIA英偉達(dá)企業(yè)解決方案】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
審核編輯:湯梓紅
-
NVIDIA
+關(guān)注
關(guān)注
14文章
4994瀏覽量
103143 -
DPU
+關(guān)注
關(guān)注
0文章
364瀏覽量
24201 -
應(yīng)用程序
+關(guān)注
關(guān)注
37文章
3276瀏覽量
57732
原文標(biāo)題:為 NVIDIA BlueField DPU 應(yīng)用程序選擇開(kāi)發(fā)環(huán)境
文章出處:【微信號(hào):NVIDIA-Enterprise,微信公眾號(hào):NVIDIA英偉達(dá)企業(yè)解決方案】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論