

# Amazon EC2 インスタンスに関する CPU オプションを指定する
<a name="instance-specify-cpu-options"></a>

インスタンスの起動中または起動後に CPU オプションを指定できます。

**Topics**
+ [同時マルチスレッドを無効にする](#cpu-options-disable-simultaneous-multithreading)
+ [起動時の vCPU のカスタム数の指定](#cpu-options-customize-vCPUs-launch)
+ [起動テンプレートでの vCPU のカスタム数の指定](#cpu-options-customize-vCPUs-launch-template)
+ [EC2 インスタンスの CPU オプションを変更する](#change-vCPUs-after-launch)

## 同時マルチスレッドを無効にする
<a name="cpu-options-disable-simultaneous-multithreading"></a>

ハイパースレッディングとも呼ばれる同時マルチスレッド (SMT) を無効にするにはコア 1 個あたり 1 つのスレッドを指定します。

------
#### [ Console ]

**インスタンスの起動時に SMT を無効にするには**

1. [コンソールのインスタンス起動ウィザードを使用して EC2 インスタンスを起動する](ec2-launch-instance-wizard.md) の手順に従い、必要に応じてインスタンスを設定します。

1. **[高度な詳細]** を展開し、**[CPU オプションの指定]** チェックボックスをオンにします。

1. [**Core count (コア数)**] では必要な CPU コア数を選択してください。この例では`r5.4xlarge` インスタンスにデフォルトの CPU コア数を指定するには`8` を選択してください。

1. SMT を無効にするには**[コアごとのスレッド]** で、**[1]** を選択してください。

1. **[合計mary]** (概要) パネルでインスタンスの設定を確認し、**[Launch instance]** (インスタンスを起動) を選択してください。詳細については「[コンソールのインスタンス起動ウィザードを使用して EC2 インスタンスを起動する](ec2-launch-instance-wizard.md)」を参照してください。

------
#### [ AWS CLI ]

**インスタンスの起動時に SMT を無効にするには**  
[run-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html) AWS 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](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2Instance.html) コマンドを使用して、`-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 オプションを変更する](#change-vCPUs-after-launch) に示すプロセスに従い、コアごとに実行されるスレッドの数を `1` に変更します。

## 起動時の vCPU のカスタム数の指定
<a name="cpu-options-customize-vCPUs-launch"></a>

EC2 コンソールまたは AWS CLI からインスタンスを起動する時に、CPU コア数とコアあたりのスレッドの数をカスタマイズできます。このセクションの例では以下のデフォルト設定を持つ `r5.4xlarge` インスタンスタイプを使用します。
+ CPU コア: 8
+ コアあたりのスレッド数: 2

インスタンスはデフォルトでインスタンスタイプで使用できる vCPU の最大数で起動します。このインスタンスタイプでは合計 16 vCPU (それぞれ 2 つのスレッドを実行する 8 個のコア) です。インスタンスタイプの詳細については「[メモリ最適化インスタンス](cpu-options-supported-instances-values.md#cpu-options-mem-optimized)」を参照してください。

次の例では4 つの vCPU で `r5.4xlarge` インスタンスを起動します。

------
#### [ Console ]

**インスタンス起動中に vCPU のカスタム数を指定するには**

1. [コンソールのインスタンス起動ウィザードを使用して EC2 インスタンスを起動する](ec2-launch-instance-wizard.md) の手順に従い、必要に応じてインスタンスを設定します。

1. **[高度な詳細]** を展開し、**[CPU オプションの指定]** チェックボックスをオンにします。

1. 4 つの vCPU を取得するには次のように、2 つの CPU コアおよびコアごとに 2 つのスレッドを指定します。
   + **[コアカウント]** には **2** を選択してください。
   + [**Threads per core (コアごとのスレッド)**] には[**2**] を選択してください。

1. **[合計mary]** (概要) パネルでインスタンスの設定を確認し、**[Launch instance]** (インスタンスを起動) を選択してください。詳細については「[コンソールのインスタンス起動ウィザードを使用して EC2 インスタンスを起動する](ec2-launch-instance-wizard.md)」を参照してください。

------
#### [ AWS CLI ]

**インスタンス起動中に vCPU のカスタム数を指定するには**  
[run-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html) AWS 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](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2Instance.html) コマンドを使用し、`-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 のカスタム数の指定
<a name="cpu-options-customize-vCPUs-launch-template"></a>

起動テンプレートでインスタンスの CPU コア数とコアごとのスレッドの数をカスタマイズできます。このセクションの例では以下のデフォルト設定を持つ `r5.4xlarge` インスタンスタイプを使用します。
+ CPU コア: 8
+ コアあたりのスレッド数: 2

インスタンスはデフォルトでインスタンスタイプで使用できる vCPU の最大数で起動します。このインスタンスタイプでは合計 16 vCPU (それぞれ 2 つのスレッドを実行する 8 個のコア) です。インスタンスタイプの詳細については「[メモリ最適化インスタンス](cpu-options-supported-instances-values.md#cpu-options-mem-optimized)」を参照してください。

次の例ではvCPU が 4 つの `r5.4xlarge` インスタンスの設定を指定する起動テンプレートを作成します。

------
#### [ Console ]

**起動テンプレートで vCPU のカスタム数を指定するには**

1. 「[パラメータを指定して起動テンプレートを作成する](create-launch-template.md#create-launch-template-define-parameters)」の手順に従い、必要に応じて起動テンプレートを設定します。

1. **[高度な詳細]** を展開し、**[CPU オプションの指定]** チェックボックスをオンにします。

1. 4 つの vCPU を取得するには次のように、2 つの CPU コアおよびコアごとに 2 つのスレッドを指定します。
   + **[コアカウント]** には **2** を選択してください。
   + [**Threads per core (コアごとのスレッド)**] には[**2**] を選択してください。

1. **[概要]** パネルでインスタンスの設定を確認し、**[起動テンプレートの作成]** を選択してください。詳細については「[Amazon EC2 起動テンプレートにインスタンス起動パラメータを保存する](ec2-launch-templates.md)」を参照してください。

------
#### [ AWS CLI ]

**起動テンプレートで vCPU のカスタム数を指定するには**  
[create-launch-template](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-launch-template.html) 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
```

インスタンスを設定するための起動テンプレートデータ (CPU オプションを含む) を含む、JSON ファイルの例を以下に示します。

```
{
    "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](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2LaunchTemplate.html) を使用します。

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

------

## EC2 インスタンスの CPU オプションを変更する
<a name="change-vCPUs-after-launch"></a>

時間の経過とともにニーズが変化し、既存のインスタンスの CPU オプションの設定を変更したい場合があります。インスタンスで実行される各スレッドは仮想 CPU (vCPU) と呼ばれます。Amazon EC2 コンソール、AWS CLI、API、または SDK で、既存のインスタンスに対して実行される vCPU の数を変更できます。この変更を行う前に、インスタンスの状態を `Stopped` にする必要があります。

コンソールまたはコマンドラインの手順を表示するには環境に一致するタブを選択してください。API リクエストとレスポンスの情報については「*Amazon EC2 API リファレンス*」の「[ModifyInstanceCpuOptions](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifyInstanceCpuOptions.html)」の項目を参照してください。

------
#### [ Console ]

AWS マネジメントコンソールからインスタンスのアクティブな vCPU の数を変更するには次の手順に従います。

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. 左のナビゲーションペインで、**[Instances]** (インスタンス) をクリックしてください。これにより、現在の AWS リージョンに定義されているインスタンスのリストが開きます。

1. **[インスタンス]** の一覧から、インスタンスを選択してください。またはインスタンスリンクを選択して、インスタンスの詳細ページを開くこともできます。

1. インスタンスが実行中の場合はまず進む前に停止する必要があります。**[インスタンスの状態]** メニューから **[インスタンスの停止]** を選択してください。

1. vCPU 設定を変更するには、**[アクション]** メニューの **[インスタンス設定]** から **[CPU オプションの変更]** を選択してください。これにより、**[CPU オプションの変更]** ページが開きます。

1. インスタンスの設定を変更するには次のいずれかの CPU オプションを選択してください。  
**[デフォルトの CPU オプションを使用する]**  
このオプションは、インスタンスタイプのデフォルト vCPU 数にインスタンスをリセットします。デフォルトではすべての CPU コアのすべてのスレッドを実行します。  
**[CPU オプションを指定する]**  
このオプションはインスタンスで実行されている vCPU の数の設定を有効にします。

1. **[CPU オプションを指定]** を選択した場合、**[アクティブ vCPU]** フィールドが表示されます。
   + 最初のセレクターを使用して、各 CPU コアのスレッド数を設定します。同時マルチスレッドを無効にするには、`1` を選択します。
   + 2 番目のセレクターを使用して、インスタンスで実行される CPU の数を設定します。

   CPU オプションセレクタを変更すると、次のフィールドが動的に更新されます。
   + **[アクティブな vCPU]**: 行った選択に基づいて、CPU コアの数にコアあたりのスレッドを乗算します。例えば、2 つのスレッドと 4 つのコアを選択した場合、8 つの vCPU となります。
   + **[vCPU の合計]**： インスタンスタイプの vCPU の最大数。例えば、`m6i.4xlarge` インスタンスタイプの場合、これは 16 vCPU (それぞれ 2 つのスレッドを実行する 8 個のコア) です。

1. **[変更]** を選択して更新を適用します。

------
#### [ AWS CLI ]

AWS CLI からインスタンスのアクティブな vCPU の数を変更するには次の手順に従います。

[modify-instance-cpu-options](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ec2/modify-instance-cpu-options.html) `--core-count` コマンドを使用して、 パラメータで実行される CPU コアの数と、`--threads-per-core` パラメータでコアごとに実行されるスレッドの数を指定します。

次の例は、指定されたインスタンスで 8 個の vCPU を実行するために `m6i.4xlarge` インスタンスタイプで行うことができる 2 つの設定を説明しています。このインスタンスタイプのデフォルトは 16 vCPU (それぞれ 2 つのスレッドを実行する 8 個のコア) です。

**例 1:** 4 つの CPU コアを 1 コアあたり 2 つのスレッドで実行し、合計 8 つの vCPU を実行します。

```
aws ec2 modify-instance-cpu-options \
    --instance-id i-1234567890abcdef0 \

    --core-count=4 \
    --threads-per-core=2
```

**例 2:** コアごとに実行されるスレッドの数を `1` に変更して、同時マルチスレッドを無効にします。結果の設定では合計 8 つの vCPU (コアあたり 1 つのスレッドで 8 つの CPU コア) も実行されます。

```
aws ec2 modify-instance-cpu-options \
    --instance-id 1234567890abcdef0 \
    --core-count=8 \
    --threads-per-core=1
```

------
#### [ PowerShell ]

**インスタンスのアクティブな vCPU の数を変更するには**  
[Edit-EC2InstanceCpuOption](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceCpuOption.html) コマンドレットを使用し、`-CoreCount` パラメータで実行する CPU コアの数を指定し、`ThreadsPerCore` パラメータでコアごとに実行するスレッドの数を指定します。

**例 1:** 4 つの CPU コアを 1 コアあたり 2 つのスレッドで実行し、合計 8 つの vCPU を実行します。

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

**例 2:** コアごとに実行されるスレッドの数を `1` に変更して、同時マルチスレッドを無効にします。結果の設定では合計 8 つの vCPU (コアあたり 1 つのスレッドで 8 つの CPU コア) も実行されます。

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

------