Gerenciar o espaço de memória de troca de contêiner no Amazon ECS - Amazon Elastic Container Service

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 de maxSwap.

Se um valor maxSwap de 0 for especificado, o contêiner não usará a troca. Os valores aceitos são 0 ou qualquer número inteiro positivo. Se o parâmetro maxSwap 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 valor maxSwap deve ser definido para que o parâmetro swappiness seja usado.

swappiness

É possível usar isso para ajustar o comportamento de troca de memória de um contêiner. Um valor swappiness igual a 0 faz com que a troca não ocorra, a menos que ela seja necessária. Um valor swappiness de 100 fará com que as páginas sejam trocadas de forma agressiva. Os valores aceitos são números inteiros entre 0 e 100. Se o parâmetro swappiness não for especificado, será usado um valor padrão de 60. Se nenhum valor for especificado para maxSwap, 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 e swappiness de definição de contêiner forem omitidos de uma definição de tarefa, cada contêiner terá um valor swappiness padrão de 60. 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.