攻城獅自述丨OK1043A-C DPDK環(huán)境體驗

原創(chuàng) 2020-03-06 16:59:00 LS1043A DPDK FET1043A

飛凌嵌入式今年6月推出的——FET1043A-C核心板,采用NXP公司的QorIQ? LS1043A處理器設(shè)計,擁有四顆ARMv8-A架構(gòu)的Cortex-A53核,主頻1.6G,低功耗,高能效。四通道高達(dá)10GB的SerDes包含多種靈活配置,在飛凌設(shè)計的配套底板中最大程度上發(fā)揮了QorIQ?LS1043A 處理器網(wǎng)絡(luò)性能,采用一個萬兆,六個千兆的設(shè)計,配合處理器內(nèi)部的DPAA1加速引擎,再加上2GB大容量DDR4內(nèi)存簡直就是網(wǎng)絡(luò)性能怪獸。

分割符9.gif

硬件如此的優(yōu)秀,那么傳統(tǒng)的Linux內(nèi)核還是否與其門當(dāng)戶對?答案是否定的。

原因有以下幾個方面:

? 中斷處理。當(dāng)網(wǎng)絡(luò)中大量數(shù)據(jù)包到來時,會產(chǎn)生頻繁的硬件中斷請求,這些硬件中斷可以打斷之前較低優(yōu)先級的軟中斷或者系統(tǒng)調(diào)用的執(zhí)行過程,如果這種打斷頻繁的話,將會產(chǎn)生較高的性能開銷。

? 內(nèi)存拷貝。正常情況下,一個網(wǎng)絡(luò)數(shù)據(jù)包從網(wǎng)卡到應(yīng)用程序需要經(jīng)過如下的過程:數(shù)據(jù)從網(wǎng)卡通過DMA等方式傳到內(nèi)核開辟的緩沖區(qū),然后從內(nèi)核空間拷貝到用戶態(tài)空間,在Linux內(nèi)核協(xié)議棧中,這個耗時操作甚至占到了數(shù)據(jù)包整個處理流程的57.1%。

? 上下文切換。頻繁到達(dá)的硬件中斷和軟中斷都可能隨時搶占系統(tǒng)調(diào)用的運行,這會產(chǎn)生大量的上下文切換開銷。另外,在基于多線程的服務(wù)器設(shè)計框架中,線程間的調(diào)度也會產(chǎn)生頻繁的上下文切換開銷,同樣,鎖競爭的耗能也是一個非常嚴(yán)重的問題。

? 局部性失效。如今主流的處理器都是多個核心的,這意味著一個數(shù)據(jù)包的處理可能跨多個CPU 核心,比如一個數(shù)據(jù)包可能中斷在cpu0,內(nèi)核態(tài)處理在cpu1,用戶態(tài)處理在cpu2,這樣跨多個核心,容易造成CPU 緩存失效,造成局部性失效。如果是NUMA 架構(gòu),更會造成跨NUMA 訪問內(nèi)存,性能受到很大影響。

? 內(nèi)存管理。傳統(tǒng)服務(wù)器內(nèi)存頁為4K,為了提高內(nèi)存的訪問速度,避免cache miss,可以增加cache 中映射表的條目,但這又會影響CPU 的檢索效率。

綜合以上問題,可以看出內(nèi)核本身就是一個非常大的瓶頸所在。那很明顯解決方案就是想辦法繞過內(nèi)核。經(jīng)很多前輩先驅(qū)的研究,DPDK在眾多方案脫穎而出。


 

分割符9.gif


“紙上得來終覺淺,絕知此事要躬行”,下面我們通過一個實例來體驗下DPDK。

首先,使用DPDK環(huán)境,需要修改設(shè)備樹,將網(wǎng)絡(luò)配置到用戶態(tài)。需要使用到的設(shè)備樹文件:

OK10xx-linux-fs/flexbuild/build/linux/linux/arm64/fsl-ls1043a-rdb-usdpaa.dtb

將fsl-ls1043a-rdb-usdpaa.dtb拷貝到開發(fā)板根目錄,使用如下命令替換設(shè)備樹:

