Openstack/KVM云主机开启网卡多队列和多队列缓存功能

在CentOS7及更新版本中,系统默认已经开启网卡多队列和irqbalance服务,网络中断请求虽然不会集中到一个CPU上,但实际上也并不均匀。因此,在对网络负载较高的环境中,建议开启网卡多队列和多队列缓存功能,可以大幅提升云主机的网络性能。

开启网卡多强烈要求CPU绑核,具体请参考文章Openstack云平台性能优化·CPU绑核

网卡多队列

查看云主机的网卡配置,在xml配置文件中:

<interface type='network'>
     <source network='default'/>
        <model type='virtio'/>         
        <driver name='vhost' queues='N'/>
</interface>

其中,1<N<8,一般与CPU核心数量相同,修改N的值并重启云主机,然后在云主机系统中执行以下命令:

# 开启多队列
ethtool -L eth0 combined <N>
# 查询效果
ethtool -l eth0
cat /proc/interrupts

如果出现丢包情况,可在宿主机上执行以下命令查看网络吞吐量:

sar -n DEV 2

确定是网络流量太大之后,在云主机上查看中断信息:

# cat /proc/interrupts | grep PCI | grep virtio
 24:          0          0          0          0   PCI-MSI-edge      virtio0-input.0
 25:       9455          0   21009334    6508148   PCI-MSI-edge      virtio0-output.0
 26:          0          0          0          0   PCI-MSI-edge      virtio0-input.1
 27: 2509695997  652228997          0          0   PCI-MSI-edge      virtio0-output.1
 28:       4059          0          0  104656745   PCI-MSI-edge      virtio0-input.2
 29:        138     498401     147553          0   PCI-MSI-edge      virtio0-output.2

现在,手动绑定软中断:

echo 0  >/proc/irq/24/smp_affinity_list
echo 0  >/proc/irq/25/smp_affinity_list
echo 1  >/proc/irq/26/smp_affinity_list
echo 1  >/proc/irq/27/smp_affinity_list
echo 2  >/proc/irq/28/smp_affinity_list
echo 2  >/proc/irq/29/smp_affinity_list

网卡多队列缓存

修改计算节点nova-computer服务的配置文件nova.conf,在libvirt段中添加如下配置:

# queue_size取值:256,512,1024
rx_queue_size=1024
tx_queue_size=1024

注意:当driver="vhost"时,只支持rx_queue_size,具体请参考libvirt文档

然后修改云主机配置文件xml:

    <interface>
             …

             rx_queue_size=1024 tx_queue_size=1024

             …
    </interface>

回到云主机,通过以下命令查看效果:

ethtool –g <网卡名>

原创文章禁止转载:技术学堂 » Openstack/KVM云主机开启网卡多队列和多队列缓存功能

精彩评论

4+8=

感谢您的支持与鼓励

支付宝扫一扫打赏

微信扫一扫打赏