一台ECS实例的CPU选项由CPU物理核心数和每核线程数决定,部分ECS实例规格支持通过API RunInstances购买实例时自定义设置CPU选项。

CPU与vCPU

CPU是中央处理器,一个CPU可以包含若干个物理核,通过超线程HT(Hyper-Threading)技术可以将一个物理核变成两个逻辑处理核。vCPU(virtual CPU)是ECS实例的虚拟处理核。

阿里云ECS的超线程的实现基于英特尔 ® HT技术,允许在一个物理核上并发地运行两个线程(Thread),一个线程可以视为一个vCPU。更多详情,请参见英特尔HT技术

下表从多个维度对比了ECS实例的CPU选项参数。

CPU选项 API参数 作用 适用场景 适用的实例规格
CPU物理核心数 CpuOptions.Core 决定启用的CPU物理核心数。 减少启用的CPU物理核心数,提高内存配比,收费对象减少也可以降低软件许可费支出。 请参见下文CPU物理核心数与线程数取值表
每核线程数 CpuOptions.ThreadsPerCore 决定CPU是否开启超线程。

vCPU数量=CPU物理核心数*每核线程数。

通常,ECS实例规格能应对常见的工作负载。在以下场景中,您可以考虑关闭超线程:
  • 部分HPC场景,关闭超线程可能获得更好的性能表现。
  • 在内存密集型业务场景中,通过关闭超线程减少vCPU数,提高内存配比,收费对象减少也可以降低软件许可费支出。

计费

自定义CPU选项不会产生额外计费。

使用限制

  • 支持自定义CPU选项的实例规格族如下,各规格族的CPU选项相关数据请参见CPU物理核心数与线程数取值表
    • hfg7、hfc7、hfr7
    • g6e、c6e、r6e
    • g6、c6、r6
    • hfg6、hfc6、hfr6
  • 您只能在创建ECS实例时自定义CPU选项,成功创建实例后不允许修改。
  • 一台ECS实例如果已经自定义了CPU选项,操作了升降配后,这台ECS实例的CPU选项会被置为默认的CPU选项。
  • 一台ECS实例可提供的物理核由实例规格决定,您可以在取值范围内设置启用的CPU物理核心数,但不支持自定义取值范围外的数值。

开启或关闭超线程配置

您可以通过RunInstances自定义ECS实例的CPU选项。如果您使用的是SDK,请更新至最新版本。

  • ECS实例默认开启超线程配置,开启CPU超线程配置的阿里云CLI请求示例:
    aliyun ecs RunInstances --RegionId cn-hangzhou --CpuOptions.Core 2 --CpuOptions.ThreadsPerCore 2 --ImageId ubuntu_18_04_64_20G_alibase_20190624.vhd --InstanceType ecs.g6.6xlarge --SecurityGroupId sg-bp67acfmxazb4ph*** --VSwitchId vsw-bp1s5fnvk4gn2tws03*** --Amount 1 --SystemDisk.AutoSnapshotPolicyId sp-bp67acfmxazb4ph***
  • 通过将参数CpuOptions.ThreadsPerCore置为1可以关闭CPU超线程配置,阿里云CLI请求示例:
    aliyun ecs RunInstances --RegionId cn-hangzhou --CpuOptions.Core 2 --CpuOptions.ThreadsPerCore 1 --ImageId ubuntu_18_04_64_20G_alibase_20190624.vhd --InstanceType ecs.g6.6xlarge --SecurityGroupId sg-bp67acfmxazb4ph*** --VSwitchId vsw-bp1s5fnvk4gn2tws03*** --Amount 1 --SystemDisk.AutoSnapshotPolicyId sp-bp67acfmxazb4ph***
例如,ecs.g6.xlarge默认提供2个物理核:
  • 开启超线程:如果您将每核线程数置为2,则该实例规格有2*2=4个vCPU。默认情况下该实例规格开启超线程配置。
  • 关闭超线程:如果您选择关闭超线程配置,则1个物理核只能运行1个线程,实例的vCPU数量等于物理核数,为2。

查看CPU选项

