DPDK 虚拟机配置网卡多队列
原文链接:https://blog.csdn.net/et_endeavoring/article/details/120154397
配置网卡多队列
1.修改虚拟机设置
(1)关闭虚拟机,修改虚拟机设置
CPU设置了4个,故后面eth0网卡有4个队列
支持多队列网卡(eth0)和用作ssh的网卡(eth1)不能都是桥接模式,否则请求eth0对应IP时,触发的是eth1的中断。
(2)打开虚拟机配置文件 Ubuntu-1604-server.vmx
修改或添加上面4个字段,ethernet0是多队列网卡,ethernet1是ssh网卡。
vmware的vmxnet3支持网卡多队列。
2.配置网络
上面只添加了两个网卡,故设置两个接口就可以。
sudo vim /etc/network/interfaces,输入
虚拟机网卡接口一般是ensXX,为了方便后面写代码这里改成了ethXX。为了IP不变,ssh网卡配置成静态IP。
3.设置巨页
sudo vim /etc/default/grub
如果是虚拟机:
GRUB_CMDLINE_LINUX改成
如果是物理机:
重启
注意如果CPU核心数小于isolcpus+1会导致开机失败。
4.设置网卡队列的CPU亲缘性
启动虚拟机,ifconfig -a可以看到多了个多队列网卡eth0,但是未启动
启动eth0:ifup eth0
查看网卡队列中断号:cat /proc/interrupts | grep eth
可以看到eth0有4个网卡队列eth0-rxtx-0、eth0-rxtx-1、eth0-rxtx-2、eth0-rxtx-3,对应的中断号分别是56、57、58、59。这里虚拟机有多少个CPU就会有多少个队列,如果你有8个CPU则设置亲缘性时要设置8个。
设置中断号的亲缘性:
root下:
上面操作的目的是将4个网卡队列各自绑定到一个CPU。
5.设置nginx CPU亲缘性
设置每个worker绑定到一个CPU:
cd /usr/local/nginx
vim https://zhuanlan.zhihu.com/p/conf/nginx.conf
启动nginx:https://zhuanlan.zhihu.com/p/sbin/nginx -c https://zhuanlan.zhihu.com/p/conf/nginx.conf
6.另一台机器用wrk压测
wrk连接eth0对应IP
wrk -c100 -d30s -t50 http://192.168.2.199:8888
可以看到eth0有4个队列,每个队列有一个中断号(56-59)。4个队列的中断数一直增加,并且只通知各自绑定的CPU。第2列到第5列分别是CPU0,CPU1,CPU2,CPU3。
注意:
压测客户端(wrk/ab)跟服务器不能是同一台物理机或同一个虚拟机,否则HTTP请求不能触发网卡中断。
可以压测客户端在windows主机,服务器是主机的linux虚拟机。
也可以压测客户端是主机的linux虚拟机A,服务器是主机的linux虚拟机B。
到此配置网卡多队列就完成了。
Dpdk/网络协议栈/vpp/OvS/DDos/NFV/虚拟化/高性能 系统性学习课程Dpdk/网络协议栈/vpp/OvS/DDos/NFV/虚拟化 学习视频教程
DPDK 学习资料、教学视频和学习路线图 分享有需要的可以自行添加学习交流 群973961276 获取