为ECS实例配置应用性能加速

在购买ECS实例时,可以使用应用性能加速类扩展程序获取特定类型应用的开机即用性能调优服务(某些应用也为ECS存量实例提供性能加速类扩展程序)。本文主要介绍如何安装性能加速应用、应用的性能收益、如何卸载应用以及如何关闭性能加速能力。

  • GPU类型实例:购买部分Alibaba Cloud Linux 3操作系统的倚天实例、AMD实例或Intel实例时,如果勾选特定应用类型(例如Nginx、MySQL、Redis等)的应用性能加速扩展程序,系统会在实例上自动安装所选应用,并同步安装KeenTune工具对应用进行性能调优,使应用获得平均20%左右的性能提升。(Nginx、Spark、视频流x264/265应用场景也在存量ECS实例的详情页提供了安装指定扩展程序的功能)

  • GPU类型实例:购买部分Ubuntu 22.04/24.04操作系统的GPU类型实例时,如果勾选AI增强应用性能加速扩展程序,系统会安装AI增强组件,并同步安装KeenTune工具对应用进行性能调优,在某些AI框架(例如bevformer,openclip等)的训练场景能带来15%左右性能提升。

    GPU场景提供的调优涉及到init_on_alloc=0相关的配置,可能会给多租产品客户带来一定的安全风险。

GPU类型ECS实例

功能说明

创建实例时部署支持性能加速的应用后,KeenTune会根据应用的业务特点进行全栈性能调优。调优集合了阿里云的经验,不仅优化CPU、内存、I/O、网络等领域,还会对应用本身进行调优,保障业务在最佳性能环境中运行。Nginx、MySQL、Redis、PostgreSQL等应用可获得平均20%左右的性能提升,助力您实现降本增效。默认安装的应用版本及性能收益,请参见默认安装的应用版本及性能提升

适用实例

性能加速类扩展程序,仅适用于部分Alibaba Cloud Linux 3操作系统的倚天实例、AMD实例和Intel实例。

实例类型

规格族

操作系统

倚天实例

Alibaba Cloud Linux 3

AMD实例

Intel实例

新购ECS实例

如果您是新购ECS实例,可以在创建ECS实例过程中安装应用并配置性能加速。购买实例之后,只能通过命令行方式关闭性能加速能力或卸载已安装的应用。

安装应用性能加速

  1. 前往ECS控制台-自定义购买

  2. 购买倚天实例、AMD实例或Intel实例时,安装性能加速类扩展程序。

    购买时,请注意以下配置。其他参数配置,请参见自定义购买实例

    倚天实例

    • 实例选择倚天实例。具体规格请参见适用实例

    • 镜像:选择Alibaba Cloud Linux 3镜像。

    • 扩展程序

      image

      • 驱动:如需配置eRDMA,请选中eRDMA驱动,系统会自动安装。

      • 性能加速:选择需要安装的应用(如Nginx、MySQL、Redis等),默认版本及性能提升请参见默认安装的应用版本及性能提升

        说明
        • 支持安装的应用,以页面实际呈现为准。

        • Spark性能加速扩展不支持在创建实例时安装,仅支持在创建实例后在实例详情页安装。

      • 启用eRDMA透明替换(可选):选择Redis且内核版本≥5.10.134-16时,可启用eRDMA透明替换,将传输协议从TCP切换到RDMA,提升网络性能。

        重要
    • 弹性网卡(条件必选):若选中启用eRDMA透明替换,需在弹性网卡处,勾选弹性RDMA接口

    AMD实例

    • 实例选择AMD实例。具体规格请参见适用实例

    • 镜像:选择Alibaba Cloud Linux 3镜像。

    • 扩展程序

      image

      • 驱动:如需配置eRDMA,请选中eRDMA驱动,系统会自动安装。

      • 性能加速:选择需要安装的应用(如Nginx、MySQL、Memcached等),默认版本及性能提升请参见默认安装的应用版本及性能提升

        说明

        支持安装的应用,以页面实际呈现为准。

    Intel实例

    • 实例选择Intel实例。具体规格请参见适用实例

    • 镜像:选择Alibaba Cloud Linux 3镜像。

    • 扩展程序

      image

      • 驱动:如需配置eRDMA,请选中eRDMA驱动,系统会自动安装。

      • 性能加速:仅支持选择安装MySQL应用。

        默认安装的应用版本及性能提升说明请参见默认安装的应用版本及性能提升

    实例创建成功后,系统会自动安装选择的应用,并使用KeenTune针对该应用的业务特点进行全栈性能调优。

