华为云服务器开启网卡多队列功能_云淘科技
操作场景
随着网络IO的带宽不断提升,单核CPU处理网络中断存在瓶颈,不能完全满足网卡的需求,通过开启网卡多队列功能,您可以将弹性云服务器中的网卡中断分散给不同的CPU处理,以满足网卡的需求,从而提升网络PPS和带宽性能。
假设以下场景所述的弹性云服务器满足规格和虚拟化类型要求:
使用网卡多队列支持列表中的公共镜像创建的弹性云服务器,默认已开启网卡多队列,无需执行本节操作。
对于私有镜像场景,如果您的外部镜像文件的操作系统在网卡多队列支持列表范围内,需要按照如下流程开启网卡多队列:
将外部镜像文件导入镜像服务控制台。
为私有镜像添加网卡多队列标签。
使用私有镜像创建弹性云服务器。
执行网卡多队列的配置脚本。
云服务器开启网卡多队列功能后,如果后续有新增或删除网卡,切换VPC等操作,需要重新对云服务器设置网卡多队列,详细操作请参考执行网卡多队列的配置脚本。
网卡多队列支持列表
网卡多队列的支持情况和实例规格、虚拟化类型、镜像的操作系统有关,只有同时满足这些要求,弹性云服务器才能开启网卡多队列功能。
支持网卡多队列的实例规格请参见“规格清单”。
网卡多队列数为大于1的值,表示支持网卡多队列。
虚拟化类型必须为KVM。
表2所列的Linux公共镜像,支持网卡多队列。
Windows操作系统弹性云服务器的驱动pvdriver有一套动态调整网卡队列数的策略,会根据vCPU数计算队列数并进行动态调整,因此无需对windows网卡多队列的队列数进行设置。
Windows 2008公共镜像已下线,可通过私有镜像支持。
Linux操作系统弹性云服务器建议将操作系统内核版本升级至2.6.35及以上,否则不支持网卡多队列。
建议您使用命令uname -r查询内核版本,如果低于2.6.35请联系技术支持升级内核。
镜像 |
是否支持多队列 |
是否默认开启多队列 |
---|---|---|
Windows Server 2008 R2 Standard/Enterprise/DataCenter 64bit |
是 |
是 |
Windows Server 2008 Enterprise SP2 64bit |
是 |
是 |
Windows Server 2008 Web R2 64 bit |
是 |
是 |
Windows Server 2008 R2 Enterprise 64bit_WithGPUdriver |
是 |
是 |
Windows Server 2012 R2 Standard 64bit_WithGPUdriver |
是 |
是 |
Windows Server 2012 R2 Standard/DataCenter 64 bit |
是 |
是 |
Windows Server 2016 Standard/DataCenter 64 bit |
是 |
是 |
Windows Server 2019 DataCenter 64 bit |
是 |
是 |
镜像 |
是否支持多队列 |
是否默认开启多队列 |
---|---|---|
Ubuntu 14.04/16.04/18.04/20.04 server 64bit |
是 |
是 |
OpenSUSE 42.2/15.* 64bit |
是 |
是 |
SUSE Enterprise 12 SP1/SP2 64bit |
是 |
是 |
CentOS 6.8/6.9/7.*/8.* 64bit |
是 |
是 |
Debian 8.0.0/8.8.0/8.9.0/9.0.0/10.0.0/10.2.0 64bit |
是 |
是 |
Fedora 24/25/30 64bit |
是 |
是 |
EulerOS 2.2/2.3/2.5 64bit |
是 |
是 |
将外部镜像文件导入镜像服务控制台
将外部镜像文件导入镜像服务控制台,详细操作请参见《镜像服务用户指南》中“注册镜像”章节。导入完成后,在镜像详情页查看“网卡多队列”参数取值。
如果为“支持”,执行使用私有镜像创建弹性云服务器。
如果为“不支持”,执行为镜像添加网卡多队列标签。
为镜像添加网卡多队列标签
Windows操作系统暂未商用支持网卡多队列,如果对Windows操作系统镜像添加网卡多队列标签,开启网卡多队列功能,可能会引起操作系统启动速度变慢等问题。
用户可以选择以下任一种方式设置镜像的网卡多队列属性。
方式1:
登录管理控制台。
单击“”,选择“计算 > 镜像服务”。
单击“私有镜像”页签,在对应镜像所在行的“操作”列下,单击“修改”。
设置镜像的网卡多队列属性。
方式2:
登录管理控制台。
单击“”,选择“计算 > 镜像服务”。
单击“私有镜像”页签,在镜像列表中,单击镜像名称,进入镜像详情页面。
单击右上角的“修改”,在弹出的“修改镜像”对话框中,设置镜像的网卡多队列属性。
方法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" } ]
支持网卡多队列修改样例如图1所示。
图1 支持网卡多队列修改样例
使用私有镜像创建弹性云服务器
使用注册好的私有镜像创建弹性云服务器。在配置参数时,需要注意以下两点:
区域:必须选择私有镜像所在的区域。
镜像:选择“私有镜像”,并在下拉列表中选择需要的镜像。
执行网卡多队列的配置脚本
Windows操作系统使用的半虚拟化驱动pvdriver有一套动态调整网卡队列数的策略,会根据vCPU数计算队列数并进行动态调整,因此无需对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 下载地址URL
下载地址:https://ecs-instance-driver.obs.cn-north-1.myhuaweicloud.com/multi-queue-hw
执行以下命令,添加执行权限。
chmod +x multi-queue-hw
执行以下命令,将脚本“multi-queue-hw”放到目录/etc/init.d下。
mv multi-queue-hw /etc/init.d
执行以下命令,运行脚本“multi-queue-hw”。
/etc/init.d/multi-queue-hw start
运行脚本后,立即生效。但关机后,网卡多队列功能将自动失效。
为了使网卡多队列功能开机自动生效,各个OS需要增加开机启动配置:
CentOS/Redhat/Fedora/EulerOS/Suse/OpenSuse使用如下命令,增加开机启动项,使网卡多队列配置开机:
chkconfig multi-queue-hw on
Ubuntu使用如下命令,增加开机启动项:
update-rc.d multi-queue-hw defaults 90 10
Debian使用如下命令,增加开机启动项:
systemctl enable multi-queue-hw
查看网卡队列数
开启网卡多队列功能
登录弹性云服务器。
执行以下命令,查看网卡支持和已开启的队列数。
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: 4 #表示当前开启的是4个队列
父主题: 网卡
内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家