

# Solucionar problemas causados por erros de CPU ou memória inválida na definição de tarefa do Amazon ECS
<a name="task-cpu-memory-error"></a>

Ao registrar uma definição de tarefa usando a API do Amazon ECS ou a AWS CLI, se você especificar um valor inválido de `cpu` ou `memory`, será retornado o erro a seguir.

```
An error occurred (ClientException) when calling the RegisterTaskDefinition operation: Invalid 'cpu' setting for task. 
```

**nota**  
Ao usar o Terraform, o erro a seguir pode ser retornado.  

```
Error: ClientException: No Fargate configuration exists for given values.
```

Para resolver esse problema, você deve especificar um valor compatível para a CPU e a memória em sua definição da tarefa. O valor de `cpu` pode ser expresso em unidades de CPU ou vCPUs em uma definição de tarefa. Ele é convertido em um número inteiro que indica as unidades de CPU quando a definição da tarefa é registrada. O valor de `memory` pode ser expresso em MiB ou GB em uma definição de tarefa. Ele é convertido em um número inteiro que indica o valor em MiB quando a definição da tarefa é registrada.

Em definições de tarefa que especificam o `FARGATE` para o parâmetro `requiresCompatibilities` (mesmo se o `EC2` também estiver especificado), você deve usar um dos valores da tabela a seguir. Esses valores determinam sua faixa de valores compatíveis com o parâmetro de CPU e memória.

Para tarefas hospedadas no Fargate, a tabela a seguir mostra as combinações válidas de CPU e memória. Os valores de memória no arquivo JSON são especificados em MiB. É possível converter o valor de GB em MiB multiplicando o valor por 1024. Por exemplo, 1 GB = 1024 MiB.


|  Valor de CPU  |  Valor de memória  |  Sistemas operacionais com suporte para o AWS Fargate  | 
| --- | --- | --- | 
|  256 (0,25 vCPU)  |  512 MiB, 1 GB, 2 GB  |  Linux  | 
|  512 (0,5 vCPU)  |  1 GB, 2 GB, 3 GB, 4 GB  |  Linux  | 
|  1024 (1 vCPU)  |  2 GB, 3 GB, 4 GB, 5 GB, 6 GB, 7 GB, 8 GB  |  Linux, Windows  | 
|  2048 (2 vCPU)  |  Entre 4 GB e 16 GB em incrementos de 1 GB  |  Linux, Windows  | 
|  4096 (4 vCPU)  |  Entre 8 GB e 30 GB em incrementos de 1 GB  |  Linux, Windows  | 
|  8192 (8 vCPU)  Essa opção requer a plataforma Linux `1.4.0` ou posterior.   |  Entre 16 GB e 60 GB em incrementos de 4 GB  |  Linux  | 
|  16384 (16 vCPU)  Essa opção requer a plataforma Linux `1.4.0` ou posterior.   |  Entre 32 GB e 120 GB em incrementos de 8 GB  |  Linux  | 

Em tarefas hospedadas no Amazon EC2, os valores de CPU da tarefa compatível estão entre 0,25 vCPUs e 192 vCPUs.

O mecanismo de controle de CPU difere entre o EC2 e o Fargate:
+ Para tarefas hospedadas no Amazon EC2: o Amazon ECS usa o período da CPU e a cota de CPU para controlar os limites rígidos de CPU do tamanho da tarefa. Quando você especifica a vCPU na definição da tarefa, o Amazon ECS traduz o valor para o período da CPU e as configurações de cota de CPU que se aplicam a `cgroup`.
+ Em tarefas hospedadas no Fargate: o Amazon ECS usa compartilhamentos de CPU para controlar a alocação de CPU. Os valores da cota e do período da CPU não são usados para limitar a CPU em tarefas do Fargate.

Para tarefas do Amazon EC2, a cota de CPU controla a quantidade de tempo de CPU concedida a `cgroup` durante um determinado período de CPU. Ambas as configurações são expressas em termos de microssegundos. Quando a cota de CPU é igual ao período da CPU, isso significa que `cgroup` pode executar até 100% em uma vCPU (ou qualquer outra fração que totalize 100% para várias vCPUs). A cota de CPU tem um máximo de 1.000.000 microssegundos e o período de CPU tem um mínimo de 1 ms. Você pode usar esses valores para definir os limites da contagem de CPUs. Quando você altera o período da CPU sem alterar a cota de CPU, você passa a ter limites efetivos diferentes dos especificados na definição da tarefa.

O período de 100 ms permite vCPUs que variam de 0,125 a 10.

**nota**  
Os parâmetros de CPU e memória em nível de tarefa são ignorados para contêineres do Windows.