国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

DPDK 在國產(chǎn)龍芯平臺的移植及評估*

2020-07-19 02:04煒,陽春,李
通信技術(shù) 2020年7期
關(guān)鍵詞:龍芯網(wǎng)卡套件

胡 煒,陽 春,李 文

(中國電子科技集團公司第三十研究所,四川 成都 610041)

0 引言

龍芯是中國科學院計算所自主研發(fā)的通用處理器,采用自主LoongISA 指令系統(tǒng),兼容MIPS 指令。目前系列芯片在政企、安全、金融、能源等應用場景得到了廣泛的應用。該系列芯片為通用處理器未針對網(wǎng)絡數(shù)據(jù)處理做特殊設計,在應用于網(wǎng)絡報文處理的安全產(chǎn)品時,存在一定性能瓶頸。當前廣為流行的數(shù)據(jù)平面開發(fā)套件(DPDK)針對通用處理器進行設計,減少不必要的I/O 開銷,更好的利用處理器運算能力,實現(xiàn)了高性能網(wǎng)絡數(shù)據(jù)包處理。為此,本文嘗試對該套件在龍芯3A2000 平臺進行移植以及性能對比測試。

1 龍芯3A2000 處理器簡介

龍芯3A2000/3B2000 以龍芯3A1000 四核框架結(jié)構(gòu)為基礎(chǔ),處理器核升級為新一代GS464E 架構(gòu),內(nèi)存控制升級為高性能激進調(diào)度控制器,IO 總線升級至HT3.0,內(nèi)部互連網(wǎng)絡則進行了大量的性能優(yōu)化。龍芯3A2000 處理器核心采用自主設計高性能GS464E 微結(jié)構(gòu),微結(jié)構(gòu)綜合技術(shù)水平達到了與Intel 的Ivy Bridge 及AMD 的Steamroller 相當?shù)乃健}埿?A2000 支持自主龍芯指令系統(tǒng)LoongISA,在MIPS64 架構(gòu)500 多條指令的基礎(chǔ)上,在基礎(chǔ)指令、虛擬機指令、面向X86 和ARM 的二進制翻譯指令、向量指令四個方面增加了近1400 條新指令。龍芯3A2000/3B2000 芯片在對龍芯3A1000 引腳兼容的基礎(chǔ)上,大幅提升了系統(tǒng)性能[1]。

該芯片于2015 年推出,而目前最新型號為龍芯3A4000,但其指令集與最新型號差異不大,程序完全可兼容運行。同時,由于其處理性能相對較差也能更好評估DPDK 在該平臺上的性能變化情況。

2 DPDK 開發(fā)套件簡介

DPDK 全稱Intel Data Plane Development Kit,最初由Intel 公司開發(fā)的數(shù)據(jù)平面開發(fā)工具開發(fā)套件,代碼已經(jīng)開源并得到業(yè)界和愛好者的廣泛支持和應用。最初該套件針對X86處理器開發(fā)也僅適配該架構(gòu)。目前,通過一系列適配開發(fā),官方已明確支持X86、Power、Arm 等處理器架構(gòu)。該套件為通用處理器架構(gòu)下用戶空間高效的數(shù)據(jù)包處理提供庫函數(shù)和驅(qū)動的支持。由于該開發(fā)套件的成功,原用于網(wǎng)絡設備開發(fā)的網(wǎng)絡處理器,逐步被通用處理器替代[2]。

DPDK 運行在Linux 操作系統(tǒng)的用戶空間,基于系統(tǒng)UIO 機制,實現(xiàn)在用戶空間上直接收發(fā)網(wǎng)絡數(shù)據(jù)包,繞過內(nèi)核對數(shù)據(jù)包處理,避免數(shù)據(jù)在內(nèi)核態(tài)與用戶態(tài)間的數(shù)據(jù)拷貝。相比原生Linux 內(nèi)核數(shù)據(jù)轉(zhuǎn)發(fā),采用DPDK 技術(shù)后能夠大幅提升網(wǎng)絡數(shù)據(jù)的轉(zhuǎn)發(fā)性能。同時由于整個業(yè)務處理均在用戶態(tài)進行,大大方便了程序的開發(fā)、調(diào)試以及維護。

該開發(fā)套件主要具備以下技術(shù)特點[3]:

(1)UIO 技術(shù),在用戶空間直接從網(wǎng)卡收發(fā)數(shù)據(jù),實現(xiàn)數(shù)據(jù)零拷貝。

(2)CPU 預取、數(shù)據(jù)包批處理機制,提高Cache 使用效率,降低數(shù)據(jù)處理時延。

(3)CPU 親和性設置,減少任務切換,并確保程序熱點一直處于Cache 中。

(4)大頁內(nèi)存技術(shù),提高Cache 命中率和內(nèi)存訪問速率。

(5)無鎖隊列技術(shù),避免數(shù)據(jù)在不同CPU 核間傳遞的鎖開銷。

3 DPDK 移植要點分析

