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-swappara execução do docker em que o valor é a soma da memória do contêiner mais o valor demaxSwap.Se um valor
maxSwapde0for especificado, o contêiner não usará a troca. Os valores aceitos são0ou qualquer número inteiro positivo. Se o parâmetromaxSwapfor omitido, o contêiner usará a configuração de troca para a instância de contêiner na qual ele está sendo executado. Um valormaxSwapdeve ser definido para que o parâmetroswappinessseja usado. swappiness-
É possível usar isso para ajustar o comportamento de troca de memória de um contêiner. Um valor
swappinessigual a0faz com que a troca não ocorra, a menos que ela seja necessária. Um valorswappinessde100fará com que as páginas sejam trocadas de forma agressiva. Os valores aceitos são números inteiros entre0e100. Se o parâmetroswappinessnã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-swappinessde 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 atuar como espaço de troca em uma instância do Amazon EC2?
. -
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
maxSwapeswappinessde definição de contêiner forem omitidos de uma definição de tarefa, cada contêiner terá um valorswappinesspadrã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.