单个CPU处理网络中断存在瓶颈,您可以将DC2实例中的网络中断分散给不同的CPU处理。经测试,在网络PPS和网络带宽的测试中,与1个队列相比,2个队列最多可提升性能达50%到1倍,4个队列的性能提升更大。
支持多队列的镜像
目前,提供的系统镜像中,以下镜像支持多队列:
说明 镜像是否支持多队列与操作系统的位数无关。
系统镜像 | 是否支持多队列 | 是否默认开启多队列 |
---|---|---|
CentOS 6.8/6.9/7.0/7.1/7.2/7.3/7.4/7.5 | 是 | 否 |
Ubuntu 14.04/16.04/18.04 | 是 | 否 |
在DC2实例上配置网卡多队列
本节先介绍如何手动配置网卡多队列,centos 7.3镜像为例,主网卡interface名称为eth0。
1、运行命令 ethtool -l eth0 查看主网卡支持多队列的情况。
root@localhost:~# ethtool -l eth0 Channel parameters for eth0: Pre-set maximums: RX: 0 TX: 0 Other: 0 Combined: 8 # 表示最多支持设置8个队列 Current hardware settings: RX: 0 TX: 0 Other: 0 Combined: 1 #表示当前生效的是1个队列 |
说明 如果两个 Combined 数值相同,则表示已开启支持多队列。
2、运行命令 ethtool -L eth0 combined 8 开启网卡的多队列功能。
[root@localhost ~]# ethtool -L eth0 combined 8 # 设置eth0当前使用8个队列 |
在DC2上配置默认开启网卡多队列
开机启动时开启网卡多队列,需要在rc.local里写入开机启动脚本, 这样可以使网卡启动网卡多队列。
1、添加脚本 /usr/bin/ddmultiqueue
#!/bin/bash nicnames=$(ip link | grep -v 'lo: ' | grep '^[0-9]' | awk -F':' '{print $2}') for nic in $nicnames; do queue=$(ethtool -l $nic | grep Combined: | awk '{print $2}' | head -1) if [ x"$queue" = x ]; then continue fi if [ $queue -gt 1 ];then ethtool -L $nic combined $queue fi done |
2、编辑/etc/rc.local ,在文件加入 /bin/sh /usr/bin/ddmultiqueue
/bin/sh /usr/bin/ddmultiqueue |
3、如果是centos7系统操作系统,需要给/etc/rc.d/rc.local 添加可执行权限
chmod a+x /etc/rc.d/rc.local |