Gerenciar o espaço de memória de troca de contêiner no Amazon ECS
Com o Amazon ECS, você pode controlar o uso do espaço de memória de troca em suas instâncias do Amazon EC2 baseadas em Linux no nível de contêiner. Utilizando uma configuração de troca de contêiner, cada contêiner de uma definição de tarefa pode ter a troca habilitada ou desabilitada. Para aqueles com troca habilitada, a quantidade máxima de espaço de troca utilizada pode ser limitada. Por exemplo, contêineres críticos para latência podem ter a troca desabilitada. Por outro lado, contêineres com altas demandas de memória transitória podem ter a troca habilitada para reduzir as chances de erros de falta de memória quando o contêiner está sob carga.
A configuração de troca para um contêiner é gerenciada pelos seguintes parâmetros de definição de contêiner.
maxSwap
-
A quantidade total de memória de troca (em MiB) que um contêiner pode usar. Esse parâmetro será convertido na opção
--memory-swap
para execução do docker em que o valor é a soma da memória do contêiner mais o valor demaxSwap
.Se um valor
maxSwap
de0
for especificado, o contêiner não usará a troca. Os valores aceitos são0
ou qualquer número inteiro positivo. Se o parâmetromaxSwap
for omitido, o contêiner usará a configuração de troca para a instância de contêiner na qual ele está sendo executado. Um valormaxSwap
deve ser definido para que o parâmetroswappiness
seja usado. swappiness
-
É possível usar isso para ajustar o comportamento de troca de memória de um contêiner. Um valor
swappiness
igual a0
faz com que a troca não ocorra, a menos que ela seja necessária. Um valorswappiness
de100
fará com que as páginas sejam trocadas de forma agressiva. Os valores aceitos são números inteiros entre0
e100
. Se o parâmetroswappiness
não for especificado, será usado um valor padrão de60
. Se nenhum valor for especificado paramaxSwap
, esse parâmetro será ignorado. Esse parâmetro é mapeado para a opção--memory-swappiness
de execução do docker.
No exemplo abaixo, é fornecida a sintaxe JSON.
"containerDefinitions": [{
...
"linuxParameters": {
"maxSwap": integer
,
"swappiness": integer
},
...
}]
Considerações
Considere o seguinte ao usar uma configuração de troca de contêiner.
-
O espaço de troca deve ser habilitado e alocado na instância do Amazon EC2 que hospeda suas tarefas para os contêineres usarem. As AMIs otimizadas para o Amazon ECS não têm a troca habilitada por padrão. É necessário habilitar a troca na instância para usar esse recurso. Para obter mais informações, consulte Volumes de troca de armazenamento de instâncias no Manual do usuário do Amazon EC2 ou Como alocar memória para funcionar como espaço de troca em uma instância do Amazon EC2 usando uma partição no meu disco rígido?
. -
Os parâmetros de definição do contêiner do espaço de troca são compatíveis somente com definições de tarefa que especificam o tipo de inicialização do EC2. Esses parâmetros não são compatíveis com definições de tarefa destinadas somente ao uso do Amazon ECS no Fargate.
-
Esse recurso é compatível somente com contêineres do Linux. No momento, não há compatibilidade com contêineres do Windows.
-
Se os parâmetros
maxSwap
eswappiness
de definição de contêiner forem omitidos de uma definição de tarefa, cada contêiner terá um valorswappiness
padrão de60
. Além disso, o limite de uso total de trocas é de duas vezes a memória do contêiner. -
Se você estiver usando tarefas no Amazon Linux 2023, não haverá suporte para o parâmetro
swappiness
.