0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

NVIDIA BlueField DPU應(yīng)用程序的不同編譯方法

星星科技指導(dǎo)員 ? 來源:NVIDIA ? 作者:Anuradha Karuppiah ? 2022-04-20 14:12 ? 次閱讀

隨著我們進入 NVIDIA BlueField DPU 應(yīng)用程序開發(fā)的新世界,高效地設(shè)置構(gòu)建步驟非常重要,以便您能夠無縫地{code =》 compile =》 unit-test}。在本文中,我介紹了為 DPU 編譯應(yīng)用程序的不同方法。

DOCA 數(shù)據(jù)平面插件的自由范圍路由

在 DPU 應(yīng)用開發(fā) 在系列文章中,我談到了在中創(chuàng)建 DOCA 數(shù)據(jù)平面插件 FRR 用于卸載策略。 FRR 的代碼計數(shù)接近 100 萬行( 789678 SLOC ),這使得它成為測量構(gòu)建時間的最佳候選。

直接在 BlueField DPU 上開發(fā)

DPU 具有 Arm64 體系結(jié)構(gòu),一種快速啟動 DPU 應(yīng)用程序的方法是直接在 DPU 上開發(fā)。本測試使用的是 NVIDIA BlueField2 ,帶有 8G RAM 和 8xCortex-A72 CPU 。

我安裝了 BlueField 啟動文件( BFB ),它為 DPU 提供 Ubuntu 20.04.3 操作系統(tǒng)映像。它還包括 DOCA-1.2 和 DPDK-20.11.3 的庫。為了使用 DOCA 庫構(gòu)建應(yīng)用程序,我將 DPDK pkgconfig位置添加到PKG_CONFIG路徑。

root@dpu-arm:~# export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/opt/mellanox/dpdk/lib/aarch64-linux-gnu/pkgconfig 

接下來,通過克隆 FRR 并切換到 DOCA 數(shù)據(jù)平面插件分支,我在 DPU 上設(shè)置了我的代碼工作區(qū)。

root@dpu-arm:~/code# git clone  https://github.com/AnuradhaKaruppiah/frr.git  
root@dpu-arm:~/code# cd frr 
root@dpu-arm:~/code/frr# git checkout dp-doca 

FRR 需要一系列不斷發(fā)展的先決條件,這些先決條件在FRR 社區(qū)文檔安裝了這些依賴項后,我將 FRR 配置為包括 DPDK 和 DOCA 數(shù)據(jù)平面插件。

root@dpu-arm:~/code/frr# ./bootstrap.sh 

root@dpu-arm:~/code/frr# ./configure --build=aarch64-linux-gnu --prefix=/usr --includedir=\${prefix}/include --mandir=\${prefix}/share/man --infodir=\${prefix}/share/info --sysconfdir=/etc --localstatedir=/var --disable-silent-rules --libdir=\${prefix}/lib/aarch64-linux-gnu --libexecdir=\${prefix}/lib/aarch64-linux-gnu --disable-maintainer-mode --disable-dependency-tracking --enable-exampledir=/usr/share/doc/frr/examples/ --localstatedir=/var/run/frr --sbindir=/usr/lib/frr --sysconfdir=/etc/frr --with-vtysh-pager=/usr/bin/pager --libdir=/usr/lib/aarch64-linux-gnu/frr --with-moduledir=/usr/lib/aarch64-linux-gnu/frr/modules "LIBTOOLFLAGS=-rpath /usr/lib/aarch64-linux-gnu/frr" --disable-dependency-tracking --disable-dev-build --enable-systemd=yes --enable-rpki --with-libpam --enable-doc --enable-doc-html --enable-snmp --enable-fpm --disable-zeromq --enable-ospfapi --disable-bgp-vnc --enable-multipath=128 --enable-user=root --enable-group=root --enable-vty-group=root --enable-configfile-mask=0640 --enable-logfile-mask=0640 --disable-address-sanitizer --enable-cumulus=yes --enable-datacenter=yes --enable-bfdd=no --enable-sharpd=yes --enable-dp-doca=yes --enable-dp-dpdk=yes 

因為我用 DPU 作為 my 開發(fā)環(huán)境Roment ,我構(gòu)建并安裝了 FRR 二進制文件:

root@dpu-arm:~/code# make –j12 all; make install 

以下是構(gòu)建時間的進展。我用多種方法來衡量:

是時候使用make -j12 all和make install構(gòu)建和安裝二進制文件了

是時候構(gòu)建相同的二進制文件了,但也可以使用dpkg-buildpackage –j12 –uc –us將它們組裝到 Debian 軟件包中

