在滴滴雲DC2伺服器上搭建DPDK應用例項

java06051515發表於2018-11-01

隨著人們對高效能網路的要求,DPDK的應用也越來越廣,很多同學希望透過執行簡單的DPDK例項來進行學習實踐。但購買一臺物理機價格不菲,同時也不能在不用時釋放,而滴滴雲DC2伺服器例項可以根據實際使用需求來滿足要求。本文介紹瞭如何基於滴滴雲的DC2例項,來搭建DPDK的應用例項。

建立DC2

相關購買和建立流程可以檢視滴滴雲官網幫助文件,這裡不再做過多介紹,直接進入主題。

下載DPDK

本文以dpdk17.11.4版本為例

下載dpdk:wget

解壓:tar xvJf dpdk-17.11.4.tar.xz

編譯DPDK

進入DPDK目錄

執行:cd dpdk-stable-17.11.4

匯入環境變數

執行:export RTE_SDK=`pwd`

執行:export RTE_TARGET=x86_64-native-linuxapp-gcc

編譯安裝DPDK

執行:make install T=x86_64-native-linuxapp-gcc

  • 編譯錯誤1

報錯:

make: *** /lib/modules/3.10.0-693.21.1.el7.x86_64/build: No such file or directory. Stop.

處理:需要修改核心編譯目錄

執行:cd /lib/modules/3.10.0-693.21.1.el7.x86_64/

執行:rm build

執行:ln -s /usr/src/kernels/3.10.0-693.21.1.el7.x86_64.debug build

  • 編譯錯誤2

報錯:

/home/dc2-user/dpdk-stable-17.11.4/lib/librte_eal/linuxapp/eal/eal_memory.c:56:18: fatal error: numa.h: No such file or directory #include <numa.h>

處理:需要安裝numactl-devel

執行:yum install numactl-devel

安裝DPDK

配置大葉記憶體

執行:

echo 64 > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages 分配64頁2M的大葉

mkdir /mnt/huge

mount -t hugetlbfs nodev /mnt/huge

檢視配置結果: cat /proc/meminfo 會顯示對應的大葉分配了64頁

安裝igb_uio驅動

執行:

modprobe uio

insmod x86_64-native-linuxapp-gcc/kmod/igb_uio.ko

錯誤

insmod: ERROR: could not insert module x86_64-native-linuxapp-gcc/kmod/igb_uio.ko: Invalid module format

處理

執行:yum install kernel-devel 更新對應核心版本

執行:cd /lib/modules/3.10.0-693.21.1.el7.x86_64/ 進入到目錄

執行:rm build 刪除原有軟連線

執行:ln -s /usr/src/kernels/3.10.0-693.21.1.el7.x86_64 build 建立新的軟連線

再次重新編譯安裝DPDK即可

繫結網路卡

因為只有一塊網路卡,需要先Down掉網路卡,導致SSH連線失敗,所以需要先從控制平臺遠端連線過去(該步驟詳情可檢視滴滴雲幫助文件)。然後執行如下步驟 :

執行:ifconfig eth0 down Down掉介面

執行:./usertools/dpdk-devbind.py --status 檢視對應的PCI資訊

執行:./usertools/dpdk-devbind.py -b igb_uio 0000:00:03.0 繫結網路卡

執行hello world例項

  • 編譯hello world例項

執行:export RTE_SDK=`pwd`

執行:export RTE_TARGET=x86_64-native-linuxapp-gcc

執行:cd example/helloworld

執行:make

  • 執行hello world例項

執行:./build/helloword

顯示:(執行成功)

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559758/viewspace-2218410/,如需轉載,請註明出處,否則將追究法律責任。

相關文章