DPDK
安装与踩雷
更新:新的一篇出来啦《DPDK简单介绍》,建议直接看这个。距离这篇隔了挺久了,更新了点别的内容,比这篇可能更与时俱进一点吧?关于DPDK,我个人研究其实根本没多少……以后再写相关内容可能就不知道猴年马月去了
下面是好几个月之前的内容了,dpdk都出到19了,回头新写一篇CentOS + Ubuntu两边的贴在这,不过可能得五月底了,因为我到时候如果交个论文上去查重查到自己写的博客,那估计想死的心都有了……总之敬请期待
下面是原文:
最近由于在学校有相关课题,所以花时间下载安装了一下dpdk
万万没想到dpdk这技术出来也挺久了,但是各种相关内容在网上实在不算很多,尤其是由于每个人配置不同,可能会碰到各种各样诡异的问题
我在这里大概记录一下我安装使用dpdk的过程以及过程中踩的坑,希望能帮到后面安装的人吧。
安装
这里注一下转载链接,我安装过程大致是参考这这个博客来的,虽然这个人写的看上去也很像转的,我也懒的去找他转的谁的了,好歹是解决了我的很多问题。
那么正式开始:
1. 介绍安装步骤之前自然要先给出一下配置:
属性 | 内容 |
---|---|
平台 | Linux |
环境 | vmware |
系统 | CentOS 7 |
CPU | 4核(2个 * 2核) |
内存 | 4G |
网卡配置 | 2个以上的虚拟网卡 |
内存牵扯到大页内存分配的问题,所以最好是大一些,4G应该足够用了
CPU核数也会影响转发效率等因素,所以最好有2核及以上
网络接口由于要绑定IGB UIO,所以至少要有两个
2. 下载解压dpdk
有图形化交互界面自然可以开浏览器上官网下,没有的话就用wget命令吧
注:个人推荐下18.11,因为以前用16.07时遭遇了谜之bug……
上面是以前写的,现在建议直接
git clone https://github.com/DPDK/dpdk.git
wget http://fast.dpdk.org/rel/dpdk-18.11.tar.xz
下完了之后同样,有桌面就点extract选个地方解压,没有的话
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++
上面这玩意用不着,下面那个kernel-header实际上应该也不需要numactl-devel这个是需要的,视情况python也是需要的
安装内核文件: yum install –y kernel-devel kernel-headers
然后:yum install kernel.x86_64 -y
内核文件不更新会出现挺麻烦的问题,如图:
这个主要就是build文件里面指向的内核路径和目前的内核头文件不匹配(说实在的我也不是很懂),按理说更新过内核头文件就不会有问题,出了问题的话解决起来主要就是修改build文件的指向路径,删除链接之类的,自行Google吧。
4. 安装dpdk
初学者的话个人推荐脚本安装,反正我是初学者,所以就用脚本安装了。
cd Downloads/dpdk-18.11/usertools
这路径根据自己的安装路径自己改
./dpdk-setup.sh
跑之前记得开启root权限,不然可能编译不了
还有跑之前记得把ifconfig里面随便关两个接口,不关绑不上IGB UIO的
假设我的两个虚拟网卡是ens33, ens37,那么
ifconfig ens 33 down
自己虚拟机里面要关哪个用 ifconfig 查看就是了
不down掉的话,绑定会告诉你ok,然而实际上真相是上面那个not modifying,也就是失败了。
按照我给的这个图,操作顺序大概是15,18,22,24,即
build,插入IGB UIO模块,分配大页内存以及把网络接口绑到IGB UIO上
每次跑脚本都要全部跑一遍,最好按顺序来。
输入15编译时遭遇no numa.h
yum install numactl-devel
即可
分配大页内存时可以先看看自己的系统是否是numa结构
我查到的方法是可以# grep -i numa /var/log/dmesg
看看结果就知道是不是了
不是的话,那就是No NUMA configuration found
分配大页内存时存在虚拟机大页内存为1G或者2MB的差别
这个google一下就有辨别方法了,讲道理一般都是2MB
所以分配大页内存时最好至少输入512,即512 * 2MB
不然……
这个会在跑例程时跳出来搞你,解决办法要么是大页内存开大点,要么是虚拟机内存开大点。
5. 如果到这里都还顺利的话,可以跑28里面的历程测试一下效果
注意事项和可能遭遇的问题都写上面了,要是遇到我没提到的,那爱莫能助了,google吧。
贴个testpmd运行的结果:
行啦,到这如果还没出问题,那么dpdk安装就算是圆满完成了。