关闭性能加速能力

购买实例之后,如果不需要性能加速能力,可以单独卸载KeenTune关闭性能加速,保留已安装的应用。

重要
  • 性能加速主要针对单一应用部署场景,如果您是混合部署场景,建议您在使用混合部署方式之前,参考如下命令关闭性能加速能力。

  • 关闭性能加速能力后,会同步关闭eRDMA透明替换能力。

sudo bash /etc/keentune/target/scripts/set_xps_rps.sh eth0 rps disable
sudo keentune profile rollback
sudo systemctl stop keentune-target keentuned
sudo yum remove keentune-target keentuned

卸载默认安装的应用

购买实例后,如果不需要默认安装的应用程序,可以卸载它们,性能加速能力将保留。重新安装后,程序仍具有性能加速能力。

sudo systemctl stop <APP_Name>
sudo yum remove <APP_Name>
说明

<APP_Name>请替换为实际的应用名称(如Nginx)。

存量ECS实例

如果您是存量的Alibaba Cloud Linux 3操作系统的倚天实例(g8y、c8y、r8y),可以在实例详情页面选择安装或卸载应用性能加速。

  • 支持安装的应用性能加速:x264/x265、Nginx、Spark性能加速扩展。

    重要
    • Spark性能加速扩展功能在邀测中,如需使用,请联系您的商务经理开通。

    • Spark性能加速扩展仅支持ecs.g8y.8xlarge及以上规格和ecs.r8y.8xlarge及以上规格。

    • Spark性能加速扩展不会安装Spark,只提供调优包安装和配置。配置Spark性能加速扩展后,还需修改配置文件,具体操作,请参见配置Spark性能加速扩展

    • Spark性能加速扩展仅支持对Spark 3.3版本进行加速,如需支持其他版本,请您的商务经理开通。

  • 具体操作,请参见安装扩展程序卸载扩展程序

默认安装的应用版本及性能提升

默认安装的应用版本及性能提升的说明如下表所示。

倚天实例

应用

默认安装应用版本

测试工具

主要指标

性能提升比例

Nginx

1.20.1

wrk

rps(requests per second)

  • HTTP/HTTPS小包场景:30%

  • 大包+Gzip场景:12%

MySQL

8.0.26

sysbench

qps(queries per second)

20%(纯读、纯写、混合读写)

Redis

6.0.2

memtier-benchmark

rps(requests per second)

25%(单pipeline小包场景)

PostgreSQL

13.10-1.0.1

sysbench

qps(queries per second)

20%(纯读、纯写、混合读写)

Memcached

1.5.22-2.1

memtier-benchmark

rps(requests per second)

10% ~ 20%(单pipeline小包场景)

x264/x265

ffmpeg 5.0.1+

x264 0.164.x+

x265 3.5+

ffmpeg/x264/x265

fps (frames per second)

x264编码:20%~30%

x265编码:20%~30%

Spark性能加速扩展

3.3

说明

不安装Spark,仅支持对Spark 3.3进行加速。

TPC-DS

s(second)

20%~60%

AMD实例

应用

默认安装应用版本

测试工具

主要指标

性能提升比例

Nginx

1.20.1

wrk

rps(requests per second)

HTTP/HTTPS小包场景:10%