第一種方法用于編碼和單元測試。第二種生成 DEB 的方法需要與其他外部開發(fā)環(huán)境上的構(gòu)建時間進行比較。

時間上的差異是意料之中的。生成一個包需要幾個額外的步驟。

使用 DPU 作為開發(fā)環(huán)境有一些明顯的優(yōu)勢。

您可以在不離開工作區(qū)的情況下進行編碼、構(gòu)建和安裝,然后進行單元測試。

您可以為增量代碼更改優(yōu)化構(gòu)建。

最后一種選擇通常是與完整構(gòu)建相比,大幅縮短構(gòu)建時間。例如,我在 FRR 中修改了 DOCA 數(shù)據(jù)平面代碼,并用以下結(jié)果重建:

root@dpu-arm:~/code/frr# time make –j12 

>>>>>>>>>>>>> snipped make output >>>>>>>>>>>> 

real 0m3.119s 

user 0m2.794s 

sys 0m0.479s 

雖然這可能會讓事情變得更簡單,但它需要無限期地為每個開發(fā)人員保留 DPU 的許可證,僅用于應(yīng)用程序開發(fā)或維護。您的開發(fā)環(huán)境可能還需要更多的內(nèi)存和馬力,因此長期來看,這是一個不太可行的選擇。

在 x86 服務(wù)器上開發(fā)

我的 Bluefield2 DPU 由一臺 x86-64 Ubuntu 20.04 服務(wù)器托管,我在開發(fā)環(huán)境中使用了這臺服務(wù)器。

root@server1-x86:~# lscpu |grep "CPU(s):\|Model name" 

CPU(s): 32 

Model name: Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz 

root@server1-x86:~# grep MemTotal /proc/meminfo 

MemTotal: 131906300 kB 

在本例中,構(gòu)建機器是 x86 ,應(yīng)用程序?qū)⑦\行的主機是 DPU-Arm64 。有幾種方法可以做到這一點:

在 x86 構(gòu)建機器上使用 Arm 仿真。 A 。 DOCA 開發(fā)容器 作為 DOCA 軟件包的一部分提供。

使用交叉編譯工具鏈。

在這個測試中,我使用了第一個選項,因為它是最簡單的。第二個選項可以提供不同的性能,但創(chuàng)建該工具鏈有其挑戰(zhàn) 。

我在 x86 服務(wù)器上下載并加載了bfb_builder_doca_ubuntu_20.04容器,并啟動了它。

root@server1-x86:~# sudo docker load -i bfb_builder_doca_ubuntu_20.04-mlnx-5.4.tar 
root@server1-x86:~# docker run -v ~/code:/code --privileged -it -e container=dock 
er doca_v1.11_bluefield_os_ubuntu_20.04-mlnx-5.4:latest 

DOCA 和 DPDK 庫預(yù)先安裝在這個容器中,我只需要將它們添加到PKG_CONFIG路徑。

root@86b87b0ab0c2:/code # export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/opt/mellanox/dpdk/lib/aarch64-linux-gnu/pkgconfig 

我在容器中設(shè)置了工作區(qū)和 FRR 先決條件,與前面的選項相同。

root@86b87b0ab0c2:/code # git clone  https://github.com/AnuradhaKaruppiah/frr.git  
root@86b87b0ab0c2:/code # cd frr 
root@86b87b0ab0c2:/code/frr # git checkout dp-doca 

我可以在這個 DOCA 容器中構(gòu)建我的應(yīng)用程序,但我無法對其進行測試。因此,必須將 FRR 二進制文件構(gòu)建并打包到 DEB 中,然后將其復(fù)制到 BlueField DPU 進行測試。我設(shè)置了 FRR Debian 規(guī)則,以匹配前面選項中使用的 FRR 構(gòu)建配置,并生成了包:

root@86b87b0ab0c2:/code/frr # dpkg-buildpackage –j12 –uc -us 

表 2 顯示了構(gòu)建時間與以前方法的比較。


表 2 。 DPU Arm 和 X86 構(gòu)建時間

構(gòu)建時間的巨大飛躍讓我感到驚訝,因為我有一臺庫存充足的 x86 服務(wù)器,而且沒有 Docker 限制。因此,將 CPU 和 RAM 扔到一個問題上似乎并不總是有幫助!這種性能下降是因為跨體系結(jié)構(gòu),正如您在下一個選項中看到的那樣。

在 AWS 引力子實例中開發(fā)

接下來,我嘗試在 Arm 上構(gòu)建我的應(yīng)用程序,但這次是在一臺馬力更大的外部服務(wù)器上。為此,我使用了 Amazon EC2 Graviton 實例,其規(guī)格與我的 x86 服務(wù)器相當(dāng)。

