为 Amazon EC2 实例指定 CPU 选项
您可以在实例启动过程中或之后通过 AWS Management Console、AWS CLI、EC2 API 或 SDK 来指定 CPU 选项。本页介绍了 AWS Management Console和 AWS CLI 方法,如下所示。
禁用同步多线程
要禁用同步多线程(SMT)(也称为超线程),请为每个核心指定 1 个线程。
- Console
-
在启动实例期间禁用 SMT
-
按照 使用控制台中的启动实例向导来启动 EC2 实例 程序进行操作并根据需要配置实例。
-
展开高级详细信息,然后选中指定 CPU 选项复选框。
-
对于 Core count (内核数),选择所需的 CPU 内核数量。在此示例中,要为 r5.4xlarge
实例指定默认 CPU 内核数,请选择 8
。
-
要禁用 SMT,请为每核心线程数选择 1。
-
在 Summary(摘要)面板中查看实例配置,然后选择 Launch instance(启动实例)。有关更多信息,请参阅 使用控制台中的启动实例向导来启动 EC2 实例。
- AWS CLI
-
在启动实例期间禁用 SMT
使用 run-instances AWS CLI 命令,并将 1
参数的 ThreadsPerCore
值指定为 --cpu-options
。对于 CoreCount
,请指定 CPU 内核的数量。在此示例中,要为 r5.4xlarge
实例指定默认 CPU 内核数,请指定值 8
。
aws ec2 run-instances \
--image-id ami-1a2b3c4d
\
--instance-type r5.4xlarge
\
--cpu-options "CoreCount=8
,ThreadsPerCore=1
" \
--key-name MyKeyPair
在启动时指定自定义 vCPU 数
您可以在启动实例时,通过 EC2 控制台或 AWS CLI 自定义 CPU 核心数和每核心线程数。本节中的示例使用的是 r5.4xlarge
实例类型,该实例类型的默认设置如下:
默认情况下,实例会使用该实例类型可用的最大 vCPU 数量启动。对于这种实例类型,则共有 16 个 vCPU(8 个核心,每个核心运行 2 个线程)。有关此实例类型的更多信息,请参阅 内存优化型实例。
以下示例启动一个具有 4 个 vCPU 的 r5.4xlarge
实例。
- Console
-
- AWS CLI
-
在实例启动期间指定自定义 vCPU 数量
使用 run-instances AWS CLI 命令,并在 --cpu-options
参数中指定 CPU 内核数和线程数。可以指定 2 个 CPU 核心并为每个核心指定 2 个线程,从而获得 4 个 vCPU。
aws ec2 run-instances \
--image-id ami-1a2b3c4d
\
--instance-type r5.4xlarge
\
--cpu-options "CoreCount=2
,ThreadsPerCore=2
" \
--key-name MyKeyPair
或者,也可以通过指定 4 个 CPU 核心并为每个核心指定 1 个线程(禁用 SMT)来获得 4 个 vCPU:
aws ec2 run-instances \
--image-id ami-1a2b3c4d
\
--instance-type r5.4xlarge
\
--cpu-options "CoreCount=4
,ThreadsPerCore=1
" \
--key-name MyKeyPair
在启动模板中指定自定义 vCPU 数
您可以在启动模板中自定义实例的 CPU 核心数和每个核心的线程数。本节中的示例使用的是 r5.4xlarge
实例类型,该实例类型的默认设置如下:
默认情况下,实例会使用该实例类型可用的最大 vCPU 数量启动。对于这种实例类型,则共有 16 个 vCPU(8 个核心,每个核心运行 2 个线程)。有关此实例类型的更多信息,请参阅 内存优化型实例。
以下示例创建了一个启动模板,该模板指定具有 4 个 vCPU 的 r5.4xlarge
实例的配置。
- Console
-
要在启动模板中指定自定义 vCPU 数
-
按照 通过指定参数创建启动模板 程序进行操作并根据需要配置启动模板。
-
展开高级详细信息,然后选中指定 CPU 选项复选框。
-
要获得 4 个 vCPU,请指定 2 个 CPU 内核并为每个内核指定 2 个线程,如下所示:
-
在摘要面板中查看实例配置,然后选择创建启动模板。有关更多信息,请参阅 在 Amazon EC2 启动模板中存储实例启动参数。
- AWS CLI
-
要在启动模板中指定自定义 vCPU 数
使用 create-launch-template AWS CLI 命令,并在 CpuOptions
参数中指定 CPU 核心数和线程数。可以指定 2 个 CPU 核心并为每个核心指定 2 个线程,从而获得 4 个 vCPU。
aws ec2 create-launch-template \
--launch-template-name TemplateForCPUOptions
\
--version-description CPUOptionsVersion1
\
--launch-template-data file://template-data
.json
下面是一个示例 JSON 文件,其中包含启动模板数据,包括本示例的实例配置的 CPU 选项。
{
"NetworkInterfaces": [{
"AssociatePublicIpAddress": true,
"DeviceIndex": 0,
"Ipv6AddressCount": 1,
"SubnetId": "subnet-7b16de0c
"
}],
"ImageId": "ami-8c1be5f6
",
"InstanceType": "r5.4xlarge
",
"TagSpecifications": [{
"ResourceType": "instance",
"Tags": [{
"Key":"Name
",
"Value":"webserver
"
}]
}],
"CpuOptions": {
"CoreCount":2
,
"ThreadsPerCore":2
}
}
或者,也可以通过指定 4 个 CPU 核心并为每个核心指定 1 个线程(禁用 SMT)来获得 4 个 vCPU:
{
"NetworkInterfaces": [{
"AssociatePublicIpAddress": true,
"DeviceIndex": 0,
"Ipv6AddressCount": 1,
"SubnetId": "subnet-7b16de0c
"
}],
"ImageId": "ami-8c1be5f6
",
"InstanceType": "r5.4xlarge
",
"TagSpecifications": [{
"ResourceType": "instance",
"Tags": [{
"Key":"Name
",
"Value":"webserver
"
}]
}],
"CpuOptions": {
"CoreCount":4
,
"ThreadsPerCore":1
}
}
更改 EC2 实例的 CPU 选项
随着需求的逐渐变化,您可能需要更改现有实例的 CPU 选项配置。实例上运行的每个线程都称为一个虚拟 CPU(vCPU)。您可以通过 Amazon EC2 控制台、AWS CLI、API 或 SDK 更改现有实例中运行的 vCPU 数量。实例状态必须为 Stopped
,然后才能进行此更改。
要查看控制台或命令行步骤,请选择与环境相匹配的选项卡。有关 API 请求和响应信息,请参阅《Amazon EC2 API 参考》中的 ModifyInstanceCpuOptions。
- Console
-
按照以下过程操作,通过 AWS Management Console更改实例的活动 vCPU 数量。
通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/。
-
在左侧导航窗格中,选择 Instances (实例)。这将打开为当前 AWS 区域定义的实例列表。
-
从实例列表中选择实例。您也可以通过选择实例链接来打开实例详细信息页面。
-
如果实例正在运行,则必须首先停止实例,然后才能继续操作。从实例状态菜单中,选择停止实例。
-
要更改 vCPU 配置,请从操作菜单的实例设置中,选择 更改 CPU 选项。这将打开更改 CPU 选项页面。
-
选择以下 CPU 选项之一来更改实例的配置。
- 无
-
此选项会将实例重置为实例类型的默认 vCPU 数量。默认情况下会运行所有 CPU 核心的所有线程。
- 指定 CPU 选项
-
借助此选项可以配置实例上运行的 vCPU 数量。
-
如果选择了指定 CPU 选项,则会显示活动 vCPU 配置。
当您更改 CPU 选项选择器时,以下字段会动态更新。
-
要应用更新,请选择更改。
- AWS CLI
-
按照以下过程操作,通过 AWS CLI更改实例的活动 vCPU 数量。
使用 modify-instance-cpu-options 命令,然后在 --core-count
参数中指定运行的 CPU 核心数,并在 --threads-per-core
参数中指定每个核心运行的线程数。
以下示例演示了对于 m6i.4xlarge
实例类型,用于在指定实例上运行 8 个 vCPU 的两种可能配置。这种实例类型默认为 16 个 vCPU(8 个核心,每个核心运行 2 个线程)。
示例 1:运行 4 个 CPU 核心,每个核心 2 个线程,总计 8 个 vCPU。
aws ec2 modify-instance-cpu-options \
--instance-id i-1234567890abcdef0
\
--core-count=4
\
--threads-per-core=2
示例 2:通过将每个核心运行的线程数更改为 1
来禁用同步多线程。得出的配置同样总计运行 8 个 vCPU(8 个 CPU 核心,每个核心 1 个线程)。
aws ec2 modify-instance-cpu-options \
--instance-id i-1234567890abcdef0
\
--core-count=8
\
--threads-per-core=1