一、虚拟机设置多队列网卡
找到虚拟机所在文件夹目录,找到虚拟机的vmx文件,将网卡类型:ethernet序号.virtualDev = "e1000"
改为ethernet序号.virtualDev = "vmxnet3" 。
二、检查系统环境是否满足要求
检查内核版本需大于2.6.33,检查glibc的版本需大于2.7
三、开始编译dpdk
1、官网下载dpdk源码
2、安装meson 和 ninja工具
pip3 install meson ninja
3、编译测试
tar -xvf dpdk-20.11.1.tar.xz
cd dpdk-stable-20.11.1/
meson -Dexampls=all build
cd build
ninja install
四、配置大页内存
1、安装libhugetlbfs库
yum install libhugetlbfs
2、设置大页内存
五、加载驱动
igb_uio驱动和vfio-pci驱动使用一个即可,推荐使用vfio-pci。
1、首先查看是否已经挂载vfio-pci驱动:lsmod | grep vfio
若无显示,则没有挂载,需要挂载驱动
2、修改grub配置,开启vfio支持:
- vim /etc/default/grub
- 在GRUB_CMDLINE_LINUX行最后添加:iommu=pt intel_iommu=on
- grub2-mkconfig -o /boot/grub2/grub.cfg #更新配置
- reboot #重启虚拟机
3、验证配置是否修改成功:#若有指令,则修改成功
cat /proc/cmdline | grep intel_iommu=on
cat /proc/cmdline | grep iommu=pt
4、加载网卡驱动
modprobe vfio
modprobe vfio-pci
5、查看驱动是否加载成功:
lsmod | grep vfio
lsmod | grep vfio_pci
sudo ifconfig ens192 down
将刚刚关闭的网卡绑定到vifo-pci驱动上
python3 usertools/dpdk-devbind.py --bind=vfio-pci ens192
cd usertools
./dpdk-devbind.py -s
六、运行测试用例
sudo build/examples/dpdk-helloworld -l 1-3 -n 3
# 输出如下
EAL: Detected 4 lcore(s)
EAL: Detected 1 NUMA nodes
EAL: Detected static linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'VA'
EAL: Probing VFIO support...
EAL: VFIO support initialized
EAL: using IOMMU type 1 (Type 1)
EAL: Ignore mapping IO port bar(3)
EAL: Probe PCI driver: net_vmxnet3 (15ad:7b0) device: 0000:0b:00.0 (socket 0)
EAL: No legacy callbacks, legacy socket not created
hello from core 2
hello from core 3
hello from core 1