攻城獅自述丨OK1043A-C DPDK環境體驗

原創 2020-03-06 16:59:00 LS1043A DPDK FET1043A

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

分割符9.gif

硬件如此的優秀,那麼傳統的Linux内核還是否與其門當戶對?答案是否定的。

原因有以下幾個方面:

❶ 中斷處理。當網絡中大量數據包到來時,會産生頻繁的硬件中斷請求,這些硬件中斷可以打斷之前較低優先級的軟中斷或者系統調用的執行過程,如果這種打斷頻繁的話,将會産生較高的性能開銷。

❷ 内存拷貝。正常情況下,一個網絡數據包從網卡到應用程序需要經過如下的過程:數據從網卡通過DMA等方式傳到内核開辟的緩沖區,然後從内核空間拷貝到用戶态空間,在Linux内核協議棧中,這個耗時操作甚至占到了數據包整個處理流程的57.1%。

❸ 上下文切換。頻繁到達的硬件中斷和軟中斷都可能随時搶占系統調用的運行,這會産生大量的上下文切換開銷。另外,在基于多線程的服務器設計框架中,線程間的調度也會産生頻繁的上下文切換開銷,同樣,鎖競争的耗能也是一個非常嚴重的問題。

❹ 局部性失效。如今主流的處理器都是多個核心的,這意味着一個數據包的處理可能跨多個CPU 核心,比如一個數據包可能中斷在cpu0,内核态處理在cpu1,用戶态處理在cpu2,這樣跨多個核心,容易造成CPU 緩存失效,造成局部性失效。如果是NUMA 架構,更會造成跨NUMA 訪問内存,性能受到很大影響。

❺ 内存管理。傳統服務器内存頁為4K,為了提高内存的訪問速度,避免cache miss,可以增加cache 中映射表的條目,但這又會影響CPU 的檢索效率。

綜合以上問題,可以看出内核本身就是一個非常大的瓶頸所在。那很明顯解決方案就是想辦法繞過内核。經很多前輩先驅的研究,DPDK在衆多方案脫穎而出。


 

分割符9.gif


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

首先,使用DPDK環境,需要修改設備樹,将網絡配置到用戶态。需要使用到的設備樹文件:

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

将fsl-ls1043a-rdb-usdpaa.dtb拷貝到開發闆根目錄,使用如下命令替換設備樹:

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

替換成功後啟動開發闆輸入:ifconfigfm1-mac1

如果提示Devicenot found 就是已經替換成功。

測試DPDK完成後恢複默認配置方法

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

reboot

将網絡配置到用戶态之後,那麼我們該如何使用它們呢?TCP/UDP咋用?不要急在DPDK中使用TCP或者UDP的話還需要移植一個協議棧到DPDK中。入門階段我們還是先來體驗一把DPDK中包含了二層轉發的測試例程吧。

二層轉發網絡拓撲如下圖所示:


 

使用OK1043A-C平台的Port2和Port3(對應fm1-mac3和fm1-mac4),對LinuxHost 和 OK1012A-C之間的數據進行轉發。LinuxHost 和 OK1012A-C您可以替換成其他的網絡設備。

配置OK1043A-C:

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


參數

說明

-c

Core mask 0xf 使用4核

-n

内存通道數

-p

Port mask 0xc 二進制1100使用port3 port2

-q

每個核的隊列數量默認為1

--no-mac-updating

轉換後不替換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主機發送100萬個64字節大小的包出去,測試OK1043A-CDPDK對這些數據包的轉發能力。


 

通過查看OK1043A-C的串口打印信息,我們發現DPDK已經将所有收到的數據包完完全全的轉發了出去。同時細心的你會發現采用DPDK進行數據轉發時,CPU的負載一直居高不下,因為它一直在應用層輪詢,查看是否有數據包需要處理。

 

 

----   END   ----


 長按識别二維碼加關注 

飛淩嵌入式

專注于智能設備核心平台研發與制造


■ 關注“飛淩嵌入式”公衆号,不定期分享行業幹貨及産品一線資料。

■ 直接微信回複産品平台,如“LS1043A”,即可快速獲取對應産品信息。

■ 想要了解飛淩更多信息,歡迎與我們聯系:

銷售工程師:400-699-6866

國際業務部:0312-3102650-854

技術服務部:0312-3119192

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

 

■ 實時技術支持:

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

 


相關産品 >

  • FET1046A-C核心闆

    4核1.8GHz,原生8網口靈活擴展|LS1046A 系列ARM工控核心闆基于 NXP公司的LS1046A高性能64位ARM四核處理器。LS1046A處理器将四個64位ARM Cortex-A72内核與數據包處理加速和高速外設相集成,CoreMark跑分高達45000,LS1046A強大的網絡處理能力和豐富的高速接口,适用于工業路由、邊緣計算網關、IP-PBX等産品,以及邊緣計算、 能源物聯網、智慧城市、工業自動化、視頻監控等應用領域。

    了解詳情
    FET1046A-C核心闆
  • OK1046A-C2開發闆

    4核1.8GHz,原生8網口,支持萬兆網絡|
    飛淩嵌入式LS1046a ARM工控主闆系列LS1046開發闆 基于 NXP LS1046A 四核Cortex A72 CPU,強大的萬兆網絡處理能力和豐富的高速接口,CoreMark跑分高達45000。飛淩不僅僅提供了LS1046A開發闆套件,還提供了調試心得、LS1046A硬件數據手冊,并根據應用情況發布了 LS1046A 5G CPE 工業網關方案、邊緣計算網關方案,降低了客戶二次開發的難度。更多關于LS1046A的解決方案,産品詳情,您可以登入飛淩嵌入式官網了解。

    了解詳情
    OK1046A-C2開發闆
  • FET1043A-C核心闆

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

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

    了解詳情
    OK1043A-C開發闆

推薦閱讀 換一批 換一批