mv/run/media/mmcblk0p2/fsl-ls1043a-rdb-sdk.dtb/run/media/mmcblk0p2/fsl-ls1043a-rdb-sdk.dtb.bak

cp/fsl-ls1043a-rdb-usdpaa.dtb /run/media/mmcblk0p2/boot

ln-s /run/media/mmcblk0p2/boot/fsl-ls1043a-rdb-usdpaa.dtb/run/media/mmcblk0p2/boot/fsl-ls1043a-rdb-sdk.dtb

reboot

替換成功后啟動開發(fā)板輸入:ifconfigfm1-mac1

如果提示Devicenot found 就是已經(jīng)替換成功。

測試DPDK完成后恢復(fù)默認(rèn)配置方法

cp/run/media/mmcblk0p2/fsl-ls1043a-rdb-sdk.dtb.bak/run/media/mmcblk0p2/fsl-ls1043a-rdb-sdk.dtb

reboot

將網(wǎng)絡(luò)配置到用戶態(tài)之后,那么我們該如何使用它們呢?TCP/UDP咋用?不要急在DPDK中使用TCP或者UDP的話還需要移植一個協(xié)議棧到DPDK中。入門階段我們還是先來體驗一把DPDK中包含了二層轉(zhuǎn)發(fā)的測試?yán)贪伞?/span>

二層轉(zhuǎn)發(fā)網(wǎng)絡(luò)拓?fù)淙缦聢D所示:


 

使用OK1043A-C平臺的Port2和Port3(對應(yīng)fm1-mac3和fm1-mac4),對LinuxHost 和 OK1012A-C之間的數(shù)據(jù)進(jìn)行轉(zhuǎn)發(fā)。LinuxHost 和 OK1012A-C您可以替換成其他的網(wǎng)絡(luò)設(shè)備。

配置OK1043A-C:

l2fwd-c 0xf -n 1 -- -p 0xc -q 1 --no-mac-updating


參數(shù)

說明

-c

Core mask 0xf 使用4核

-n

內(nèi)存通道數(shù)

-p

Port mask 0xc 二進(jìn)制1100使用port3 port2

-q

每個核的隊列數(shù)量默認(rèn)為1

--no-mac-updating

轉(zhuǎn)換后不替換MAC

配置OK1012A-C:

ifconfigeth0 192.168.1.200

tcpdump-i eth0 -vv -n -e


配置Linux Host:


ifconfigeth0 192.168.1.120

sudomodprobe pktgen.ko

echo"add_deviceeth0"> /proc/net/pktgen/kpktgend_0

echo"dst_mac6e:56:7d:85:ce:4d"> /proc/net/pktgen/eth0

echo"dst192.168.1.200">/proc/net/pktgen/eth0

echo"pkt_size64"> /proc/net/pktgen/eth0

echo"count1000000"> /proc/net/pktgen/eth0

echo"start"> /proc/net/pktgen/pgctrl

我們讓LinuxHost主機發(fā)送100萬個64字節(jié)大小的包出去,測試OK1043A-CDPDK對這些數(shù)據(jù)包的轉(zhuǎn)發(fā)能力。


 

通過查看OK1043A-C的串口打印信息,我們發(fā)現(xiàn)DPDK已經(jīng)將所有收到的數(shù)據(jù)包完完全全的轉(zhuǎn)發(fā)了出去。同時細(xì)心的你會發(fā)現(xiàn)采用DPDK進(jìn)行數(shù)據(jù)轉(zhuǎn)發(fā)時,CPU的負(fù)載一直居高不下,因為它一直在應(yīng)用層輪詢,查看是否有數(shù)據(jù)包需要處理。

 

 

----   END   ----


 長按識別二維碼加關(guān)注 

飛凌嵌入式

專注于智能設(shè)備核心平臺研發(fā)與制造


■ 關(guān)注“飛凌嵌入式”公眾號,不定期分享行業(yè)干貨及產(chǎn)品一線資料。

■ 直接微信回復(fù)產(chǎn)品平臺,如“LS1043A”,即可快速獲取對應(yīng)產(chǎn)品信息。