DPDK 開發(fā)套件包含硬件抽象庫(EAL)、網(wǎng)卡輪詢驅(qū)動、內(nèi)存池管理、無鎖隊列等一系列組件,其系統(tǒng)架構(gòu)如圖1 所示。

圖1 DPDK 架構(gòu)

從圖1中可以看出DPDK的EAL組件承上啟下,在內(nèi)核空間、用戶空間均有出現(xiàn),EAL 完成對各種硬件平臺、操作系統(tǒng)的適配工作,也是移植中需重點關(guān)注的部分。

本次移植基于DPDK17.11.4 版本進行,代碼結(jié)構(gòu)如圖2 所示。

圖2 DPDK 代碼結(jié)構(gòu)

在DPDK 中新增架構(gòu)支持需調(diào)整config、lib、mk 目錄相關(guān)的配置文件、EAL 組件和編譯配置[4]。

下面將針對X86 架構(gòu)下的EAL 組件做進一步分析,其組成如下:

(1)內(nèi)核態(tài)

EAL 組件在Linux 系統(tǒng)內(nèi)核中包括兩個模塊,igb_uio、kni。這兩個模塊與硬件平臺無關(guān)主要適配不同版本的Linux 內(nèi)核,其中igb_uio 用于實現(xiàn)對PCIE 網(wǎng)卡的UIO 訪問提供支持。

(2)用戶態(tài)

EAL 組件在用戶態(tài)的部分包括原子操作、字節(jié)序、CPU 時間標簽計數(shù)器、內(nèi)存拷貝、預取操作、讀寫鎖、自旋鎖、向量指令、I/O 讀寫等等系列操作,與具體硬件相關(guān)代碼列表如表1 所示。

表1 EAL 組件硬件相關(guān)代碼列表

從上面的分析可知,實現(xiàn)DPDK 在不同硬件架構(gòu)的移植主要需解決:

(1)硬件架構(gòu)相關(guān)配置文件、編譯選項添加;

(2)EAL 內(nèi)核模塊移植;

(3)EAL用戶態(tài)組件的硬件架構(gòu)相關(guān)實現(xiàn)調(diào)整。

4 龍芯平臺移植過程

本次移植選用龍芯3A2000 處理器、Intel 公司支持DPDK 的82 580 千兆網(wǎng)卡,運行龍芯公司提供的Loongnix 操作系統(tǒng),Linux 內(nèi)核版本為3.10。

4.1 配置及編譯支持

在config 目錄中添加配置文件defconfig_mips-loongson3a-linuxapp-gcc,其中主要包括:

CONFIG_RTE_ARCH=”mips”

CONFIG_RTE_MACHINE=”loongson3a”

CONFIG_RTE_CACHE_LINE_SIZE=64

CONFIG_RTE_ARCH_64=y

在mk目錄中添加arch/mips/rte.vars.mk,machine/loongson3a/rte.vars.mk 文件,定義編譯相關(guān)選項,其中主要包括:

ARCH ?=mips

RTE_OBJCOPY_TARGET=elf64-tradlittlemips

RTE_OBJCOPY_ARCH=mips:loongson_3a

MACHINE_CFLAGS +=-march=loongson3a

4.2 內(nèi)核模塊移植

本次移植所選版本DPDK 開發(fā)套件可支持3.10版本的Linux 內(nèi)核,在內(nèi)核編譯添加UIO 功能支持后,igb_uio 模塊可直接編譯、運行。由于所用龍芯平臺的內(nèi)核不支持MSI 中斷方式,需調(diào)整igb_uio代碼,使用legacy 中斷方式。

4.3 硬件架構(gòu)相關(guān)調(diào)整

龍芯3A2000 處理器基于MIPS 架構(gòu),采用小端序,大頁內(nèi)存的頁大小為32 M,指令集也與X86存在較大的差異。

新建lib/librte_eal/common/include/arch/mips目錄,在目錄中添加并實現(xiàn)表1 中相關(guān)代碼,其中關(guān)鍵的是rte_atomic.h(原子操作),rte_cycles.h(CPU 時間標簽計數(shù)器)。

注:本次移植暫不支持rte_vect.h(向量指令)。

(1)原子操作

原子操作包括內(nèi)存屏障函數(shù),16 位、32 位、64 位的原子加減、CAS 函數(shù)。這里以rte_atomic32_add 為例做說明,其龍芯平臺實現(xiàn)如圖3 所示[5-6]。

圖3 rte_atomic32_add 實現(xiàn)

(2)CPU 時間標簽計數(shù)器操作

該操作用于快速獲得CPU 時間戳,可避免使用開銷較大的系統(tǒng)函數(shù)gettimeofday。這在數(shù)據(jù)包輪詢處理中非常有用。其函數(shù)為rte_rdtsc,實現(xiàn)如圖4 所示[5-6]。

圖4 rte_rdtsc 實現(xiàn)

其他組件的移植實現(xiàn)不再詳細敘述。

