为 Amazon EC2 实例指定 CPU 选项 - Amazon Elastic Compute Cloud
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

为 Amazon EC2 实例指定 CPU 选项

在实例启动过程中以及之后都可以指定 CPU 选项。

禁用同步多线程

要禁用同步多线程(SMT)(也称为超线程),请为每个核心指定 1 个线程。

Console
在启动实例期间禁用 SMT
  1. 按照 使用控制台中的启动实例向导来启动 EC2 实例 程序进行操作并根据需要配置实例。

  2. 展开高级详细信息,然后选中指定 CPU 选项复选框。

  3. 对于 Core count (内核数),选择所需的 CPU 内核数量。在此示例中,要为 r5.4xlarge 实例指定默认 CPU 内核数,请选择 8

  4. 要禁用 SMT,请为每核心线程数选择 1

  5. Summary(摘要)面板中查看实例配置,然后选择 Launch instance(启动实例)。有关更多信息,请参阅 使用控制台中的启动实例向导来启动 EC2 实例

Amazon CLI
在启动实例期间禁用 SMT

使用 run-instances Amazon CLI 命令,并将 1 参数的 ThreadsPerCore 值指定为 --cpu-options。对于 CoreCount,请指定 CPU 内核的数量。在此示例中,要为 r7i.4xlarge 实例指定默认 CPU 内核数,请指定值 8

aws ec2 run-instances \ --image-id ami-0abcdef1234567890 \ --instance-type r7i.4xlarge \ --cpu-options "CoreCount=8,ThreadsPerCore=1" \ --key-name my-key-pair
PowerShell
在启动实例期间禁用 SMT

使用 New-EC2Instance 命令,并将 -CpuOptions 参数的 ThreadsPerCore 值指定为 1。对于 CoreCount,请指定 CPU 内核的数量。在此示例中,要为 r7i.4xlarge 实例指定默认 CPU 内核数,请指定值 8

New-EC2Instance ` -ImageId 'ami-0abcdef1234567890' ` -InstanceType 'r7i.4xlarge' ` -CpuOptions @{CoreCount=8; ThreadsPerCore=1} ` -KeyName 'my-key-pair'
注意

要为现有实例禁用 SMT,请按照更改 EC2 实例的 CPU 选项中所示的流程操作,并将每个核心运行的线程数更改为 1

在启动时指定自定义 vCPU 数

您可以在启动实例时,通过 EC2 控制台或 Amazon CLI 自定义 CPU 核心数和每核心线程数。本节中的示例使用的是 r5.4xlarge 实例类型,该实例类型的默认设置如下:

  • CPU 核心数:8

  • 每核心线程数:2

默认情况下,实例会使用该实例类型可用的最大 vCPU 数量启动。对于这种实例类型,则共有 16 个 vCPU(8 个核心,每个核心运行 2 个线程)。有关此实例类型的更多信息,请参阅 内存优化型实例

以下示例启动一个具有 4 个 vCPU 的 r5.4xlarge 实例。

Console
在实例启动期间指定自定义 vCPU 数量
  1. 按照 使用控制台中的启动实例向导来启动 EC2 实例 程序进行操作并根据需要配置实例。

  2. 展开高级详细信息,然后选中指定 CPU 选项复选框。

  3. 要获得 4 个 vCPU,请指定 2 个 CPU 内核并为每个内核指定 2 个线程,如下所示:

    • 对于内核数,选择 2

    • 对于 Threads per core (每内核线程数),选择 2

  4. Summary(摘要)面板中查看实例配置,然后选择 Launch instance(启动实例)。有关更多信息,请参阅 使用控制台中的启动实例向导来启动 EC2 实例

Amazon CLI
在实例启动期间指定自定义 vCPU 数量

使用 run-instances Amazon CLI 命令,并在 --cpu-options 参数中指定 CPU 内核数和线程数。可以指定 2 个 CPU 核心并为每个核心指定 2 个线程,从而获得 4 个 vCPU。

aws ec2 run-instances \ --image-id ami-0abcdef1234567890 \ --instance-type r7i.4xlarge \ --cpu-options "CoreCount=2,ThreadsPerCore=2" \ --key-name my-key-pair

或者,也可以通过指定 4 个 CPU 核心并为每个核心指定 1 个线程(禁用 SMT)来获得 4 个 vCPU:

aws ec2 run-instances \ --image-id ami-0abcdef1234567890 \ --instance-type r7i.4xlarge \ --cpu-options "CoreCount=4,ThreadsPerCore=1" \ --key-name my-key-pair
PowerShell
在实例启动期间指定自定义 vCPU 数量

使用 New-EC2Instance 命令,并在 -CpuOptions 参数中指定 CPU 核心数和线程数。可以指定 2 个 CPU 核心并为每个核心指定 2 个线程,从而获得 4 个 vCPU。

New-EC2Instance ` -ImageId 'ami-0abcdef1234567890' ` -InstanceType 'r7i.4xlarge' ` -CpuOptions @{CoreCount=2; ThreadsPerCore=2} ` -KeyName 'my-key-pair'

或者,也可以通过指定 4 个 CPU 核心并为每个核心指定 1 个线程(禁用 SMT)来获得 4 个 vCPU:

New-EC2Instance ` -ImageId 'ami-0abcdef1234567890' ` -InstanceType 'r7i.4xlarge' ` -CpuOptions @{CoreCount=4; ThreadsPerCore=1} ` -KeyName 'my-key-pair'

