单个CPU处理网络中断存在瓶颈,您可以将ECS实例中的网卡中断分散给不同的CPU处理。经测试,在网络PPS和网络带宽的测试中,与1个队列相比,2个队列最多可提升50%到1倍,4个队列的性能提升更大。 支持多队列的ECS实例规格各种实例规格对网卡多队列的支持现状,详见 实例规格族。 支持多队列的镜像目前,由阿里云官方提供的公共镜像中,以下镜像支持多队列: | 说明 | 镜像是否支持多队列与操作系统的位数无关。 |
- CentOS 6.8/6.9/7.2/7.3/7.4
- Ubuntu 14.04/16.04
- Debian 8.9
- SUSE Linux Enterprise Server 12 SP1
- Windows 2012 R2和Windows 2016:尚未公开支持,可邀测
SUSE Linux Enterprise Server 12 SP2即将上线。 在 Linux ECS实例上配置网卡多队列推荐使用较新的Linux发行版(如CentOS 7.2)配置网卡多队列。 这里以CentOS 7.2为例介绍如何配置网卡多队列,假设是2个队列,网卡interface名称为eth0。 查看网卡是否支持多队列。运行命令:ethtool -l eth0。 设置网卡当前使用多队列。运行命令:ethtool -L eth0 combined 2。 对于有多个网卡的用户,可以对多个网卡分别进行设置: [backcolor=rgba(114, 118, 121, 0.3)]
[root@localhost ~]# ethtool -l eth0Channel parameters for eth0:Pre-set maximums:RX: 0TX: 0Other: 0Combined: 2 # 这一行表示最多支持设置2个队列Current hardware settings:RX: 0TX: 0Other: 0Combined: 1 #表示当前生效的是1个队列[root@localhost ~]# ethtool -L eth0 combined 2 # 设置eth0当前使用2个队列
建议开启irqbalance服务,让系统自动调整网卡中断在多个CPU核上的分配。运行命令:systemctl start irqbalance(CentOS 7.2已默认开启)。 开启多队列后,如果网络性能提升仍不如您的预期,您可以考虑开启RPS特性。参考如下Shell脚本: [backcolor=rgba(114, 118, 121, 0.3)]
#!/bin/bashcpu_num=$(grep -c processor /proc/cpuinfo)quotient=$((cpu_num/8))if [ $quotient -gt 2 ]; thenquotient=2elif [ $quotient -lt 1 ]; thenquotient=1fifor i in $(seq $quotient)docpuset="${cpuset}f"donefor rps_file in $(ls /sys/class/net/eth*/queues/rx-*/rps_cpus)doecho $cpuset > $rps_filedone
在Windows ECS实例上配置网卡多队列 | 说明 | 目前,Windows用户采用邀测的方式。Windows系统使用网卡多队列后其网络性能也会提升,但是提升效果不如Linux系统。 |
如果您使用的是Windows系统,您需要下载并安装驱动程序,才能使用网卡多队列功能。 Windows系统的驱动安装过程如下。 - 提交工单,索取并下载驱动安装包。
- 解压驱动安装包。您会看到几个文件夹,Windows 2012/2016应使用Win8/amd64文件夹下的驱动。
- 升级网卡驱动:
- 选择 设备管理器 > 网络适配器。
- 右键单击 Red Hat VirtIO Ethernet Adapter,选择 更新驱动程序软件。
- 选择本地刚才解压的驱动目录的Win8/admin64目录,更新驱动即可。
- 完成驱动升级后,建议重启Windows系统。
至此,您就可以开始使用网卡多队列功能了。
|