Reserva de memória da instância de contêiner do Linux no Amazon ECS - Amazon Elastic Container Service

Reserva de memória da instância de contêiner do Linux no Amazon ECS

Quando o agente de contêiner do Amazon ECS registra uma instância de contêiner em um cluster, o agente deve determinar a quantidade de memória que a instância de contêiner tem disponível com a finalidade de reservar para as tarefas. Devido à sobrecarga de memória da plataforma e à memória ocupada pelo kernel do sistema, esse número é diferente da memória instalada anunciada para instâncias do Amazon EC2. Por exemplo, uma instância m4.large tem 8 GiB de memória instalada. No entanto, isso nem sempre significa que exatos 8.192 MiB de memória estão disponíveis para as tarefas quando a instância de contêiner é registrada.

O agente de contêiner do Amazon ECS fornece uma variável de configuração denominada ECS_RESERVED_MEMORY, que pode ser usada para remover um número específico de MiB de memória do grupo alocado para as tarefas. Isso reserva de forma efetiva a memória para processos críticos do sistema.

Se você ocupar toda a memória em uma instância de contêiner com as tarefas, é possível que elas disputem a memória com processos essenciais do sistema e iniciem uma falha no sistema.

Por exemplo, se você especificar ECS_RESERVED_MEMORY=256 no arquivo de configuração do agente de contêiner, o agente registrará a memória total menos 256 MiB para essa instância, e 256 MiB de memória não poderão ser atribuídos para tarefas do ECS. Para obter mais informações sobre as variáveis de configuração do agente e como configurá-las, consulte Configuração do agente de contêiner do Amazon ECS e Inicialização de instâncias de contêiner do Linux no Amazon ECS para transmitir dados.

Se você especificar 8.192 MiB para a tarefa e nenhuma de suas instâncias de contêiner tiver 8.192 MiB ou mais de memória disponível para atender a esse requisito, a tarefa não poderá ser posicionada no cluster. Se estiver usando um ambiente de computação gerenciado, o AWS Batch deverá executar um tipo de instância maior para acomodar a solicitação.

Você também deve reservar uma quantidade específica de memória para o agente de contêiner do Amazon ECS e outros processos do sistema essenciais nas instâncias de contêiner, para que os contêineres da tarefa não disputem a mesma memória e não iniciem uma possível falha do sistema.

O agente de contêiner do Amazon ECS usa a função ReadMemInfo() do Docker para consultar a memória disponível total para o sistema operacional. Tanto o Linux quanto o Windows oferecem utilitários de linha de comando para determinar a memória total.

exemplo - Determinar a memória total do Linux

O comando free retorna a memória total reconhecida pelo sistema operacional.

$ free -b

Exemplo de saída para uma instância m4.large executando a AMI do Amazon Linux otimizada para Amazon ECS.

total used free shared buffers cached Mem: 8373026816 348180480 8024846336 90112 25534464 205418496 -/+ buffers/cache: 117227520 8255799296

Essa instância tem 8.373.026.816 bytes de memória total, ou seja, 7.985 MiB estão disponíveis para tarefas.

exemplo - Determinar a memória total do Windows

O comando wmic retorna a memória total reconhecida pelo sistema operacional.

C:\> wmic ComputerSystem get TotalPhysicalMemory

Exemplo de saída para uma instância m4.large executando a AMI do Windows otimizada para o Amazon ECS.

TotalPhysicalMemory 8589524992

Essa instância tem 8.589.524.992 bytes de memória total, ou seja, 8.191 MiB estão disponíveis para tarefas.

Visualização da memória da instância de contêiner

É possível visualizar a quantidade de memória com a qual uma instância de contêiner é registrada no console do Amazon ECS (ou com a operação da API DescribeContainerInstances). Se estiver tentando maximizar a utilização de recursos fornecendo às suas tarefas o máximo de memória possível para um tipo de instância específico, você pode observar a memória disponível para essa instância de contêiner e atribuir essa quantidade de memória às tarefas.

Para visualizar a memória da instância de contêiner
  1. Abra o console em https://console.aws.amazon.com/ecs/v2.

  2. No painel de navegação, escolha Clusters e selecione o cluster que hospeda a instância de contêiner.

  3. Escolha Infraestrutura e, em Instâncias de contêiner, selecione uma instância de contêiner.

  4. A seção Recursos mostra a memória registrada e disponível para a instância de contêiner.

    O valor da memória Registrada é o que a instância de contêiner registrou no Amazon ECS quando foi executada pela primeira vez, e o valor da memória Disponível é o que ainda não foi alocado para tarefas.