

# Especificar opções de CPU para uma instância do Amazon EC2
<a name="instance-specify-cpu-options"></a>

É possível especificar as opções de CPU durante ou após a instância ser iniciada.

**Topics**
+ [Desabilitar multithreading simultâneo](#cpu-options-disable-simultaneous-multithreading)
+ [Especificar um número personalizado de vCPUs na inicialização](#cpu-options-customize-vCPUs-launch)
+ [Especificar um número personalizado de vCPUs em um modelo de execução](#cpu-options-customize-vCPUs-launch-template)
+ [Alterar opções de CPU para a instância do EC2](#change-vCPUs-after-launch)

## Desabilitar multithreading simultâneo
<a name="cpu-options-disable-simultaneous-multithreading"></a>

Para desabilitar o multithreading simultâneo (SMT), também conhecido como hyper-threading, especifique um thread por núcleo.

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

**Desabilitar o SMT durante a inicialização da instância**

1. Siga o procedimento [Executar uma instância do EC2 usando o assistente de inicialização de instâncias no console](ec2-launch-instance-wizard.md) e configure sua instância conforme necessário.

1. Expanda **Detalhes avançados** e marque a caixa de seleção **Especificar opções de CPU**.

1. Em **Contagem de núcleos**, defina o número de núcleos de CPU necessário. Neste exemplo, para especificar a contagem de núcleos de CPU para uma instância `r5.4xlarge`, selecione `8`.

1. Para desabilitar o SMT, em **Threads por núcleo**, selecione **1**.

1. No painel **Resumo**, analise a configuração da instância e selecione **Iniciar instância**. Para obter mais informações, consulte [Executar uma instância do EC2 usando o assistente de inicialização de instâncias no console](ec2-launch-instance-wizard.md).

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

**Desabilitar o SMT durante a inicialização da instância**  
Use o comando [run-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html) da AWS CLI e especifique um valor de `1` para `ThreadsPerCore` no parâmetro `--cpu-options`. Em `CoreCount`, especifique o número de núcleos de CPU. Neste exemplo, para especificar a contagem de núcleos de CPU padrão para uma instância `r7i.4xlarge`, especifique um valor de `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 ]

**Desabilitar o SMT durante a inicialização da instância**  
Use o comando [New-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2Instance.html) e especifique um valor `1` para `ThreadsPerCore` no parâmetro `-CpuOptions`. Em `CoreCount`, especifique o número de núcleos de CPU. Neste exemplo, para especificar a contagem de núcleos de CPU padrão para uma instância `r7i.4xlarge`, especifique um valor de `8`.

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

------

**nota**  
Para desabilitar o SMT para uma instância existente, siga o processo mostrado em [Alterar opções de CPU para a instância do EC2](#change-vCPUs-after-launch) e altere o número de threads executados por núcleo para `1`.

## Especificar um número personalizado de vCPUs na inicialização
<a name="cpu-options-customize-vCPUs-launch"></a>

É possível personalizar o número de núcleos de CPU e de thread por núcleo da instância ao iniciar uma instância do console do EC2 ou da AWS CLI. Os exemplos nesta seção usam um tipo de instância `r5.4xlarge`, que tem as seguintes configurações padrão:
+ Núcleos de CPU: 8
+ Threads por núcleo: 2

Por padrão, as instâncias são iniciadas com o número máximo de vCPUs disponíveis para o tipo de instância. Para esse tipo de instância, são 16 vCPUs no total (8 núcleos executando 2 threads cada). Para obter mais informações sobre este tipo de instância, consulte [Instâncias otimizadas para memória](cpu-options-supported-instances-values.md#cpu-options-mem-optimized).

O exemplo apresentado a seguir inicia uma instância `r5.4xlarge` com quatro vCPUs.

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

**Para especificar um número personalizado de vCPUs durante a execução da instância**

1. Siga o procedimento [Executar uma instância do EC2 usando o assistente de inicialização de instâncias no console](ec2-launch-instance-wizard.md) e configure sua instância conforme necessário.

1. Expanda **Detalhes avançados** e marque a caixa de seleção **Especificar opções de CPU**.

1. Para obter quatro vCPUs, especifique dois núcleos de CPU e dois threads por núcleo, da seguinte forma:
   + Em **Contagem de núcleos**, selecione **2**.
   + For **Threads por núcleo**, selecione **2**.

1. No painel **Resumo**, analise a configuração da instância e selecione **Iniciar instância**. Para mais informações, consulte [Executar uma instância do EC2 usando o assistente de inicialização de instâncias no console](ec2-launch-instance-wizard.md).

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

**Para especificar um número personalizado de vCPUs durante a execução da instância**  
Use o comando [run-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html) da AWS CLI e especifique o número de núcleos de CPU e o número de threads no parâmetro `--cpu-options`. É possível especificar dois núcleos de CPU e dois threads por núcleo para obter quatro vCPUs.

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

Como alternativa, especifique quatro núcleos de CPU e um thread por núcleo (desabilitar o SMT) para obter quatro vCPUs:

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

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

**Para especificar um número personalizado de vCPUs durante a execução da instância**  
Use o comando [New-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2Instance.html) e especifique o número de núcleos de CPU e o número de threads no parâmetro `-CpuOptions`. É possível especificar dois núcleos de CPU e dois threads por núcleo para obter quatro vCPUs.

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

Como alternativa, especifique quatro núcleos de CPU e um thread por núcleo (desabilitar o SMT) para obter quatro vCPUs:

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

------

## Especificar um número personalizado de vCPUs em um modelo de execução
<a name="cpu-options-customize-vCPUs-launch-template"></a>

É possível personalizar o número de núcleos de CPU e de threads por núcleo para a instância em um modelo de execução. Os exemplos nesta seção usam um tipo de instância `r5.4xlarge`, que tem as seguintes configurações padrão:
+ Núcleos de CPU: 8
+ Threads por núcleo: 2

Por padrão, as instâncias são iniciadas com o número máximo de vCPUs disponíveis para o tipo de instância. Para esse tipo de instância, são 16 vCPUs no total (8 núcleos executando 2 threads cada). Para obter mais informações sobre este tipo de instância, consulte [Instâncias otimizadas para memória](cpu-options-supported-instances-values.md#cpu-options-mem-optimized).

O exemplo apresentado a seguir cria um modelo de execução que especifica a configuração para uma instância `r5.4xlarge` com quatro vCPUs.

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

**Para especificar um número personalizado de vCPUs em um modelo de execução**

1. Siga o procedimento [Criar um modelo de execução especificando parâmetros](create-launch-template.md#create-launch-template-define-parameters) e configure seu modelo de execução conforme necessário.

1. Expanda **Detalhes avançados** e marque a caixa de seleção **Especificar opções de CPU**.

1. Para obter quatro vCPUs, especifique dois núcleos de CPU e dois threads por núcleo, da seguinte forma:
   + Em **Contagem de núcleos**, selecione **2**.
   + For **Threads por núcleo**, selecione **2**.

1. No painel **Resumo**, analise a configuração da sua instância e selecione **Criar modelo de execução**. Para mais informações, consulte [Armazenar os parâmetros de execução de instâncias nos modelos de execução do Amazon EC2](ec2-launch-templates.md).

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

**Para especificar um número personalizado de vCPUs em um modelo de execução**  
Use o comando [create-launch-template](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-launch-template.html) da AWS CLI e especifique o número de núcleos de CPU e o número de threads no parâmetro `CpuOptions`. É possível especificar dois núcleos de CPU e dois threads por núcleo para obter quatro vCPUs.

```
aws ec2 create-launch-template \
    --launch-template-name TemplateForCPUOptions \
    --version-description CPUOptionsVersion1 \
    --launch-template-data file://template-data.json
```

Veja a seguir um exemplo de arquivo JSON que contém os dados do modelo de execução, que incluem as opções de CPU, para a configuração da instância para este exemplo.

```
{
    "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
    }
}
```

Outra alternativa é especificar quatro núcleos de CPU e um thread por núcleo (desabilite o SMT) para obter quatro vCPUs:

```
{
    "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 ]

**Para especificar um número personalizado de vCPUs em um modelo de execução**  
Use o [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)
```

------

## Alterar opções de CPU para a instância do EC2
<a name="change-vCPUs-after-launch"></a>

À medida que suas necessidades mudam com o tempo, talvez seja necessário alterar a configuração das opções de CPU para uma instância existente. Cada thread executado na instância é conhecido como CPU virtual (vCPU). É possível alterar o número total de vCPUs que são executadas em uma instância existente no console, na AWS CLI, na API ou nos SDKs do Amazon EC2. O estado da instância deve ser `Stopped` antes que se possa fazer essa alteração.

Para visualizar as etapas do console ou da linha de comando, selecione a guia que corresponde ao ambiente. Para obter informações sobre solicitações e respostas de API, consulte [ModifyInstanceCpuOptions](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifyInstanceCpuOptions.html) na *Referência de API do Amazon EC2*.

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

Siga este procedimento para alterar o número de vCPUs ativas para sua instância usando o Console de gerenciamento da AWS.

1. Abra o console do Amazon EC2 em [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. No painel de navegação à esquerda, selecione **Instâncias**. Esse procedimento abre a lista de instâncias definidas para a Região da AWS atual.

1. Na lista de **Instâncias**, selecione a instância. Outra alternativa é selecionar o link da instância para abrir a página de detalhes da instância.

1. Caso a instância esteja em execução, é necessário interrompê-la antes de continuar. No menu **Estado da instância**, selecione **Interromper instância**.

1. Para alterar a configuração de vCPU, selecione **Alterar opções de CPU** em **Configurações de instância** no menu **Ações**. Esse procedimento abre a página **Alterar opções de CPU**.

1. Selecione uma das seguintes opções de CPU para alterar a configuração da instância.  
**Usar as opções de CPU padrão**  
Essa opção redefine sua instância para o número padrão de vCPUs para o tipo de instância. O padrão é executar todos os threads para todos os núcleos da CPU.  
**Especificar opções de CPU**  
Essa opção permite a configuração do número de vCPUs em execução na sua instância.

1. Se você escolher **Especificar opções de CPU**, os campos **vCPUs ativas** ficarão visíveis.
   + Utilize o primeiro seletor para configurar o número de threads para cada núcleo de CPU. Para desabilitar o multithreading simultâneo, selecione `1`.
   + Utilize o segundo seletor para configurar o número de CPUs que serão executadas na sua instância.

   Os campos a seguir serão atualizados dinamicamente à medida que você fizer alterações nos seletores de opções da CPU:
   + **vCPUs ativas**: o número total de núcleos de CPU multiplicado pelos threads por núcleo, com base nas seleções realizadas. Por exemplo, caso tenha selecionado 2 threads e 4 núcleos, isso equivaleria a 8 vCPUs.
   + **Total de vCPUs**: o número máximo de vCPUs para o tipo de instância. Por exemplo, para um tipo de instância `m6i.4xlarge`, são 16 vCPUs (8 núcleos executando 2 threads cada).

1. Para aplicar suas atualizações, selecione **Alterar**.

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

Siga este procedimento para alterar o número de vCPUs ativas para sua instância usando o AWS CLI.

Use o comando [modify-instance-cpu-options](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ec2/modify-instance-cpu-options.html) e especifique o número de núcleos de CPU que são executados no parâmetro `--core-count` e o número de threads executados por núcleo no parâmetro `--threads-per-core`.

Os exemplos a seguir mostram duas configurações possíveis em um tipo de instância `m6i.4xlarge` para executar 8 vCPUs na instância especificada. O padrão para esse tipo de instância é 16 vCPUs (8 núcleos executando 2 threads cada).

**Exemplo 1:** execute 4 núcleos de CPU com 2 threads por núcleo, totalizando 8 vCPUs.

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

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

**Exemplo 2:** desabilite o multithreading simultâneo alterando o número de threads executados por núcleo para `1`. A configuração resultante também executa um total de 8 vCPUs (8 núcleos de CPU com 1 thread por núcleo).

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

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

**Para alterar o número de vCPUs ativas para uma instância**  
Use o cmdlet [Edit-EC2InstanceCpuOption](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceCpuOption.html) e especifique o número de núcleos de CPU em execução no parâmetro `-CoreCount` e o número de threads executados por núcleo no parâmetro `ThreadsPerCore`.

**Exemplo 1:** execute 4 núcleos de CPU com 2 threads por núcleo, totalizando 8 vCPUs.

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

**Exemplo 2:** desabilite o multithreading simultâneo alterando o número de threads executados por núcleo para `1`. A configuração resultante também executa um total de 8 vCPUs (8 núcleos de CPU com 1 thread por núcleo).

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

------