在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云主机开启网卡多队列和多队列缓存功能