您可以通过DescribeInstances查看ECS实例的已经设定的CPU选项。如果您使用的是SDK,请更新至最新版本。

  • 阿里云CLI请求示例:
    aliyun ecs DescribeInstances --InstanceIds '["i-bp19rxmzeocge2z57***"]' --output cols=CpuOptions rows=Instances.Instance[]
    返回示例:
    CpuOptions
    ----------
    map[CoreCount:1 ThreadsPerCore:2]
  • Shell命令lscpu示例:
    shell@ecshost:~$ lscpu
    Architecture:        x86_64
    Byte Order:          Little Endian
    CPU(s):              1   # CPU物理核心数
    On-line CPU(s) list: 0
    Thread(s) per core:  2   # 每核线程数
    Core(s) per socket:  1
    Socket(s):           1
    Vendor ID:           GenuineIntel
    CPU family:          6
    Model:               85
    Model name:          Intel(R) Xeon(R) Platinum 8163 CPU @ 2.50GHz
    ......

CPU物理核心数与线程数取值表

下表列举了CPU物理核心数(CpuOptions.Core)与每核线程数(CpuOptions.ThreadsPerCore)的默认值和取值范围,不在表格中的实例规格不支持自定义CPU选项。

表 1. hfg7的CPU物理核心数与线程数取值表
实例规格 默认vCPU数 CPU物理核心数取值范围 每核线程数默认值 每核线程数取值范围
ecs.hfg7.large 2 1 2 1、2
ecs.hfg7.xlarge 4 2 2 1、2
ecs.hfg7.2xlarge 8 2、4 2 1、2
ecs.hfg7.3xlarge 12 2、4、6 2 1、2
ecs.hfg7.4xlarge 16 2、4、6、8 2 1、2
ecs.hfg7.6xlarge 24 2、4、6、8、10、12 2 1、2
ecs.hfg7.8xlarge 32 2、4、6、8、10、12、14、16 2 1、2
ecs.hfg7.12xlarge 48 2、4、6、8、10、12、14、16、18、20、22、24 2 1、2
ecs.hfg7.24xlarge 96 2、4、6、8、10、12、14、16、18、20、22、24、26、28、30、32、34、36、38、40、42、44、46、48 2 1、2
表 2. hfc7的CPU物理核心数与线程数取值表
实例规格 默认vCPU数 CPU物理核心数取值范围 每核线程数默认值 每核线程数取值范围
ecs.hfc7.large 2 1 2 1、2
ecs.hfc7.xlarge 4 2 2 1、2
ecs.hfc7.2xlarge 8 2、4 2 1、2
ecs.hfc7.3xlarge 12 2、4、6 2 1、2
ecs.hfc7.4xlarge 16 2、4、6、8 2 1、2
ecs.hfc7.6xlarge 24 2、4、6、8、10、12 2 1、2
ecs.hfc7.8xlarge 32 2、4、6、8、10、12、14、16 2 1、2
ecs.hfc7.12xlarge 48 2、4、6、8、10、12、14、16、18、20、22、24 2 1、2
ecs.hfc7.24xlarge 96 2、4、6、8、10、12、14、16、18、20、22、24、26、28、30、32、34、36、38、40、42、44、46、48 2 1、2
表 3. hfr7的CPU物理核心数与线程数取值表
实例规格 默认vCPU数 CPU物理核心数取值范围 每核线程数默认值 每核线程数取值范围
ecs.hfr7.large 2 1 2 1、2
ecs.hfr7.xlarge 4 2 2 1、2
ecs.hfr7.2xlarge 8 2、4 2 1、2
ecs.hfr7.3xlarge 12 2、4、6 2 1、2
ecs.hfr7.4xlarge 16 2、4、6、8 2 1、2
ecs.hfr7.6xlarge 24 2、4、6、8、10、12 2 1、2
ecs.hfr7.8xlarge 32 2、4、6、8、10、12、14、16 2 1、2
ecs.hfr7.12xlarge 48 2、4、6、8、10、12、14、16、18、20、22、24 2 1、2
ecs.hfr7.24xlarge 96 2、4、6、8、10、12、14、16、18、20、22、24、26、28、30、32、34、36、38、40、42、44、46、48 2 1、2
表 4. g6e的CPU物理核心数与线程数取值表
实例规格 默认vCPU数 CPU物理核心数取值范围 每核线程数默认值 每核线程数取值范围
ecs.g6e.large 2 1 2 1、2
ecs.g6e.xlarge 4 2 2 1、2
ecs.g6e.2xlarge 8 2、4 2 1、2
ecs.g6e.4xlarge 16 2、4、6、8 2 1、2
ecs.g6e.8xlarge 32 2、4、6、8、10、12、14、16 2 1、2
ecs.g6e.13xlarge 52 2、4、6、8、10、12、14、16、18、20、22、24、26 2 1、2
ecs.g6e.26xlarge 104 2、4、6、8、10、12、14、16、18、20、22、24、26、28、30、32、34、36、38、40、42、44、46、48、50、52 2 1、2
表 5. c6e的CPU物理核心数与线程数取值表
实例规格 默认vCPU数 CPU物理核心数取值范围 每核线程数默认值 每核线程数取值范围
ecs.c6e.large 2 1 2 1、2
ecs.c6e.xlarge 4 2 2 1、2
ecs.c6e.2xlarge 8 2、4 2 1、2
ecs.c6e.4xlarge 16 2、4、6、8 2 1、2
ecs.c6e.8xlarge 32 2、4、6、8、10、12、14、16 2 1、2
ecs.c6e.13xlarge 52 2、4、6、8、10、12、14、16、18、20、22、24、26 2 1、2
ecs.c6e.26xlarge 104 2、4、6、8、10、12、14、16、18、20、22、24、26、28、30、32、34、36、38、40、42、44、46、48、50、52 2 1、2
表 6. r6e的CPU物理核心数与线程数取值表
实例规格 默认vCPU数 CPU物理核心数取值范围 每核线程数默认值 每核线程数取值范围
ecs.r6e.large 2 1 2 1、2
ecs.r6e.xlarge 4 2 2 1、2
ecs.r6e.2xlarge 8 2、4 2 1、2
ecs.r6e.4xlarge 16 2、4、6、8 2 1、2
ecs.r6e.8xlarge 32 2、4、6、8、10、12、14、16 2 1、2
ecs.r6e.13xlarge 52 2、4、6、8、10、12、14、16、18、20、22、24、26 2 1、2
ecs.r6e.26xlarge 104 2、4、6、8、10、12、14、16、18、20、22、24、26、28、30、32、34、36、38、40、42、44、46、48、50、52 2 1、2
表 7. g6的CPU物理核心数与线程数取值表
实例规格 默认vCPU数 CPU物理核心数取值范围 每核线程数默认值 每核线程数取值范围
ecs.g6.large 2 1 2 1、2
ecs.g6.xlarge 4 2 2 1、2
ecs.g6.2xlarge 8 2、4 2 1、2
ecs.g6.3xlarge 12 2、4、6 2 1、2
ecs.g6.4xlarge 16 2、4、6、8 2 1、2
ecs.g6.6xlarge 24 2、4、6、8、10、12 2 1、2
ecs.g6.8xlarge 32 2、4、6、8、10、12、14、16 2 1、2
ecs.g6.13xlarge 52 2、4、6、8、10、12、14、16、18、20、22、24、26 2 1、2
ecs.g6.26xlarge 104 2、4、6、8、10、12、14、16、18、20、22、24、26、28、30、32、34、36、38、40、42、44、46、48、50、52 2 1、2
表 8. c6的CPU物理核心数与线程数取值表
实例规格 默认vCPU数 CPU物理核心数取值范围 每核线程数默认值 每核线程数取值范围
ecs.c6.large 2 1 2 1、2
ecs.c6.xlarge 4 2 2 1、2
ecs.c6.2xlarge 8 2、4 2 1、2
ecs.c6.3xlarge 12 2、4、6 2 1、2
ecs.c6.4xlarge 16 2、4、6、8 2 1、2
ecs.c6.6xlarge 24 2、4、6、8、10、12 2 1、2
ecs.c6.8xlarge 32 2、4、6、8、10、12、14、16 2 1、2
ecs.c6.13xlarge 52 2、4、6、8、10、12、14、16、18、20、22、24、26 2 1、2
ecs.c6.26xlarge 104 2、4、6、8、10、12、14、16、18、20、22、24、26、28、30、32、34、36、38、40、42、44、46、48、50、52 2 1、2
表 9. r6的CPU物理核心数与线程数取值表
实例规格 默认vCPU数 CPU物理核心数取值范围 每核线程数默认值 每核线程数取值范围
ecs.r6.large 2 1 2 1、2
ecs.r6.xlarge 4 2 2 1、2
ecs.r6.2xlarge 8 2、4 2 1、2
ecs.r6.3xlarge 12 2、4、6 2 1、2
ecs.r6.4xlarge 16 2、4、6、8 2 1、2
ecs.r6.6xlarge 24 2、4、6、8、10、12 2 1、2
ecs.r6.8xlarge 32 2、4、6、8、10、12、14、16 2 1、2
ecs.r6.13xlarge 52 2、4、6、8、10、12、14、16、18、20、22、24、26 2 1、2
ecs.r6.26xlarge 104 2、4、6、8、10、12、14、16、18、20、22、24、26、28、30、32、34、36、38、40、42、44、46、48、50、52 2 1、2
表 10. hfg6的CPU物理核心数与线程数取值表
实例规格 默认vCPU数 CPU物理核心数取值范围 每核线程数默认值 每核线程数取值范围
ecs.hfg6.large 2 1 2 1、2
ecs.hfg6.xlarge 4 2 2 1、2
ecs.hfg6.2xlarge 8 2、4 2 1、2
ecs.hfg6.3xlarge 12 2、4、6 2 1、2
ecs.hfg6.4xlarge 16 2、4、6、8 2 1、2
ecs.hfg6.6xlarge 24 2、4、6、8、10、12 2 1、2
ecs.hfg6.8xlarge 32 2、4、6、8、10、12、14、16 2 1、2
ecs.hfg6.10xlarge 40 2、4、6、8、10、12、14、16、18、20 2 1、2
ecs.hfg6.16xlarge 64 2、4、6、8、10、12、14、16、18、20、22、24、26、28、30、32 2 1、2
ecs.hfg6.20xlarge 80 2、4、6、8、10、12、14、16、18、20、22、24、26、28、30、32、34、36、38、40 2 1、2
表 11. hfc6的CPU物理核心数与线程数取值表
实例规格 默认vCPU数 CPU物理核心数取值范围 每核线程数默认值 每核线程数取值范围
ecs.hfc6.large 2 1 2 1、2
ecs.hfc6.xlarge 4 2 2 1、2
ecs.hfc6.2xlarge 8 2、4 2 1、2
ecs.hfc6.3xlarge 12 2、4、6 2 1、2
ecs.hfc6.4xlarge 16 2、4、6、8 2 1、2
ecs.hfc6.6xlarge 24 2、4、6、8、10、12 2 1、2
ecs.hfc6.8xlarge 32 2、4、6、8、10、12、14、16 2 1、2
ecs.hfc6.10xlarge 40 2、4、6、8、10、12、14、16、18、20 2 1、2
ecs.hfc6.16xlarge 64 2、4、6、8、10、12、14、16、18、20、22、24、26、28、30、32 2 1、2
ecs.hfc6.20xlarge 80 2、4、6、8、10、12、14、16、18、20、22、24、26、28、30、32、34、36、38、40 2 1、2
表 12. hfr6的CPU物理核心数与线程数取值表
实例规格 默认vCPU数 CPU物理核心数取值范围 每核线程数默认值 每核线程数取值范围
ecs.hfr6.large 2 1 2 1、2
ecs.hfr6.xlarge 4 2 2 1、2
ecs.hfr6.2xlarge 8 2、4 2 1、2
ecs.hfr6.3xlarge 12 2、4、6 2 1、2
ecs.hfr6.4xlarge 16 2、4、6、8 2 1、2
ecs.hfr6.6xlarge 24 2、4、6、8、10、12 2 1、2
ecs.hfr6.8xlarge 32 2、4、6、8、10、12、14、16 2 1、2
ecs.hfr6.10xlarge 40 2、4、6、8、10、12、14、16、18、20 2 1、2
ecs.hfr6.16xlarge 64 2、4、6、8、10、12、14、16、18、20、22、24、26、28、30、32 2 1、2
ecs.hfr6.20xlarge 80 2、4、6、8、10、12、14、16、18、20、22、24、26、28、30、32、34、36、38、40 2 1、2