环境: Centos 7,dpdk 16.04
虚拟机软件:VMWare WorkStation 10.0.1 build-1379776
cpu: 4个cpu, 每个cpu1个核心
内存:2GB
网卡:intel网卡*2, 用于dpdk试验;另一块网卡用于和宿主系统进行通信(这点需要特别注意)
1.编译dpdk
cd dpdk16.04
make config T=x86_64-native-linuxapp-gcc
make
这种方法编译后,会生成一个build目录,
各个文件夹:
app:测试程序,如test和testpmd
lib:库文件
include:头文件
kmod:编译好的模块,我的编译后有igb_uio.ko和rte_kni.ko.
2、加载系统的UIO驱动以及新生成的dpdk的igb_uio驱动
modprobe uio
insmod build/kmod/igb_uio.ko
3、分配大页内存
mkdir -p /mnt/huge
mount -t hugetblfs nodev /mnt/huge
echo 64 > /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages
4、解除要使用的网卡的驱动绑定
由于系统启动时会自动加载网卡使用的驱动,所以要先解除指定网口对驱动的绑定。
绑定网卡的时候
通过./tools/dpdk_nic_bind.py –usage可以查看该脚本的使用方法。
主要用法如下:
To display current device status:
dpdk_nic_bind.py --status
To bind eth1 from the current driver and move to use igb_uio
dpdk_nic_bind.py --bind=igb_uio eth1
To unbind 0000:01:00.0 from using any driver
dpdk_nic_bind.py -u 0000:01:00.0
To bind 0000:02:00.0 and 0000:02:00.1 to the ixgbe kernel driver
dpdk_nic_bind.py -b ixgbe 02:00.0 02:00.1
5、绑定网卡到指定的驱动
可以不经过第5步直接用新驱动替换当前驱动:
./tools/dpdk_nic_bind.py -b igb_uio eth1
也可以经过第5步后,直接绑定新驱动,可以直接设置多个网卡绑定:
./tools/dpdk_nic_bind.py -b igb_uio 0000:00:08.0 0000:00:09.0
其中0000:00:08.0 和 0000:00:09.0是mac地址
=====================================================
一个好消息是dpdk中集成了一个脚本/tools/setup.sh
其中包含了编译dpdk源代码,设置环境变量比如hugepages,加载内核模块等等
运行setup.h之前需要设置下环境变量 export RTE_SDK=