■ 想要了解飛凌更多信息,歡迎與我們聯(lián)系:

銷售工程師:400-699-6866

國際業(yè)務(wù)部:0312-3102650-854

技術(shù)服務(wù)部:0312-3119192

方案定制類:17713286015 (杜工),18633238067(王工)

 

■ 實時技術(shù)支持:

AM 9:00—11:30,PM 13:30—17:00(周一至周五)

 


相關(guān)產(chǎn)品 >

  • FET1046A-C核心板

    4核1.8GHz,原生8網(wǎng)口靈活擴展|LS1046A 系列ARM工控核心板基于 NXP公司的LS1046A高性能64位ARM四核處理器。LS1046A處理器將四個64位ARM Cortex-A72內(nèi)核與數(shù)據(jù)包處理加速和高速外設(shè)相集成,CoreMark跑分高達(dá)45000,LS1046A強大的網(wǎng)絡(luò)處理能力和豐富的高速接口,適用于工業(yè)路由、邊緣計算網(wǎng)關(guān)、IP-PBX等產(chǎn)品,以及邊緣計算、 能源物聯(lián)網(wǎng)、智慧城市、工業(yè)自動化、視頻監(jiān)控等應(yīng)用領(lǐng)域。

    了解詳情
    FET1046A-C核心板
  • OK1046A-C2開發(fā)板

    4核1.8GHz,原生8網(wǎng)口,支持萬兆網(wǎng)絡(luò)|
    飛凌嵌入式LS1046a ARM工控主板系列LS1046開發(fā)板 基于 NXP LS1046A 四核Cortex A72 CPU,強大的萬兆網(wǎng)絡(luò)處理能力和豐富的高速接口,CoreMark跑分高達(dá)45000。飛凌不僅僅提供了LS1046A開發(fā)板套件,還提供了調(diào)試心得、LS1046A硬件數(shù)據(jù)手冊,并根據(jù)應(yīng)用情況發(fā)布了 LS1046A 5G CPE 工業(yè)網(wǎng)關(guān)方案、邊緣計算網(wǎng)關(guān)方案,降低了客戶二次開發(fā)的難度。更多關(guān)于LS1046A的解決方案,產(chǎn)品詳情,您可以登入飛凌嵌入式官網(wǎng)了解。

    了解詳情
    OK1046A-C2開發(fā)板
  • FET1043A-C核心板

    LS1043A處理器是恩智浦推出的一款面向嵌入式網(wǎng)絡(luò)的四核64位ARM處理器。LS1023A (雙核)和LS1043A (四核)支持無風(fēng)扇設(shè)計,超過10 Gbps的性能。LS1043A和LS1023A能夠面向無線LAN和以太網(wǎng)供電系統(tǒng)方案提供額外的功耗節(jié)省。支持引腳兼容設(shè)計,可擴展至LS1046A (四核A72處理器)或LS1088A (十核A53處理器)。
    飛凌LS1043系列核心板,基于NXP公司的LS1043A四核處理器設(shè)計,主頻1.6GHz,ARM Cortex-A53架構(gòu)。原生支持1個10Gbps和6個1000Mbps。支持PCIe 2.0、SATA3.0、USB3.0、UART、IIC等功能接口
    了解詳情
    FET1043A-C核心板
  • OK1043A-C開發(fā)板

    LS1043A開發(fā)板基于四核64位Arm Cortex-A53 LS1043A的處理器專為嵌入式網(wǎng)絡(luò)應(yīng)用而設(shè)計,主頻1.6GHz,板載資源豐富,原生支持7 個Ethernet。 飛凌OK1043A-C開發(fā)板上市已有一段時間,大家對LS1043A有了初步體驗,飛凌也優(yōu)化了很多資料,幫助客戶使用LS1043應(yīng)用解決方案套件,包括LS1043軟件手冊、LS1043硬件手冊、LS1043引腳定義等,客戶可以通過這些LS1043的資料快速完成產(chǎn)品原型設(shè)計開發(fā)工作。

    了解詳情
    OK1043A-C開發(fā)板

推薦閱讀 換一批 換一批