测试环境使用VMware Fusion虚拟机,虚拟机主要配置:一个双核CPU、两块网卡、操作系统为CentOS 7
ifconfig可以看到两块网卡(ens33、ens37)
编译DPDK
执行/root/dpdk-17.08/usertools/dpdk-setup.sh后可以看到下图
编译中可能遇到的问题及解决方法
| 问题 | 解决办法 |
|---|---|
| 虚拟机不能联网 | vi /etc/sysconfig/network-scripts/ifcfg-ens33 修改ONBOOT:no改为yes service network start |
| 下载DPDK | yum -y install wget wget http://fast.dpdk.org/rel/dpdk-17.08.tar.gz |
| 找不到.config_tmp文件 | vi .config_tmp |
| 找不到cc命令 | yum -y install gcc |
| 找不到numa.h文件 | yum -y install numactl-devel |
| 找不到build文件 | yum -y install kernel-devel cd /lib/modules/3.10.0-514.e17.x86_64 rm -rf build ln -s /usr/src/kernels/3.10.0-514.e17.x86_64/ build |
| DESTDIR未定义 | vi /root/dpdk-17.08/usertools/dpdk-setup.sh 修改make install命令:增加DESTDIR=/root/dpdk |
| EAL: Error reading from file descriptor | vi root/dpdk-17.08/lib/librte_eal/linuxapp/igb_uio/igb_uio.c 注释以下3行: if (pci_intx_mask_supported(dev)) { } dev_notice(&dev->dev, “PCI INTX mask not supported\n”); |
编译成功后可以看到下图
主要步骤
| 输入 | 操作 |
|---|---|
| 13 | 编译DPDK |
| 16 | 插入igb_uio |
| 20 | 设置大页,输入1024 |
| 22 | 绑定网卡,输入02:01.0、02:05.0(双网卡) |
| 26 | testpmd测试,输入0x03(双核) |
测试testpmd
启/停:start/stop
此时ifconfig看不到两块网卡了,因为两块网卡不归ixgbe驱动管理了,而是归igb_uio驱动管理
运行helloworld
在dpdk-17.08目录下执行以下命令
| 步骤 | 命令 |
|---|---|
| 编译DPDK | make install T=x86_64-native-linuxapp-gcc DESTDIR=/root/dpdk |
| 插入igb_uio | modprobe uio insmod x86_64-native-linuxapp-gcc/kmod/igb_uio.ko |
| 设置大页 | echo 1024 > /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages |
| 绑定网卡 | python usertools/dpdk-devbind.py –bind=igb_uio 02:01.0 python usertools/dpdk-devbind.py –bind=igb_uio 02:05.0 |
| 设置环境变量 | export RTE_SDK=/root/dpdk-17.08 export RTE_TARGET=x86_64-native-linuxapp-gcc |
| 运行helloworld | cd examples/helloworld make ./build/helloworld -c 3 -n 2 |
运行成功后可以看到下图
参考资料
http://www.cnblogs.com/zzqcn/p/4024205.html
http://dpdk.org/doc/guides/linux_gsg/sys_reqs.html#compilation-of-the-dpdk