dpdk安装踩坑实录

本次安装的版本是dpdk18.02.2,在ubuntu 14.04.5上安装,内核版本为4.4.0-31-generic。

系统配置

需要:

  • python、libnuma-dev等库(libnuma-dev直接通过apt-get install libnuma-dev
  • 大页内存(并mount)

dpdk的安装与下载

1
2
3
4
5
6
wget http://fast.dpdk.org/rel/dpdk-18.02.2.tar.xz
tar -xvf dpdk-18.02.2.tar.xz
cd dpdk-stable-18.02.2
echo export RTE_SDK=$(pwd) >> ~/.bashrc
echo export RTE_TARGET=x86_64-native-linuxapp-gcc >> ~/.bashrc
source ~/.bashrc

如果需要用到vhost-user驱动,要修改config/common_base,另其中的CONFIG_RTE_LIBRTE_VHOST=y

安装dpdk

1
2
3
make config T=$RTE_TARGET
make T=$RTE_TARGET -j8
make install T=$RTE_TARGET

配置大页内存

1
2
3
4
5
6
7
8
9
10
11
12
13
# 修改/etc/default/grub
# 在 GRUB_CMDLINE_LINUX_DEFAULT= 项中添加
# default_hugepagesz=1GB hugepagesz=1G hugepages=8
sudo update-grub

mkdir -p /mnt/huge_1GB

# 可以直接mount,但每次重启都要重新配置
# 方法我就不写了

# 也可以让重启后有效
# vim /etc/fstab
nodev /mnt/huge_1GB hugetlbfs pagesize=1GB 0 0

加载驱动

1
2
sudo modprobe uio
sudo insmod $RTE_SDK/x86_64-native-linuxapp-gcc/kmod/igb_uio.ko

绑定端口

1
2
3
4
5
6
# 查看网卡信息,确定要绑定的网卡
$RTE_SDK/usertools/dpdk-devbind.py -s

# 绑定网卡
sudo $RTE_SDK/usertools/dpdk-devbind.py --bind=igb_uio 0000:82:00.0
# 后面的参数写-s出来的网卡信息最左边一行,当然也可以写名字之类的

一些注意事项

按上面方法配置,大页内存不会因为重启而要重新配置,但是模块和端口需要重新配置,~/.bashrc也需要重新source