Riservare la memoria delle istanze del contenitore Amazon ECS Linux - Amazon Elastic Container Service

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Riservare la memoria delle istanze del contenitore Amazon ECS Linux

Quando l'agente container Amazon ECS registra un'istanza di contenitore in un cluster, deve determinare la quantità di memoria disponibile nell'istanza del contenitore da riservare per le tue attività. A causa dei costi del sovraccarico di memoria della piattaforma e della memoria occupata dal kernel del sistema, questo numero è diverso rispetto alla quantità di memoria installata pubblicizzata per le istanze Amazon EC2. Ad esempio, un'istanza m4.large dispone di 8 GiB di memoria installata. Tuttavia, ciò non sempre si traduce esattamente in 8192 MiB di memoria disponibili per le attività quando l'istanza del contenitore si registra.

L'agente container Amazon ECS fornisce una variabile di configurazione chiamataECS_RESERVED_MEMORY, che puoi usare per rimuovere un numero specifico di MiB di memoria dal pool assegnato alle tue attività. In questo modo si riserva la memoria per i processi di sistema critici.

Se occupi tutta la memoria di un'istanza del contenitore per le tue attività, è possibile che queste abbiano a che fare con processi di sistema critici per la memoria e che possano causare un errore di sistema.

Ad esempio, se si specifica ECS_RESERVED_MEMORY=256 nel file di configurazione dell'agente del container, l'agente registra la memoria totale -256 MiB per quell'istanza e 256 MiB di memoria non possono essere allocati da task ECS. Per ulteriori informazioni sulle variabili dell'agente e su come impostarle, vedere Configurazione dell'agente del container Amazon ECS e Avvio delle istanze di container Amazon ECS Linux per il trasferimento di dati.

Se specifichi 8192 MiB per l'attività e nessuna delle istanze del contenitore dispone di 8192 MiB o più di memoria disponibile per soddisfare questo requisito, l'attività non può essere inserita nel cluster. Se si utilizza un ambiente di elaborazione gestito, è AWS Batch necessario avviare un tipo di istanza più grande per soddisfare la richiesta.

È inoltre necessario riservare parte della memoria per l'agente del container di Amazon ECS e per altri processi di sistema critici nelle istanze di container, in modo che i container dell'attività non si contendano la stessa memoria e finiscano con l'attivare un errore di sistema.

L'agente del container di Amazon ECS utilizza la funzione Docker ReadMemInfo() per eseguire una query sulla memoria totale disponibile per il sistema operativo. Sia Linux che Windows forniscono utilità da riga di comando per determinare la memoria totale.

Esempio - Determinare la memoria totale in Linux

Il comando free restituisce la memoria totale riconosciuta dal sistema operativo.

$ free -b

Esempio di output per un'istanza m4.large che esegue l'AMI Amazon Linux ottimizzata per Amazon ECS.

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

Questa istanza ha 8373026816 byte di memoria totale, che si traducono in 7985 MiB disponibili per le attività.

Esempio - Determinare la memoria totale in Windows

Il comando wmic restituisce la memoria totale riconosciuta dal sistema operativo.

C:\> wmic ComputerSystem get TotalPhysicalMemory

Esempio di output per un'm4.largeistanza che esegue l'AMI Windows Server ottimizzata per Amazon ECS.

TotalPhysicalMemory 8589524992

Questa istanza ha 8589524992 byte di memoria totale, che si traducono in 8191 MiB disponibili per le attività.

Visualizzazione della memoria dell'istanza del contenitore

Puoi visualizzare la quantità di memoria con cui registra un'istanza del contenitore nella console Amazon ECS (o con l'operazione DescribeContainerInstancesAPI). Se stai cercando di massimizzare l'utilizzo delle risorse fornendo alle tue attività quanta più memoria possibile per un particolare tipo di istanza, puoi osservare la memoria disponibile per quell'istanza del contenitore e quindi assegnare alle tue attività quella quantità di memoria.

Per visualizzare la memoria dell'istanza del contenitore
  1. Apri la console all'indirizzo https://console.aws.amazon.com/ecs/v2.

  2. Nel riquadro di navigazione, scegli Cluster, quindi scegli il cluster che ospita l'istanza del contenitore.

  3. Scegli Infrastruttura, quindi in Istanze di container, scegli un'istanza di contenitore.

  4. La sezione Risorse mostra la memoria registrata e disponibile per l'istanza del contenitore.

    Il valore di memoria registrata è quello dell'istanza del contenitore, registrato con Amazon ECS al primo avvio, e il valore di memoria disponibile è quello che non è già stato assegnato alle attività.