如何设置镜像的网卡多队列属性?
操作场景
随着网络IO的带宽不断提升,单核CPU处理网络中断存在瓶颈,不能完全满足网卡的需求,通过开启网卡多队列功能,您可以将弹性云服务器中的网卡中断分散给不同的CPU处理,以满足网卡的需求,从而提升网络PPS和带宽性能。
网卡多队列支持列表
网卡多队列的支持情况和实例规格、虚拟化类型有关,只有同时满足这些要求,云服务器才能开启网卡多队列功能。
- 支持网卡多队列的实例规格请参见“规格清单”。
网卡多队列数为大于1的值,表示支持网卡多队列。
- 虚拟化类型必须为KVM,XEN类型不支持网卡多队列。
操作说明
当前仅支持针对eth网卡开启网卡多队列。
将外部镜像文件导入镜像服务控制台
- 如果为“支持”,执行使用私有镜像创建云服务器。
- 如果为“不支持”,执行为镜像添加网卡多队列标签。
为镜像添加网卡多队列标签
Windows操作系统暂未商用支持网卡多队列,如果对Windows操作系统镜像添加网卡多队列标签,开启网卡多队列功能,可能会引起操作系统启动速度变慢等问题。
用户可以选择以下任意一种方式设置镜像的网卡多队列属性。
方法3:通过API为镜像添加网卡多队列标签hw_vif_multiqueue_enabled
- 获取Token的方法请参考“认证鉴权”。
- “更新镜像信息”的API使用方法请参考“更新镜像信息(OpenStack原生)”。
- 在请求消息头中增加“X-Auth-Token”。
“X-Auth-Token”的取值为步骤1中获取的Token。
- 在请求消息头中增加“Content-Type”。
“Content-Type”取值为application/openstack-images-v2.1-json-patch
请求的URI格式为:
PATCH /v2/images/{image_id}
请求的body体如下所示。[ { "op":"add", "path":"/hw_vif_multiqueue_enabled", "value": true } ]
使用私有镜像创建云服务器
- 区域:必须选择私有镜像所在的区域。
- 镜像:选择“私有镜像”,并在下拉列表中选择需要的镜像。
执行网卡多队列的配置脚本
Windows操作系统暂未商用支持网卡多队列,如果对Windows操作系统镜像添加网卡多队列标签,开启网卡多队列功能,可能会引起操作系统启动速度变慢等问题。
针对Linux操作系统,镜像服务提供了自动开启网卡多队列功能的配置脚本。如果弹性云服务器有多张网卡,执行配置脚本后,所有网卡均会自动开启多队列。
- 登录弹性云服务器,查看网卡支持和已开启的队列数。
ethtool -l 网卡
示例:
[root@localhost ~]# ethtool -l eth0 #查询网卡eth0的队列数 Channel parameters for eth0: Pre-set maximums: RX: 0 TX: 0 Other: 0 Combined: 4 #表示此网卡最多支持设置4个队列 Current hardware settings: RX: 0 TX: 0 Other: 0 Combined: 1 #表示当前已开启的是1个队列
如果返回信息中,两个“Combined”字段取值相同,则表示网卡已开启多队列,无需执行以下操作。
- 执行以下命令,下载配置脚本“multi-queue-hw”。
wget https://ecs-instance-driver.obs.cn-north-1.myhuaweicloud.com/multi-queue-hw
其中,下载地址为:https://ecs-instance-driver.obs.cn-north-1.myhuaweicloud.com/multi-queue-hw
- 执行以下命令,添加执行权限。
- 执行以下命令,将脚本“multi-queue-hw”放到目录/etc/init.d下。
如果出现如下提示信息,请输入“y”。
mv: overwrite '/etc/init.d/multi-queue-hw'?
- 执行以下命令,运行脚本“multi-queue-hw”。
/etc/init.d/multi-queue-hw start
运行脚本后,立即生效。但关机弹性云服务器后,网卡多队列功能将自动失效。
- 为了使网卡多队列功能开机自动生效,各个OS需要增加开机启动配置: