Gerenciamento de memória de instâncias de contêiner - Amazon Elastic Container Service

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Gerenciamento de memória de instâncias de contêiner

Quando o agente de contêiner do Amazon ECS registra uma instância de contêiner em um cluster, o agente deve determinar quanta memória a instância de contêiner tem disponível para reservar para suas 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 se traduz em exatamente 8192 MiB de memória disponível para tarefas quando a instância do contêiner é registrada.

O agente de contêiner do Amazon ECS fornece uma variável de configuração chamadaECS_RESERVED_MEMORY, que você pode usar para remover um número específico de MiB de memória do pool que é alocado para suas 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 suas tarefas, é possível que suas tarefas enfrentem processos críticos do sistema para obter memória e, possivelmente, 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 Bootstrap de instâncias de contêiner com dados de usuário do Amazon EC2.

Se você especificar 8192 MiB para a tarefa e nenhuma de suas instâncias de contêiner tiver 8192 MiB ou mais de memória disponível para atender a esse requisito, a tarefa não poderá ser colocada em seu cluster. Se você estiver usando um ambiente computacional gerenciado, AWS Batch deverá iniciar 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 atendente 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 fornecem 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 m4.large instância executando a AMI do Windows Server otimizada para 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.

Visualizando a memória da instância do contêiner

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

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

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

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

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

    O valor da memória registrada é o que é a instância do contêiner; registrada no Amazon ECS quando foi lançada pela primeira vez, e o valor da memória disponível é o que ainda não foi alocado às tarefas.