网卡多队列指实例规格支持的最大网卡队列数。单台ECS实例vCPU处理网络中断存在性能瓶颈时,您可以将实例中的网络中断分散给不同的vCPU处理,从而提升性能。
前提条件
操作前请确认以下信息:
- 确认您的实例规格支持网卡多队列功能。支持多队列的实例规格请参见实例规格族,多队列数值大于1时,表示支持网卡多队列。
说明 在使用持久内存型实例规格族re6p的ECS实例中,如果存在网络中断没有分散给不同的vCPU处理的情况,建议您升级最新的
ecs_mq
配置脚本。
- 确认您的镜像支持网卡多队列且默认未开启。阿里云提供的以下公共镜像支持网卡多队列,镜像是否支持网卡多队列与操作系统的位数无关。
说明
- 即使您使用的是列表中提及的操作系统,但因系统更新的原因,部分早期上架的公共镜像可能不支持网卡多队列。建议您使用最新的公共镜像。如果您使用的镜像已默认开启网卡多队列功能,请跳过此章节内容。
- 本文操作仅适用于Linux系统的ECS实例。Windows 2012及以上操作系统的ECS实例会自动配置网卡多队列,您无需配置。
公共镜像 |
是否支持多队列 |
是否默认开启多队列 |
CentOS 6.8/6.9/7.2/7.3/7.4/8.* |
是 |
是 |
Ubuntu 14.04/16.04/18.04/20.04 |
是 |
是 |
Debian 8.9/9.2/10.* |
是 |
是 |
SUSE Linux Enterprise Server 12 SP1/12 SP2/15 SP1/15 SP2 |
是 |
是 |
Red Hat Enterprise Linux 6.9/7.4/7.5 |
是 |
否 |
OpenSUSE 42.3/15.* |
是 |
否 |
Alibaba Cloud Linux 2.1903 |
是 |
是 |
Windows 2012及以上 |
是 |
是 |
背景信息
网卡多队列是一种技术手段,可以解决网络I/O带宽QoS(Quality of Service)问题。网卡多队列驱动将各个队列通过中断绑定到不同的核上,从而解决网络I/O带宽升高时单核CPU的处理瓶颈,提升网络PPS和带宽性能。经测试,在相同的网络PPS和网络带宽的条件下,与1个队列相比,2个队列最多可提升性能达50%到100%,4个队列的性能提升更大。
自动配置
- 远程连接ECS实例。
- 下载自动配置脚本
ecs_mq
。
- 解压脚本。
1 | tar -xzf ecs_mq_latest.tgz
|
- 更换工作路径。
- 运行脚本。
不同的镜像版本的命令格式不同,例如CentOS 7.6镜像运行
bash install.sh centos 7
。
1 | bash install.sh <系统名称> <系统主版本号>
|
- 启动服务。
手动配置
本节以CentOS 7.6镜像为例,假设ECS实例主网卡名称为eth0,辅助弹性网卡名称为eth1,介绍如何手动配置网卡多队列。
- 运行
ethtool -l eth0
命令查看主网卡支持多队列的情况。
1 2 3 4 5 6 7 8 9 10 11 12 | [root @localhost ~]# <kbd class = "ph userinput" id= "userinput-muc-at4-0io" >ethtool -l eth0</kbd>
Channel parameters for eth0:
Pre-set maximums:
RX: 0
TX: 0
Other: 0
Combined: 2 # 表示最多支持设置 2 个队列
Current hardware settings:
RX: 0
TX: 0
Other: 0
Combined: 1 # 表示当前生效的是 1 个队列
|
说明 如果返回信息中,两个
Combined字段取值相同,则表示弹性网卡已开启支持多队列。
- 运行
ethtool -L eth0 combined 2
命令开启网卡的多队列功能。
此命令作用是设置主网卡eth0使用两个队列。
1 | [root @localhost ~]# <kbd class = "ph userinput" id= "userinput-ej3-ksz-az4" >ethtool -L eth0 combined 2 </kbd>
|
- 设置辅助网卡的多队列。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | # 查看辅助网卡eth1支持多队列的情况
[root @localhost ~]# <kbd class = "ph userinput" id= "userinput-og4-cpa-5tz" >ethtool -l eth1</kbd>
Channel parameters for eth1:
Pre-set maximums:
RX: 0
TX: 0
Other: 0
Combined: 4 # 表示最多支持设置 4 个队列
Current hardware settings:
RX: 0
TX: 0
Other: 0
Combined: 1 # 表示当前生效的是 1 个队列
# 设置辅助网卡eth1使用 4 个队列
[root @localhost ~]# <kbd class = "ph userinput" id= "userinput-sho-tbl-8gj" >ethtool -L eth1 combined 4 </kbd>
|