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
Abra o console em https://console.aws.amazon.com/ecs/v2
. -
No painel de navegação, escolha Clusters e selecione o cluster que hospeda a instância de contêiner.
-
Escolha Infraestrutura e, em Instâncias de contêiner, selecione uma instância de contêiner.
-
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.