Arm64 arch , Ubuntu 20.04 操作系統(tǒng)

128G 內(nèi)存

32 伏 CPU

root@ip-172-31-28-243:~# lscpu |grep "CPU(s):\|Model name" 
CPU(s): 32 
Model name: Neoverse-N1 
root@ip-172-31-28-243:~# grep MemTotal /proc/meminfo 
MemTotal: 129051172 kB 

為了在本例中設(shè)置 DOCA 和 DPDK 庫,我安裝了DOCA SDK 回購元包.

root@ip-172-31-28-243:~# dpkg -i doca-repo-aarch64-ubuntu2004-local_1.1.1-1.5.4.2.4.1.3.bf.3.7.1.11866_arm64.deb 
root@ip-172-31-28-243:~#  apt update 
root@ip-172-31-28-243:~# apt install doca-sdk 

克隆和構(gòu)建 FRR Debian 包的其余步驟與前面的選項相同。

表 3 顯示了構(gòu)建在 AWS Arm 實例上的運行情況。


表 3 。 DPU Arm 、 X86 和 AWS Arm 的構(gòu)建時間

這是一個明顯的贏家,不需要咖啡。

圖 1 顯示了這些環(huán)境中的編譯時間。

圖 1 。具有不同選項的 FRR 構(gòu)建時間

總結(jié)

在本文中,我討論了 DPU 應(yīng)用程序的幾個開發(fā)環(huán)境:

BlueField 增值稅

x86 服務(wù)器上的 DOCA 開發(fā)容器

AWS 引力計算實例

你可以直接在 DPU 上制作應(yīng)用程序原型,在 x86 DOCA 開發(fā)容器中進行開發(fā)實驗,然后用 DOCA 抓取一個 AWS Graviton 實例,使其進入 hyperspeed !

關(guān)于作者

Anuradha Karuppiah 是 NVIDIA 網(wǎng)絡(luò)的首席軟件工程師。 Anuradha 使用 FRR (自由范圍路由軟件套件)設(shè)計和實現(xiàn) EVPN 解決方案。

審核編輯:郭婷

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • NVIDIA
    +關(guān)注

    關(guān)注

    14

    文章

    5071

    瀏覽量

    103498
  • 應(yīng)用程序
    +關(guān)注

    關(guān)注

    38

    文章

    3291

    瀏覽量

    57823
