多队列网卡环境初始化
系列 - DPDK 原理与实践
目录
1 基于WSL搭建(未实现)
一、步骤总结
- 创建虚拟网卡(使用hyper-v管理器创建虚拟交换设备)
- 将虚拟网卡绑定到WSL(有开源组件能够将多网卡对WSL进行绑定)
- 需要设置网卡类型,用于多队列支持(暂无头绪) 1)可尝试虚拟机队列(VMQ),目前不在WSL的可配置范围内
由于wsl虚拟网卡相关资料较少,最后迁移到VMware上 WSL,VMware需要同时使用时,VMware的版本需要高一些,实测12.x不兼容,16.x能够兼容
2 基于VMware搭建
一、配置修改
1)修改虚拟机的*.vmx文件进行网卡类型配置
# 默认是 e1000,修改为 vmxnet3
ethernet1.virtualDev = "vmxnet3"
# 通过设备编号确定网卡设备
ethernet1.pciSlotNumber = "160"
2)通过命令ethtool -i ens160查看是否支持vmxnet3驱动
lilac@lilac:~$ ethtool -i ens160
driver: vmxnet3
version: 1.6.0.0-k-NAPI
3)通过命令cat /proc/interrupts | grep ens160查看是否支持多队列
lilac@lilac:~$ cat /proc/interrupts | grep ens160
56: PCI-MSI 1572864-edge ens160-rxtx-0
57: PCI-MSI 1572865-edge ens160-rxtx-1
58: PCI-MSI 1572866-edge ens160-rxtx-2
59: PCI-MSI 1572867-edge ens160-rxtx-3
60: PCI-MSI 1572868-edge ens160-rxtx-4
61: PCI-MSI 1572869-edge ens160-rxtx-5
62: PCI-MSI 1572870-edge ens160-rxtx-6
63: PCI-MSI 1572871-edge ens160-rxtx-7
64: PCI-MSI 1572872-edge ens160-event-8
如果你此时已经OK了,下面部分就可以略过…
二、故障排查 当VMware Tools没有正确安装时,vmxnet3驱动不会自动加载。如果虚拟机的VMware Tools无法成功安装,可以尝试以下方法。
1)查看系统是否含有vmxnet3的模块及依赖
lilac@lilac:~$ modprobe vmxnet
modprobe: FATAL: Module vmxnet not found in directory /lib/modules/5.15.0-105-generic
lilac@lilac:~$ modprobe vmxnet3
我的系统中不包含vmxnet,包含vmxnet3,故没有错误提示。
2)配置模块开机时自启动
echo "vmxnet3" >> /etc/modules
或
touch /etc/modules-load.d/vmxnet3.conf
echo "vmxnet3" >> /etc/modules-load.d/vmxnet3.conf
上述两种方式都可以配置,区别在于/etc/modules-load.d目录下,可以将不同的模块加载需求分隔在不同的文件中,更灵活,适合更复杂的配置场景。
3)查看是否成功加载
lilac@lilac:~$ lsmod | grep vmxnet3
vmxnet3 69632 0
4)还可以检查一下虚拟机的启动日志
lilac@lilac:~$ sudo dmesg | grep vmxnet3
[ 3.250013] VMware vmxnet3 virtual NIC driver - version 1.6.0.0-k-NAPI
[ 3.258411] vmxnet3 0000:03:00.0: # of Tx queues : 8, # of Rx queues : 8
[ 3.267111] vmxnet3 0000:03:00.0 eth0: NIC Link is Up 10000 Mbps
[ 3.273888] vmxnet3 0000:0b:00.0: # of Tx queues : 8, # of Rx queues : 8
[ 3.281820] vmxnet3 0000:0b:00.0 eth1: NIC Link is Up 10000 Mbps
[ 3.393161] vmxnet3 0000:0b:00.0 ens192: renamed from eth1
[ 3.431638] vmxnet3 0000:03:00.0 ens160: renamed from eth0
[ 164.117435] vmxnet3 0000:0b:00.0 ens192: intr type 3, mode 0, 9 vectors allocated
[ 164.117723] vmxnet3 0000:0b:00.0 ens192: NIC Link is Up 10000 Mbps
[ 164.123494] vmxnet3 0000:03:00.0 ens160: intr type 3, mode 0, 9 vectors allocated
[ 164.123700] vmxnet3 0000:03:00.0 ens160: NIC Link is Up 10000 Mbps
此时已经大功告成了!