在启动模板中指定自定义 vCPU 数

您可以在启动模板中自定义实例的 CPU 核心数和每个核心的线程数。本节中的示例使用的是 r5.4xlarge 实例类型,该实例类型的默认设置如下:

  • CPU 核心数:8

  • 每核心线程数:2

默认情况下,实例会使用该实例类型可用的最大 vCPU 数量启动。对于这种实例类型,则共有 16 个 vCPU(8 个核心,每个核心运行 2 个线程)。有关此实例类型的更多信息,请参阅 内存优化型实例

以下示例创建了一个启动模板,该模板指定具有 4 个 vCPU 的 r5.4xlarge 实例的配置。

Console
要在启动模板中指定自定义 vCPU 数
  1. 按照 通过指定参数创建启动模板 程序进行操作并根据需要配置启动模板。

  2. 展开高级详细信息,然后选中指定 CPU 选项复选框。

  3. 要获得 4 个 vCPU,请指定 2 个 CPU 内核并为每个内核指定 2 个线程,如下所示:

    • 对于内核数,选择 2

    • 对于 Threads per core (每内核线程数),选择 2

  4. 摘要面板中查看实例配置,然后选择创建启动模板。有关更多信息,请参阅 在 Amazon EC2 启动模板中存储实例启动参数

Amazon CLI
要在启动模板中指定自定义 vCPU 数

使用 create-launch-template Amazon 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-0abcdef1234567890" }], "ImageId": "ami-0abcdef1234567890", "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-0abcdef1234567890" }], "ImageId": "ami-0abcdef1234567890", "InstanceType": "r5.4xlarge", "TagSpecifications": [{ "ResourceType": "instance", "Tags": [{ "Key":"Name", "Value":"webserver" }] }], "CpuOptions": { "CoreCount":4, "ThreadsPerCore":1 } }
PowerShell
要在启动模板中指定自定义 vCPU 数

使用 New-EC2LaunchTemplate

New-EC2LaunchTemplate ` -LaunchTemplateName 'TemplateForCPUOptions' ` -VersionDescription 'CPUOptionsVersion1' ` -LaunchTemplateData (Get-Content -Path 'template-data.json' | ConvertFrom-Json)

更改 EC2 实例的 CPU 选项

随着需求的逐渐变化,您可能需要更改现有实例的 CPU 选项配置。实例上运行的每个线程都称为一个虚拟 CPU(vCPU)。您可以通过 Amazon EC2 控制台、Amazon CLI、API 或 SDK 更改现有实例中运行的 vCPU 数量。实例状态必须为 Stopped,然后才能进行此更改。

Console
更改实例的活动 vCPU 数量
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在左侧导航窗格中,选择实例,然后选择您的实例。

  3. 如果实例正在运行,则必须首先停止实例,然后才能继续操作。依次选择实例状态停止实例

  4. 要更改 vCPU 配置,请选择操作实例设置更改 CPU 选项

  5. 请选择以下 CPU 选项之一:

    • 要将实例重置为其实例类型的默认 vCPU 数量,请选择使用默认 CPU 选项。默认情况下会运行所有 CPU 核心的所有线程。

    • 要配置实例上的 vCPU 数量,请选择指定 CPU 选项

  6. 如果选择指定 CPU 选项,则会显示活动 vCPU 字段。

    1. 使用第一个选择器来配置每个 CPU 核心的线程数。要禁用同步多线程,请选择 1

    2. 使用第二个选择器来配置实例的 CPU 数量。

    当您更改 CPU 选项选择器时,以下字段会动态更新:

    • 活动 vCPU:CPU 核心数乘以每核心线程数,具体取决于您的选择。例如,假设您选择了 2 个线程和 4 个核心,则该值为 8 个 vCPU。

    • 总 vCPU 数:该实例类型的最大 vCPU 数。例如,对于 m6i.4xlarge 实例类型,这将为 16 个 vCPU(8 个核心,每个核心运行 2 个线程)。

  7. 选择 Change (更改)

Amazon 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 1234567890abcdef0 \ --core-count=4 \ --threads-per-core=2

示例 2:通过将每个核心运行的线程数更改为 1 来禁用同步多线程。得出的配置同样总计运行 8 个 vCPU(8 个 CPU 核心,每个核心 1 个线程)。

aws ec2 modify-instance-cpu-options \ --instance-id 1234567890abcdef0 \ --core-count=8 \ --threads-per-core=1
PowerShell
更改实例的活动 vCPU 数量

使用 Edit-EC2InstanceCpuOption cmdlet,在 -CoreCount 参数中指定运行的 CPU 核心数,并且在 ThreadsPerCore 参数中指定每个核心运行的线程数。

示例 1:运行 4 个 CPU 核心,每个核心 2 个线程,总计 8 个 vCPU。

Edit-EC2InstanceCpuOption ` -InstanceId 'i-1234567890abcdef0' ` -CoreCount 4 ` -ThreadsPerCore 2

示例 2:通过将每个核心运行的线程数更改为 1 来禁用同步多线程。得出的配置同样总计运行 8 个 vCPU(8 个 CPU 核心,每个核心 1 个线程)。

Edit-EC2InstanceCpuOption ` -InstanceId 'i-1234567890abcdef0' ` -CoreCount 8 ` -ThreadsPerCore 1