MySQL

8.0.26

sysbench

qps(queries per second)

5%(纯读、纯写、混合读写)

Memcached

1.5.22-2.1

memtier-benchmark

rps(requests per second)

7%(单pipeline小包场景)

Intel实例

应用

默认安装应用版本

测试工具

主要指标

性能提升比例

MySQL

8.0.26

sysbench

qps(queries per second)

7%(纯读、纯写、混合读写)

说明

推荐使用默认安装的应用版本,如果后续您自选应用版本,可能无法获取部分优化。优化范围说明如下:

  • 应用本身性能收益(不使用默认安装的应用版本无法获取),包括应用二进制编译和应用配置的优化。

  • OS相关的性能收益(不使用默认安装的应用版本仍然可以获取),包括boot cmdline、内存配置、网络优化(绑核、XPS、RPS、RFS等)。

配置Spark性能加速扩展

SparkMaster节点和所有Worker节点配置Spark性能加速扩展的详细步骤如下:

  1. SparkMaster节点和所有Worker节点安装Spark性能加速扩展

    1. 在实例详情页,选择定时与自动化任务 > 安装/卸载扩展程序,单击安装扩展程序

      image

    2. 安装扩展程序对话框中,公共扩展选择Spark性能加速扩展,配置如下参数,然后单击下一步,按照界面提示完成操作。

      • worker_number:指Spark集群中Worker节点的数量。

      • worker_type:指Worker节点的实例规格,当前仅支持ecs.g8y.8xlarge及以上规格和ecs.r8y.8xlarge及以上规格。

        image

  2. Spark所有Worker节点配置ZSTD。

    1. 替换jar包。

      sudo mv $SPARK_HOME/jars/zstd-*.jar $SPARK_HOME/jars/zstd-*.jar.bak
      sudo cp /opt/keentune/compress/zstd-*.jar $SPARK_HOME/jars/
    2. 修改/opt/keentune/spark.conf配置。

      • 如配置parquet文件写入过程的压缩方式,请修改以下参数:

        spark.sql.parquet.compression.codec    zstd
        spark.hadoop.parquet.compression.codec.zstd.level 1
        重要

        如果您的Parquet1.13以下版本,建议您参考以下步骤升级到1.13及以上版本,以默认启用ZSTDbuffer pool。关于ZSTD JNI BufferPool的说明,请参见Support ZSTD JNI BufferPool

        wget https://repo1.maven.org/maven2/org/apache/parquet/parquet-column/1.13.1/parquet-column-1.13.1.jar
        wget https://repo1.maven.org/maven2/org/apache/parquet/parquet-common/1.13.1/parquet-common-1.13.1.jar
        wget https://repo1.maven.org/maven2/org/apache/parquet/parquet-encoding/1.13.1/parquet-encoding-1.13.1.jar
        wget https://repo1.maven.org/maven2/org/apache/parquet/parquet-format-structures/1.13.1/parquet-format-structures-1.13.1.jar
        wget https://repo1.maven.org/maven2/org/apache/parquet/parquet-hadoop/1.13.1/parquet-hadoop-1.13.1.jar
        wget https://repo1.maven.org/maven2/org/apache/parquet/parquet-jackson/1.13.1/parquet-jackson-1.13.1.jar
        
        sudo mv $SPARK_HOME/jars/parquet-*.jar $SPARK_HOME/jars/parquet-*.jar.bak
        sudo cp -rf parquet-*.jar $SPARK_HOME/jars
      • 如配置shuffle过程的数据压缩方式,请修改以下参数:

        spark.io.compression.zstd.level 1
        spark.io.compression.codec    zstd
  3. 使用Spark存算分离时,需要配置OSSEndpointAccessKey。

    使用OSS存储时,必须在/opt/keentune/spark.conf文件中配置s3a相关参数。

    spark.hadoop.fs.s3a.endpoint <OSSEndpoint>
    spark.hadoop.fs.s3a.access.key <AccessKey ID>
    spark.hadoop.fs.s3a.secret.key <AccessKey Secret>
  4. SparkMaster节点使用新的配置启动Spark集群。

    您可以使用以下两种方式来启动Spark集群:

    • 直接使用/opt/keentune/spark.conf来重启Spark。

      # 任务提交方式一:
      spark-submit --properties-file=/opt/keentune/spark.conf 
      # 任务提交方式二:
      spark-sql --properties-file=/opt/keentune/spark.conf
    • 参考优化后的配置修改您自己的spark.conf后重启Spark。

      # 任务提交方式一:
      spark-submit --properties-file=${your_spark.conf}
      # 任务提交方式二:
      spark-sql --properties-file=${your_spark.conf}

