文档首页/ 镜像服务 IMS/ 常见问题/ 镜像优化类/ 如何设置镜像的网卡多队列属性?
更新时间:2024-10-25 GMT+08:00

如何设置镜像的网卡多队列属性?

操作场景

随着网络IO的带宽不断提升,单核CPU处理网络中断存在瓶颈,不能完全满足网卡的需求,通过开启网卡多队列功能,您可以将弹性云服务器中的网卡中断分散给不同的CPU处理,以满足网卡的需求,从而提升网络PPS和带宽性能。

网卡多队列支持列表

网卡多队列的支持情况和实例规格、虚拟化类型有关,只有同时满足这些要求,云服务器才能开启网卡多队列功能。

  • 支持网卡多队列的实例规格请参见“实例类型”。

    网卡多队列数为大于1的值,表示支持网卡多队列。

  • 虚拟化类型必须为KVM,XEN类型不支持网卡多队列。

操作说明

如果云服务器满足规格和虚拟化类型要求,需要按照如下流程开启网卡多队列:

当前仅支持针对eth网卡开启网卡多队列。

  1. 将外部镜像文件导入镜像服务控制台
  2. 为镜像添加网卡多队列标签
  3. 使用私有镜像创建云服务器
  4. 执行网卡多队列的配置脚本

将外部镜像文件导入镜像服务控制台

将外部镜像文件导入镜像服务控制台,详细操作请参见“注册镜像(Linux)”。导入完成后,在镜像详情页查看“网卡多队列”参数取值。

为镜像添加网卡多队列标签

Windows操作系统暂未商用支持网卡多队列,如果对Windows操作系统镜像添加网卡多队列标签,开启网卡多队列功能,可能会引起操作系统启动速度变慢等问题。

用户可以选择以下任意一种方式设置镜像的网卡多队列属性。

方式1
  1. 登录IMS控制台。
    1. 登录管理控制台。
    2. 选择“计算 > 镜像服务”。

      进入镜像服务页面。

  2. 单击“私有镜像”页签,在对应镜像所在行的“操作”列下,单击“修改”。
  3. 设置镜像的网卡多队列属性。
方式2
  1. 登录IMS控制台。
    1. 登录管理控制台。
    2. 选择“计算 > 镜像服务”。

      进入镜像服务页面。

  2. 单击“私有镜像”页签,在镜像列表中,单击镜像名称,进入镜像详情页面。
  3. 单击右上角的“修改”,在弹出的“修改镜像”对话框中,设置镜像的网卡多队列属性。

方法3:通过API为镜像添加网卡多队列标签hw_vif_multiqueue_enabled

  1. 获取Token的方法请参考“认证鉴权”。
  2. “更新镜像信息”的API使用方法请参考“更新镜像信息(OpenStack原生)”。
  3. 在请求消息头中增加“X-Auth-Token”。

    “X-Auth-Token”的取值为步骤1中获取的Token。

  4. 在请求消息头中增加“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
             } 
     ]

使用私有镜像创建云服务器

使用注册好的私有镜像创建云服务器,详细操作请参见“自定义购买ECS”。在配置参数时,需要注意以下两点:
  • 区域:必须选择私有镜像所在的区域。
  • 镜像:选择“私有镜像”,并在下拉列表中选择需要的镜像。

执行网卡多队列的配置脚本

Windows操作系统暂未商用支持网卡多队列,如果对Windows操作系统镜像添加网卡多队列标签,开启网卡多队列功能,可能会引起操作系统启动速度变慢等问题。

针对Linux操作系统,镜像服务提供了自动开启网卡多队列功能的配置脚本。如果弹性云服务器有多张网卡,执行配置脚本后,所有网卡均会自动开启多队列。

  1. 登录弹性云服务器,查看网卡支持和已开启的队列数。

    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”字段取值相同,则表示网卡已开启多队列,无需执行以下操作。

  2. 执行以下命令,下载配置脚本“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

  3. 执行以下命令,添加执行权限。

    chmod +x multi-queue-hw

  4. 执行以下命令,将脚本“multi-queue-hw”放到目录/etc/init.d下。

    mv multi-queue-hw /etc/init.d

    如果出现如下提示信息,请输入“y”。

    mv: overwrite '/etc/init.d/multi-queue-hw'?
  5. 执行以下命令,运行脚本“multi-queue-hw”。

    /etc/init.d/multi-queue-hw start

    运行脚本后,立即生效。但关机弹性云服务器后,网卡多队列功能将自动失效。

  6. 为了使网卡多队列功能开机自动生效,各个OS需要增加开机启动配置:
    • CentOS/Red Hat/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