我的知乎专栏:https://www.zhihu.com/column/c_1341027586424610816
背景信息
网卡多队列技术是指将各个队列通过中断绑定到不同的核上,从而解决网络I/O带宽升高时单核CPU的处理瓶颈,提升网络PPS和带宽性能。经过测试,在相同的网络PPS和网络带宽的条件下,与1个队列相比,2个队列最多可提升性能达50%到100%,4个队列的性能提升更大。
如何开启
在Openstack平台里,只需为镜像添加hw_vif_multiqueue_enabled=true属性,这样创建的新虚机,网卡多队列就开启了。
运行命令
glance image-update <imageid> --property hw_vif_multiqueue_enabled=true
镜像添加上属性后,再创建新虚机,网卡多队列就开启了。
网卡多队列的个数上限
对镜像使能hw_vif_multiqueue_enabled属性后,创建出来的虚机应用网卡多队列的个数,在L版和S版Openstack里不同:
- L版openstack,网卡开启的多队列数等于虚机套餐的cpu核数
def _get_virtio_mq_settings(self, image_meta, flavor):
"""A methods to set the number of virtio queues,
if it has been requested in ex tra specs.
"""
driver = None
vhost_queues = None
if not isinstance(image_meta, objects.ImageMeta):
image_meta = objects.ImageMeta.from_dict(image_meta)
img_props = image_meta.properties
if img_props.get('hw_vif_multiqueue_enabled'):
driver = 'vhost'
vhost_queues = flavor.vcpus
return (driver, vhost_queues)
- S版openstack的nova代码nova/virt/libvirt/vif.py里增加了对内核的判断,如果kernel_version=3.x,多队