阿里云服务器虚拟网卡多队列使用和配置

阿里云代金券 阿里云知识 2年前 (2020-10-18) 186次浏览 0个评论 扫描二维码

网卡多队列是一种技术,最初是用来解决网络IO QoS(quality of service)问题的,后来随着网络IO的带宽的不断提升,单核CPU不能完全处满足网卡的需求,通过多队列网卡驱动的支持,将各个队列通过中断绑定到不同的核上,以满足网卡的需求。
从测试结果来看,网卡多队列启用后(本测试开启了4个队列),确实提高了网络的带宽(45%左右);在高带宽的情况下UDP包的丢包率增加,延时变低了,但是其耗费了大量的CPU资源。
1.网卡多队列概述
2.使用须知
3.如何在linux系统中配置网卡多队列?

网卡多队列技术概述
当今的高档服务器上运行着更多的处理器,运行在其上的客户机所拥有的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
2) 以下操作系统阿里云服务器不支持虚拟网卡多队列功能。
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服务)

喜欢 (0)
阿里云最新优惠活动,点击查看
腾讯云最新优惠活动,点击查看
腾讯云香港及海外免备案服务器优惠活动,点击查看
华为云服务器本周优惠活动,点击查看

文章评论已关闭!