DPDK
安裝與踩雷
更新:新的一篇出來啦《DPDK簡單介紹》,建議直接看這個(gè)。距離這篇隔了挺久了,更新了點(diǎn)別的內(nèi)容,比這篇可能更與時(shí)俱進(jìn)一點(diǎn)吧?關(guān)于DPDK,我個(gè)人研究其實(shí)根本沒多少……以后再寫相關(guān)內(nèi)容可能就不知道猴年馬月去了
下面是好幾個(gè)月之前的內(nèi)容了,dpdk都出到19了,回頭新寫一篇CentOS + Ubuntu兩邊的貼在這,不過可能得五月底了,因?yàn)槲业綍r(shí)候如果交個(gè)論文上去查重查到自己寫的博客,那估計(jì)想死的心都有了……總之敬請期待
下面是原文:
最近由于在學(xué)校有相關(guān)課題,所以花時(shí)間下載安裝了一下dpdk
萬萬沒想到dpdk這技術(shù)出來也挺久了,但是各種相關(guān)內(nèi)容在網(wǎng)上實(shí)在不算很多,尤其是由于每個(gè)人配置不同,可能會碰到各種各樣詭異的問題
我在這里大概記錄一下我安裝使用dpdk的過程以及過程中踩的坑,希望能幫到后面安裝的人吧。
安裝
這里注一下轉(zhuǎn)載鏈接,我安裝過程大致是參考這這個(gè)博客來的,雖然這個(gè)人寫的看上去也很像轉(zhuǎn)的,我也懶的去找他轉(zhuǎn)的誰的了,好歹是解決了我的很多問題。
那么正式開始:
1. 介紹安裝步驟之前自然要先給出一下配置:
| 屬性 | 內(nèi)容 |
|---|---|
| 平臺 | Linux |
| 環(huán)境 | vmware |
| 系統(tǒng) | CentOS 7 |
| CPU | 4核(2個(gè) * 2核) |
| 內(nèi)存 | 4G |
| 網(wǎng)卡配置 | 2個(gè)以上的虛擬網(wǎng)卡 |
內(nèi)存牽扯到大頁內(nèi)存分配的問題,所以最好是大一些,4G應(yīng)該足夠用了
CPU核數(shù)也會影響轉(zhuǎn)發(fā)效率等因素,所以最好有2核及以上
網(wǎng)絡(luò)接口由于要綁定IGB UIO,所以至少要有兩個(gè)
2. 下載解壓dpdk
有圖形化交互界面自然可以開瀏覽器上官網(wǎng)下,沒有的話就用wget命令吧
注:個(gè)人推薦下18.11,因?yàn)橐郧坝?6.07時(shí)遭遇了謎之bug……
上面是以前寫的,現(xiàn)在建議直接
git clone https://github.com/DPDK/dpdk.git
wget http://fast.dpdk.org/rel/dpdk-18.11.tar.xz
下完了之后同樣,有桌面就點(diǎn)extract選個(gè)地方解壓,沒有的話
tar xf dpdk-18.11.tar.xz
3. 安裝支持dpdk所需的軟件等
來自我之前丟出來的博客:
配置 ifconfig:yum install net-tools.x86_64
安裝 gcc:yum –y install
安裝 gccc++:yum –y install gcc-c++
上面這玩意用不著,下面那個(gè)kernel-header實(shí)際上應(yīng)該也不需要numactl-devel這個(gè)是需要的,視情況python也是需要的
安裝內(nèi)核文件: yum install –y kernel-devel kernel-headers
然后:yum install kernel.x86_64 -y
內(nèi)核文件不更新會出現(xiàn)挺麻煩的問題,如圖:

這個(gè)主要就是build文件里面指向的內(nèi)核路徑和目前的內(nèi)核頭文件不匹配(說實(shí)在的我也不是很懂),按理說更新過內(nèi)核頭文件就不會有問題,出了問題的話解決起來主要就是修改build文件的指向路徑,刪除鏈接之類的,自行Google吧。
4. 安裝dpdk
初學(xué)者的話個(gè)人推薦腳本安裝,反正我是初學(xué)者,所以就用腳本安裝了。
cd Downloads/dpdk-18.11/usertools
這路徑根據(jù)自己的安裝路徑自己改
./dpdk-setup.sh
跑之前記得開啟root權(quán)限,不然可能編譯不了
還有跑之前記得把ifconfig里面隨便關(guān)兩個(gè)接口,不關(guān)綁不上IGB UIO的
假設(shè)我的兩個(gè)虛擬網(wǎng)卡是ens33, ens37,那么
ifconfig ens 33 down
自己虛擬機(jī)里面要關(guān)哪個(gè)用 ifconfig 查看就是了

不down掉的話,綁定會告訴你ok,然而實(shí)際上真相是上面那個(gè)not modifying,也就是失敗了。


按照我給的這個(gè)圖,操作順序大概是15,18,22,24,即
build,插入IGB UIO模塊,分配大頁內(nèi)存以及把網(wǎng)絡(luò)接口綁到IGB UIO上
每次跑腳本都要全部跑一遍,最好按順序來。

輸入15編譯時(shí)遭遇no numa.h
yum install numactl-devel即可
分配大頁內(nèi)存時(shí)可以先看看自己的系統(tǒng)是否是numa結(jié)構(gòu)
我查到的方法是可以# grep -i numa /var/log/dmesg看看結(jié)果就知道是不是了
不是的話,那就是No NUMA configuration found
分配大頁內(nèi)存時(shí)存在虛擬機(jī)大頁內(nèi)存為1G或者2MB的差別
這個(gè)google一下就有辨別方法了,講道理一般都是2MB
所以分配大頁內(nèi)存時(shí)最好至少輸入512,即512 * 2MB
不然……

這個(gè)會在跑例程時(shí)跳出來搞你,解決辦法要么是大頁內(nèi)存開大點(diǎn),要么是虛擬機(jī)內(nèi)存開大點(diǎn)。
5. 如果到這里都還順利的話,可以跑28里面的歷程測試一下效果
注意事項(xiàng)和可能遭遇的問題都寫上面了,要是遇到我沒提到的,那愛莫能助了,google吧。
貼個(gè)testpmd運(yùn)行的結(jié)果:

行啦,到這如果還沒出問題,那么dpdk安裝就算是圓滿完成了。