5 性能評估與分析

為評估DPDK 對龍芯平臺網(wǎng)絡數(shù)據(jù)轉(zhuǎn)發(fā)性能的影響情況,采用信爾泰網(wǎng)絡測試儀對Linux 內(nèi)核橋轉(zhuǎn)發(fā)、DPDK l2fwd 程序轉(zhuǎn)發(fā)的吞吐率進行測試評估,評估基于RFC2544 進行,包長包括64 字節(jié)、256字節(jié)、1280 字節(jié)。

5.1 Linux 內(nèi)核橋轉(zhuǎn)發(fā)測試

Linux 內(nèi)核轉(zhuǎn)發(fā)配置如下:

(1)配置網(wǎng)橋

brctl addbr br

brctl addif br eth0

brctl addif br eth1

ifconfig br up

(2)啟用IP 轉(zhuǎn)發(fā)

echo 1 >/proc/sys/net/ipv4/ip_forward

測試結(jié)果如圖5 所示。

通過性能測試結(jié)果可以看出包長64 字節(jié)時,轉(zhuǎn)發(fā)吞吐率僅為155 Mbps,距離2000 Mbps 的理論值相差巨大。同時通過查看詳細測試統(tǒng)計,發(fā)現(xiàn)該字節(jié)包長情況下,稍超出155 Mbps 性能測試時,丟包率已超過1%。這意味著已達到性能瓶頸,進一步提升困難。

5.2 DPDK l2fwd 轉(zhuǎn)發(fā)測試

首先配置DPDK 運行環(huán)境,通過usertools 目錄下的dpdk-setup.sh 進行。配置網(wǎng)卡驅(qū)動為igb_uio,配置大頁內(nèi)存數(shù)量為32(龍芯平臺頁大小為32 M)。l2fwd 運行參數(shù)如下所示[7]:

l2fwd -c 0x6 -n 2 ---p 0x3

測試結(jié)果如圖6 所示。

圖5 內(nèi)核橋轉(zhuǎn)發(fā)吞吐率

圖6 l2fwd 轉(zhuǎn)發(fā)吞吐率

通過性能測試結(jié)果可以看出包長64 字節(jié)時,轉(zhuǎn)發(fā)吞吐率已提升為551.58 Mbps,性能提升接近3.6倍。同時通過查看詳細測試情況,發(fā)現(xiàn)該字節(jié)包長情況下,稍超出551.58 Mbps 性能測試時,丟包僅僅丟包100 多個,丟包率小于萬分之一,平臺性能還存在進一步提升空間。初步懷疑網(wǎng)卡收發(fā)包的緩沖不足導致在某個臨界值時,無法緩存網(wǎng)絡報文進而導致丟包。為此,修改l2fwd 程序,增加網(wǎng)卡緩存并再次進行測試。

5.3 DPDK l2fwd 再次轉(zhuǎn)發(fā)測試

配置及l(fā)2fwd 運行參數(shù)與5.2 章節(jié)保持一致,僅調(diào)整程序緩存大小。

性能測試結(jié)果如圖7 所示。

圖7 l2fwd 再次測試的轉(zhuǎn)發(fā)吞吐率

通過性能測試結(jié)果可以看出包長64 字節(jié)時,轉(zhuǎn)發(fā)吞吐率再次提升,達到為692.2 mbps,性能提升相對內(nèi)核橋轉(zhuǎn)發(fā)達到4.5 倍。

6 結(jié)語

本文針對DPDK 開發(fā)套件在龍芯平臺上進行了移植,并進行了網(wǎng)絡數(shù)據(jù)轉(zhuǎn)發(fā)吞吐率測試及對比分析。結(jié)果證明DPDK 可以在龍芯平臺上正常運行,并且能將轉(zhuǎn)發(fā)性能提升接近5 倍。同時l2fwd 僅是簡單的數(shù)據(jù)報文轉(zhuǎn)發(fā)測試工具,不能很好利用處理器的多核運算能力,平臺轉(zhuǎn)發(fā)性能具備較高的提升空間。因此,基于龍芯平臺開發(fā)網(wǎng)絡安全產(chǎn)品具備技術(shù)可行性,可滿足自主可控要求。

猜你喜歡
龍芯網(wǎng)卡套件
基于國產(chǎn)化龍芯的動環(huán)數(shù)據(jù)采集系統(tǒng)
部署Linux虛擬機出現(xiàn)的網(wǎng)絡故障
Server 2016網(wǎng)卡組合模式
美國火力控制器公司X01卡賓槍轉(zhuǎn)換套件
大眾推出途銳R-Line Plus豪華套件
smart fortwo新套件曝光 底盤進行強化
“龍芯之父”胡偉武
挑戰(zhàn)Killer網(wǎng)卡Realtek網(wǎng)游專用Dragon網(wǎng)卡
瞻博網(wǎng)絡發(fā)布安全套件
“龍芯1號”:電腦中國“芯”