当您通过RunInstances购买实例时,部分实例规格支持自定义设置CPU选项(CPU选项由CPU物理核心数和每核线程数决定)。您可以根据应用的性能需求灵活调整ECS实例的物理核心数和每核线程数(即调整ECS实例的vCPU),以获得更好的性能表现,并有效控制成本。例如,在内存密集型业务场景中,通过关闭超线程减少vCPU数量,可以提高内存配比,并降低软件许可费支出。
CPU与vCPU
CPU是中央处理器,一个CPU可以包含若干个物理核,通过超线程HT(Hyper-Threading)技术可以将一个物理核变成两个逻辑处理核。vCPU(virtual CPU)是ECS实例的虚拟处理核。
阿里云ECS的超线程的实现基于x86平台架构的HT技术,允许在一个物理核上并发地运行两个线程(Thread),一个线程可以视为一个vCPU。
下表从多个维度对比了ECS实例的CPU选项参数。
CPU选项 | API参数 | 作用 | 适用场景 | 适用的实例规格 |
CPU物理核心数 | CpuOptions.Core | 决定启用的CPU物理核心数。 | 减少启用的CPU物理核心数,提高内存配比,收费对象减少也可以降低软件许可费支出。 | 请参见规格限制。 |
每核线程数 | CpuOptions.ThreadsPerCore | 决定CPU是否开启超线程。 vCPU数量=CPU物理核心数*每核线程数。 | 通常,ECS实例规格能够应对常见的工作负载。在以下场景中,您可以考虑关闭超线程:
| 请参见规格限制。 |
计费说明
自定义CPU选项不会产生额外费用。
规格限制
支持自定义CPU选项的实例规格族如下:
单击下方链接查看各实例规格CPU物理核心数(CpuOptions.Core)与每核线程数(CpuOptions.ThreadsPerCore)的默认值和取值范围,未列出的实例规格不支持自定义CPU选项。
自定义CPU选项
仅支持在创建ECS实例时自定义CPU选项,成功创建实例后不允许修改。
一台ECS实例如果已经自定义了CPU选项,进行升降配操作后,这台ECS实例的CPU选项会被置为默认的CPU选项。
您可以通过RunInstances自定义ECS实例的CPU选项(CPU物理核心数和每核线程数),ECS实例的vCPU数量=CPU物理核心数*每核线程数。
CPU物理核心数
一台ECS实例可提供的物理核心数由实例规格决定,您可以在取值范围内设置启用的CPU物理核心数(CpuOptions.Core参数配置),但不支持自定义取值范围外的数值。各实例规格的取值范围,请参见规格限制。
以ecs.g6.2xlarge为例,CPU物理核心数取值范围为2和4。因此,当您通过RunInstances自定义ECS实例的CPU物理核心数时,CpuOptions.Core参数值可以设置为2,即表示ecs.g6.2xlarge提供的物理核心数为2。
每核线程数
ECS实例的每核线程数由CpuOptions.ThreadsPerCore参数决定,您可以在取值范围内设置每核线程数,但不支持自定义取值范围外的数值。各实例规格的取值范围,请参见规格限制。
CpuOptions.ThreadsPerCore参数值不为1,即开启超线程配置时,每核线程数为您设置的参数值。
设置CPU线程数的阿里云CLI请求示例如下,如果您使用的是SDK,请更新至最新版本。
说明ECS实例默认开启超线程配置。
aliyun ecs RunInstances --RegionId cn-hangzhou --CpuOptions.Core 2 --CpuOptions.ThreadsPerCore 2 --ImageId ubuntu_18_04_64_20G_alibase_20190624.vhd --InstanceType ecs.g6.xlarge --SecurityGroupId sg-bp67acfmxazb4ph*** --VSwitchId vsw-bp1s5fnvk4gn2tws03*** --Amount 1 --SystemDisk.AutoSnapshotPolicyId sp-bp67acfmxazb4ph***
该请求示例中,ecs.g6.xlarge提供的物理核心数为2、开启了超线程并且每核线程数为2,则该实例创建成功后,实例将有2*2=4个vCPU。
CpuOptions.ThreadsPerCore参数值为1,即关闭超线程配置时,每核线程数为1。
关闭CPU超线程配置的阿里云CLI请求示例如下,如果您使用的是SDK,请更新至最新版本。
aliyun ecs RunInstances --RegionId cn-hangzhou --CpuOptions.Core 2 --CpuOptions.ThreadsPerCore 1 --ImageId ubuntu_18_04_64_20G_alibase_20190624.vhd --InstanceType ecs.g6.xlarge --SecurityGroupId sg-bp67acfmxazb4ph*** --VSwitchId vsw-bp1s5fnvk4gn2tws03*** --Amount 1 --SystemDisk.AutoSnapshotPolicyId sp-bp67acfmxazb4ph***
该请求示例中,ecs.g6.xlarge提供的物理核心数为2,并且关闭了超线程,即1个物理核只能运行1个线程,则该实例创建成功后,实例的vCPU数量等于物理核心数,即2个vCPU。
查看CPU选项
您可以通过DescribeInstances查看ECS实例已经设置的CPU选项。如果您使用的是SDK,请更新至最新版本。
例如,通过阿里云CLI查看CPU相关选项。请求示例:
aliyun ecs DescribeInstances --InstanceIds '["i-bp19rxmzeocge2z57***"]' --output cols=CpuOptions rows=Instances.Instance[]
返回示例:
CpuOptions
----------
map[CoreCount:1 Numa:ON ThreadsPerCore:2]
其中CoreCount:1
表示CPU物理核心数为1,ThreadsPerCore:2
表示CPU线程数为2。
相关文档
ECS实例创建成功后,建议进行系统稳定性测试,以确保系统能够正常运行。您可以运行一些负载测试或应用场景测试,观察系统的响应和性能表现。
ECS实例创建成功后,您可以监测系统的性能指标和资源利用情况,并根据需要进行优化。更多信息,请参见查看实例监控信息。
在虚拟化环境、多线程编程、高性能计算等不同场景下,您可以修改ECS实例的CPU拓扑结构(
CpuOptions.TopologyType
)来提高ECS实例性能、提升并行性以及优化资源分配。