收藏 人收藏

    評論

    相關(guān)推薦

    NVIDIA BlueField-3 DPU上運行WEKA客戶端的實際優(yōu)勢

    WEKA是可擴展軟件定義數(shù)據(jù)平臺的先驅(qū),NVIDIA 正在與其合作,將 WEKA 先進的數(shù)據(jù)平臺解決方案與功能強大的NVIDIA BlueField DPU相結(jié)合。
    的頭像 發(fā)表于 01-07 09:43 ?169次閱讀
    在<b class='flag-5'>NVIDIA</b> <b class='flag-5'>BlueField</b>-3 <b class='flag-5'>DPU</b>上運行WEKA客戶端的實際優(yōu)勢

    android手機上emulate應(yīng)用程序方法

    在Android手機上模擬(emulate)應(yīng)用程序方法通常涉及到使用Android模擬器(Emulator)或類似的工具來模擬Android環(huán)境,以便在沒有實際物理設(shè)備的情況下運行和測試應(yīng)用程序
    的頭像 發(fā)表于 12-05 15:33 ?418次閱讀

    NVIDIA DOCA-OFED的主要特性

    NVIDIA DOCA 軟件平臺釋放了 NVIDIA BlueField 網(wǎng)絡(luò)平臺的潛力,并為NVIDIA BlueField和Connec
    的頭像 發(fā)表于 11-09 13:50 ?324次閱讀

    linux驅(qū)動程序編譯方法是什么

    Linux驅(qū)動程序編譯方法主要包括兩種: 與內(nèi)核一起編譯編譯成獨立的內(nèi)核模塊 。以下是對這兩種
    的頭像 發(fā)表于 08-30 14:46 ?725次閱讀

    linux驅(qū)動程序編譯方法有哪兩種

    Linux驅(qū)動程序編譯方法主要可以歸納為兩種: 手動編譯 和 使用內(nèi)核構(gòu)建系統(tǒng)(Makefile)自動編譯 。 1. 手動
    的頭像 發(fā)表于 08-30 14:39 ?870次閱讀

    NVIDIA BlueField-3 DPU助力思科提高工作負(fù)載安全性和運營效率

    、位置和外形尺寸的應(yīng)用程序工作負(fù)載。 思科最近發(fā)布了Cisco Secure Workload 3.9 版,將企業(yè)的安全性和運營效率提升到了新的水平。它提供了新的功能來緩解威脅和漏洞,并為部署微分段(microsegmentation)提供了更大的靈活性。它現(xiàn)在還擴展到NVIDI
    的頭像 發(fā)表于 06-27 17:31 ?808次閱讀

    espressif編譯時顯示應(yīng)用程序分區(qū)低于30%如何調(diào)整?

    當(dāng)用eclipse 編譯結(jié)束時, 程序彈出提示:應(yīng)用程序可用分區(qū)低于30%(僅563284,一共2097152),請點擊 進行調(diào)正.. 我試著編輯partition_voip_example.csv
    發(fā)表于 06-11 07:30

    借助NVIDIA DOCA 2.7增強AI 云數(shù)據(jù)中心和NVIDIA Spectrum-X

    NVIDIA DOCA 加速框架為開發(fā)者提供了豐富的庫、驅(qū)動和 API,以便為 NVIDIA BlueField DPU 和 SuperNIC 創(chuàng)建高性能的
    的頭像 發(fā)表于 05-29 09:22 ?532次閱讀

    NVIDIA DPU編程入門開課儀式在澳門科技大學(xué)成功舉辦

    5 月 24 日,NVIDIA DPU 編程入門開課儀式在澳門科技大學(xué)成功舉辦。作為首個在中國開設(shè) NVIDIA DPU 編程相關(guān)課程的高校,來自澳門科技大學(xué)不同院系的師生共同見證了本
    的頭像 發(fā)表于 05-28 09:40 ?425次閱讀

    NVIDIA Omniverse USD Composer能用來做什么?如何獲取呢?

    NVIDIA Omniverse? USD Composer(以前稱為 Create)是 NVIDIA Omniverse? 中用于構(gòu)建虛擬世界的參考應(yīng)用程序,允許用戶進行組裝、模擬和渲染大型場景。
    的頭像 發(fā)表于 05-20 10:07 ?935次閱讀
    <b class='flag-5'>NVIDIA</b> Omniverse USD Composer能用來做什么?如何獲取呢?

    Nvidia的AI芯片路線圖分析與解讀

    SmartNIC智能網(wǎng)卡/DPU數(shù)據(jù)處理引擎的下一跳ConnectX-8/BlueField-4目標(biāo)速率為 800G,與1.6T Quantum和Spectrum-X配套的SmartNIC和DPU的路標(biāo)仍不明晰,NVLink5.
    發(fā)表于 04-29 09:59 ?1064次閱讀
    <b class='flag-5'>Nvidia</b>的AI芯片路線圖分析與解讀

    使用Docker部署Go Web應(yīng)用程序步驟

    大多數(shù)情況下Go應(yīng)用程序編譯成單個二進制文件,web應(yīng)用程序則會包括模版和配置文件。而當(dāng)一個項目中有很多文件的時候,由于很多文件沒有同步就會導(dǎo)致錯誤的發(fā)生并且產(chǎn)生很多的問題。
    發(fā)表于 04-20 09:33 ?538次閱讀
    使用Docker部署Go Web<b class='flag-5'>應(yīng)用程序</b>步驟

    【從0開始創(chuàng)建AWTK應(yīng)用程序編譯應(yīng)用到RTOS平臺

    AWStudio上編寫好AWTK應(yīng)用程序后,部署到RTOS平臺(如STM32)是很方便的,下面就以STM32F429型號為例子來介紹如何編譯AWTK應(yīng)用到RTOS
    的頭像 發(fā)表于 03-21 08:23 ?655次閱讀
    【從0開始創(chuàng)建AWTK<b class='flag-5'>應(yīng)用程序</b>】<b class='flag-5'>編譯</b>應(yīng)用到RTOS平臺

    應(yīng)用程序中的服務(wù)器錯誤怎么解決?

    在使用應(yīng)用程序時,可能會遇到服務(wù)器錯誤的問題。這種錯誤通常會導(dǎo)致應(yīng)用程序無法正常運行 ,給用戶帶來不便。下面將介紹應(yīng)用程序中的服務(wù)器錯誤及其解決方法,幫助您快速解決這一問題。
    的頭像 發(fā)表于 03-12 15:13 ?6434次閱讀

    基于NVIDIA DOCA 2.6實現(xiàn)高性能和安全的AI云設(shè)計

    網(wǎng)絡(luò)平臺上快速創(chuàng)建應(yīng)用程序和服務(wù),并啟用 NVIDIA BlueField DPUNVIDIA
    的頭像 發(fā)表于 02-23 10:02 ?511次閱讀