移动云云主机如何查看虚拟网卡多队列?
网卡多队列是一种技术,最初是用来解决网络IO QoS(quality of service)问题的,后来随着网络IO的带宽的不断提升,单核CPU不能完全满足网卡的需求,通过多队列网卡驱动的支持,将各个队列通过中断绑定到不同的核上,以满足网卡的需求。
从测试结果来看,网卡多队列启用后(本测试开启了4个队列),确实提高了网络的带宽(45%左右);在高带宽的情况下UDP包的丢包率增加,延时变低了,但是其耗费了大量的CPU资源。
- 网卡多队列技术概述
当今的高档服务器上运行着更多的处理器,运行在其上的客户机所拥有的vCPU数量也越来越多。在单一的virtio-net队列中,由于网络性能无法随着vCPU的数量动态的伸缩,导致客户机的协议栈规模受限。因为传统的单virtio-net只有单一的TX(发送)和RX(接收)队列,客户机不能并行的传输和接收数据包。
为了解决这个问题,我们需要在nova启动的客户实例中加入网卡多队列的功能。virtio-net的数量根据客户机中vCPU的数量手动伸缩,从而提升系统的网络性能。
在下面这些场景时,网卡多队列提升了系统的性能:
1) 传输的数据包变大;
2) 客户机中同时存在多个网络连接;
3) 客户机有多个vCPU,队列最大数与vCPU数量一致;
然而,网卡多队列受到一系列的限制且带来一些负面效果:
1) 受限于MSI vector:message signal interrupt的数量;
2) 有时会造成对外流量传输性能下降;
3) 增加CPU负载;
4) 多网卡情况下,多队列特性不那么重要。
- 使用须知
1) 目前支持网卡多队列的系统为Linux操作系统kernel内核版本3.1.3以上。移动云提供的默认系统镜像中,使用如下系统镜像可支持开启网卡多队列功能:
√ Centos
√ Red Hat Enterprise Linux
√ Ubuntu
√ BC-Linux
Windows
CentOS 6.4
SuSE 11SP3
SuSE 11SP4
FreeBSD 12.1
3) 如要开启系统的网卡多队列功能,其最大队列数与云主机所在的宿主机的CPU个数有关。当用户虚拟机的vCPU数目小于宿主机的CPU数时,虚拟机网卡最大队列数等于vCPU个数;当用户虚拟机的vCPU数目大于宿主机的CPU数时,虚拟机网卡最大队列数等于宿主机的CPU。用户登录云主机之后也可以查看支持的网卡最大队列数。
4) 历史创建的云主机不支持网卡多队列功能,从2018-11-29日起创建的云主机默认开启虚拟网卡多队列功能,用户可参考操作手册进行配置。
- 如何在linux系统中配置网卡多队列?
1. 为了在实例中启用网卡多队列功能,我们需要做以下操作:
1) 选择一个支持网卡多队列的操作系统,如:centos和ubuntu;
2) 创建一个多vCPU的flavor;
3) 启动实例后,利用ethtool设定队列数目,如下图。
虚拟机的vCPU个数为4,虚拟机启动后,可以看出网卡最大队列数为4,而当前设置的网卡队列数为1。
此时,使用ethtool命令设置当前网卡队列数为4,ethtool -L eth0 combined 4,并使用ethtool-l eth0查看设置结果。
2. 建议开启irqbalance服务,让系统自动调整网络中断在多个CPU核上的分配。
irqbalance安装方法:
#yum -y install glib2-devel //安装glib2-devel
#yum -y install irqbalance //安装irqbalance
# /etc/init.d/irqbalance start //开启irqbalance服务
(# /etc/init.d/irqbalance stop //关闭irqbalance服务)
本文由 vps主机对比评测网 刊发,转载请注明出处