GPU类型ECS实例

功能说明

创建实例时部署了支持“AI增强”性能加速后,会安装KeenTune会针对AI训练的业务特点进行OSCPU、内存、网络等相关的调优,并且提供CPFS FUSE加速等能力。在某些AI框架的训练场景能带来15%+性能提升,具体的框架、模型版本及性能收益,请参见框架、模型版本及性能

适用实例

实例类型

实例规格族

操作系统

GPU云服务器(gn/vgn/sgn系列)

  • 阿里云公共镜像Ubuntu 22.04

  • 阿里云公共镜像Ubuntu 24.04

弹性裸金属服务器规格

新购ECS实例

如果为新购ECS实例,可以在创建ECS实例过程中安装应用并配置性能加速。购买实例之后,可以在ECS实例详情页的相关位置进行卸载。

安装AI增强扩展程序

  1. 前往ECS控制台-自定义购买

  2. 购买适用的GPU实例时,安装性能加速类扩展程序。购买时,请注意以下配置。其他参数配置,请参见自定义购买实例

image.png

  1. 实例创建成功后,系统会使用KeenTune针对该应用的业务特点进行全栈性能调优,并且提供CPFS FUSE加速等能力。

    安装AI增强扩展程序将使能FUSE加速,对使用文件存储CPFS的场景非常重要,当前仅支持阿里云公共镜像Ubuntu 24.04版本。
重要
  • 系统需要重启后才能保证所有调优项都能够正常生效。

  • AI增强性能加速扩展可以与GPU、eRDMA扩展一起使用。

卸载AI增强扩展程序

ECS实例详情页的已安装扩展列表操作列,单击卸载按钮。

image.png

模型、框架版本及性能提升

在主流GPU实例上进行了openclipbevformer模型应用优化前后的性能测试,测试环境和优化效果如下

测试环境

测试环境

说明

操作系统

阿里云公共镜像Ubuntu 22.04、阿里云公共镜像Ubuntu 24.04

内核版本

5.15.0-144-generic

gcc版本

11.4.0

glibc版本

2.35

keentune

3.2.61

python

3.10.12

pytorch

2.7.0a0+ecf3bae40a.nv25.2

nccl

2.26.2

mmcv-full

1.7.2

mmdet3d

1.0.0rc4

优化效果

实例规格

模型

训练/推理

平均吞吐提升(samples/s)

ebmgn8v.48xlarge

Bevformer

bevformer_base 训练

FP32(10%+)

FP16(8%+)

Openclip

RN50 推理

20%+

RN50 训练

25%+

CPFS FUSE加速效果如下表所示:

CPFS FUSE加速当前仅支持阿里云公共镜像Ubuntu 24.04版本,以下测试数据基于该操作系统版本得出。

性能场景分类

用例场景

性能数据

性能提升

备注

带宽

Buffer读(1M IO)

40GB/s

2.5

原生FUSE约为15GB/s

带宽

Buffer写(1M IO)

40GB/s

10

原生FUSE约为4GB/s

IOPS

Direct读(4k IO)

1,000,000

2.5

原生FUSE约为400,000