修改CPU超线程配置以优化实例性能

为提升实例性能,阿里云默认为大多数实例规格启用超线程,将一个物理核心划分为2个逻辑核心。但针对内存密集型或高单核性能需求场景,关闭超线程反而可以优化性能表现,降低软件许可证费用。

适用场景

阿里云默认为大多数实例规格启用了超线程技术(Hyper-Threading),以提升多线程性能。但在某些特定业务场景下,关闭超线程反而有助于提升整体性能或实现成本优化。以下是几种关闭超线程的典型场景。

  • 内存密集性业务场景关闭超线程以提升性能

    对于内存密集性业务,例如缓存服务等,可能并不需要大量并发线程,因此可以关闭超线程,优化算存比,提升业务服务的性能。

  • 高单核性能需求场景关闭超线程以提升性能

    对于高单核性能需求场景,关闭超线程可以减少因线程竞争、上下文切换造成的性能开销。

  • 工业仿真/设计场景关闭超线程以减少软件许可证的费用

    部分工业仿真软件、设计软件以及部分操作系统,软件许可证(License)可能按核心数量计费,减少启用的CPU核心数或关闭超线程以降低物理/逻辑核心数量,可有效节省软件许可证费用。

计费说明

更改CPU选项只会影响启用的核心数或超线程设置,不影响实例总CPU数量。因此,实例规格费用不变,也不会产生额外费用。

使用限制

  • 部分规格族仅可通过API/CLI/SDK等方式设置CPU选项。

  • 仅部分规格的实例支持设置CPU选项(调整启用的CPU数量和超线程设置),且不同规格支持的参数范围有所差异。

    说明

    单击下方对应实例规格链接查看各实例规格支持设置的启用CPU数量(CPU物理核心数)与超线程配置(每核线程数)的取值。

操作步骤

您可以在创建实例时设置CPU选项,也可更改已有实例的CPU选项。

创建实例时设置CPU核心数与超线程设置

您可以在创建实例时,调整启用的CPU核心数和超线程设置。具体操作如下:

控制台

您可以在自定义购买实例时,通过高级选项 > CPU选项设置实例启用的物理核心数与开关超线程。相关配置项说明如下:

  • 每核心线程数:该参数控制是否开启超线程。仅可选择特定值,选择1代表关闭超线程。

  • 核心计数:该参数控制启用的物理核心数。仅可选择特定值。

image

API

您可以在调用RunInstances创建并启动实例时,设置实例启用的物理核心数与开关超线程。相关参数说明如下:

参数名

类型

描述

CpuOptions.Core

integer

实例启用的物理核心数。仅部分规格支持调整,且只能配置特定的值,具体请参见使用限制

CpuOptions.ThreadsPerCore

integer

每核线程数,设置为1代表关闭超线程。仅部分规格支持调整,且仅能配置特定值,具体请参见使用限制

CLI

您可以在通过CLI调用RunInstances创建并启动实例时,设置实例启用的物理核心数(CpuOptions.Core)与超线程配置(CpuOptions.ThreadsPerCore)。CLI命令示例如下:

本命令含义:在创建ecs.g7.8xlarge规格(16个物理CPU核心)的实例时,设置启用10个物理核心(CpuOptions.Core=10),并关闭超线程(CpuOptions.ThreadsPerCore=1)。
aliyun ecs RunInstances --RegionId cn-hangzhou \
--CpuOptions.Core 10 \
--CpuOptions.ThreadsPerCore 1 \
--ImageId aliyun_3_x64_20G_alibase_20250117.vhd \
--InstanceType ecs.g7.8xlarge \
--SecurityGroupId sg-bp1****** \
--VSwitchId vsw-bp1****** \
--SystemDisk.Category cloud_essd \
--Amount 1

核心参数说明如下:

  • CpuOptions.Core:实例启用的物理核心数。仅部分规格支持调整,且只能配置特定的值,具体请参见使用限制

  • CpuOptions.ThreadsPerCore:每核线程数,设置为1代表关闭超线程。仅部分规格支持调整,且仅能配置特定值,具体请参见使用限制

修改已有实例CPU核心数与超线程设置

如果需要调整已有实例的CPU核心数和超线程设置,需停止实例后,才能修改实例的CPU选项。操作步骤如下:

控制台

您可以在控制台通过以下步骤更改已有实例的CPU选项。

  1. 找到并停止需要更改CPU选项的实例。

    1. 访问ECS控制台-实例

    2. 在页面左侧顶部,选择目标资源所在的资源组和地域。地域

    3. 找到待操作实例,单击操作列下停止根据界面提示完成停止操作。

image

  1. 修改实例CPU选项。

    1. 单击image > 更改 CPU 选项

    2. 更改 CPU 选项对话框中,修改配置。配置项说明如下:

      • 实例总核心数:启用的CPU核心数。仅可选择特定值。

      • 每核心线程数:该参数控制是否开启超线程。仅可选择特定值,选择1代表关闭超线程。

    3. 完成配置后单击确定

image

  1. 重启ECS实例。

    单击操作列下的启动按钮。等待实例启动完成。

API

您可以参考以下API调用流程,设置实例启用的物理核心数与开关超线程。

  1. 调用StopInstance停止实例。

  2. 调用ModifyInstanceAttribute更改CPU选项。相关参数说明如下:

    参数名

    类型

    描述

    CpuOptions.Core

    integer

    实例启用的物理核心数。仅部分规格支持调整,且只能配置特定的值,具体请参见使用限制

    CpuOptions.ThreadsPerCore

    integer

    每核线程数,设置为1代表关闭超线程。仅部分规格支持调整,且仅能配置特定值,具体请参见使用限制

  3. 调用StartInstance重新启动实例,应用配置。

CLI

您可以参考以下CLI调用流程,设置实例启用的物理核心数与开关超线程。

  1. 调用StopInstance停止实例。

    aliyun ecs StopInstance --region cn-hangzhou \
    --InstanceId i-bp1******
  2. 调用ModifyInstanceAttribute更改CPU选项。

    本命令含义:修改IDi-bp1******的实例的CPU选项,启用10个物理核心(CpuOptions.Core=10)并关闭超线程(CpuOptions.ThreadsPerCore=1)
    aliyun ecs ModifyInstanceAttribute --region cn-hangzhou \
    --InstanceId i-bp1****** \
    --CpuOptions.Core 10 \
    --CpuOptions.ThreadsPerCore 1

    核心配置项说明:

    • CpuOptions.Core:实例启用的物理核心数。仅部分规格支持调整,且只能配置特定的值,具体请参见使用限制

    • CpuOptions.ThreadsPerCore:每核线程数,设置为1代表关闭超线程。仅部分规格支持调整,且仅能配置特定值,具体请参见使用限制

  3. 调用StartInstance重新启动ECS实例。

    aliyun ecs StartInstance --region cn-hangzhou \
    --InstanceId i-bp1******

相关文档

  • CPU选项修改成功后,建议进行系统稳定性测试,以确保系统能够正常运行。您可以运行一些负载测试或应用场景测试,观察系统的响应和性能表现。

  • ECS实例创建成功后,您可以监测系统的性能指标和资源利用情况,并根据需要进行优化。更多信息,请参见查看实例监控信息

  • 在虚拟化环境、多线程编程、高性能计算等不同场景下,您可以查看和修改CPU拓扑结构CpuOptions.TopologyType)来提高ECS实例性能、提升并行性以及优化资源分配。