Gestion de la mémoire des instances de conteneurs - Amazon Elastic Container Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Gestion de la mémoire des instances de conteneurs

Lorsque l'agent de conteneur Amazon ECS enregistre une instance de conteneur dans un cluster, il doit déterminer la quantité de mémoire disponible que l'instance de conteneur peut réserver pour vos tâches. En raison de la surcharge de mémoire de la plateforme et de la mémoire utilisée par le noyau du système, ce nombre est différent de la quantité de mémoire installée qui est annoncée pour les instances Amazon EC2. Par exemple, une instance m4.large a 8 Gio de mémoire installée. Cependant, cela ne se traduit pas toujours par exactement 8192 MiB de mémoire disponible pour les tâches lors de l'enregistrement de l'instance de conteneur.

L'agent de conteneur Amazon ECS fournit une variable de configuration appeléeECS_RESERVED_MEMORY, que vous pouvez utiliser pour supprimer un nombre spécifié de MiB de mémoire du pool alloué à vos tâches. Cela réserve de manière effective cette quantité de mémoire pour les processus système critiques.

Si vos tâches occupent toute la mémoire d'une instance de conteneur, il est possible que celles-ci soient confrontées à des processus critiques du système en termes de mémoire et qu'elles soient à l'origine d'une défaillance du système.

Par exemple, si vous spécifiez ECS_RESERVED_MEMORY=256 dans votre fichier de configuration de l'agent de conteneur, l'agent enregistre la mémoire totale, moins 256 Mio pour cette instance. 256 Mio de mémoire ne sont donc pas allouées par des tâches ECS. Pour plus d'informations sur les variables de configuration de l'agent et la façon de les définir, consultez Configuration de l'agent de conteneur Amazon ECS et Démarrage des instances de conteneur avec les données utilisateur d'Amazon EC2.

Si vous spécifiez 8192 Mo pour la tâche et qu'aucune de vos instances de conteneur ne dispose de 8192 Mo ou plus de mémoire disponible pour satisfaire cette exigence, la tâche ne peut pas être placée dans votre cluster. Si vous utilisez un environnement informatique géré, vous AWS Batch devez lancer un type d'instance plus important pour répondre à la demande.

Vous devez également réserver une partie de la mémoire pour l'agent de conteneur Amazon ECS et d'autres processus système critiques sur vos instances de conteneur, afin que les conteneurs de votre tâche ne se disputent pas la même mémoire, ce qui pourrait provoque une défaillance du système.

L'agent de conteneur Amazon ECS utilise la fonction ReadMemInfo() Docker pour connaître la mémoire totale disponible pour le système d'exploitation. Linux et Windows fournissent tous deux des utilitaires de ligne de commande pour déterminer la mémoire totale.

Exemple - Déterminer la mémoire totale Linux

La commande free renvoie la mémoire totale reconnue par le système d'exploitation.

$ free -b

Exemple de sortie d'une instance m4.large exécutant l'AMI Amazon Linux optimisée pour Amazon ECS.

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

Cette instance comporte 8373026816 octets de mémoire totale, soit 7 985 Mio disponible pour les tâches.

Exemple - Déterminer la mémoire totale Windows

La commande wmic renvoie la mémoire totale reconnue par le système d'exploitation.

C:\> wmic ComputerSystem get TotalPhysicalMemory

Exemple de sortie pour une m4.large instance exécutant l'AMI Windows Server optimisée pour Amazon ECS.

TotalPhysicalMemory 8589524992

Cette instance comporte 8589524992 octets de mémoire totale, soit 8 191 Mio disponible pour les tâches.

Affichage de la mémoire d'une instance de conteneur

Vous pouvez voir la quantité de mémoire utilisée par une instance de conteneur dans la console Amazon ECS (ou dans le cadre de l'opération DescribeContainerInstancesAPI). Si vous essayez de maximiser l'utilisation de vos ressources en fournissant à vos tâches autant de mémoire que possible pour un type d'instance particulier, vous pouvez observer la mémoire disponible pour cette instance de conteneur, puis attribuer cette quantité de mémoire à vos tâches.

Pour afficher la mémoire d'une instance de conteneur
  1. Ouvrez la console à partir de l'adresse https://console.aws.amazon.com/ecs/v2.

  2. Dans le volet de navigation, choisissez Clusters, puis choisissez le cluster qui héberge votre instance de conteneur.

  3. Choisissez Infrastructure, puis sous Instances de conteneur, choisissez une instance de conteneur.

  4. La section Ressources indique la mémoire enregistrée et disponible pour l'instance de conteneur.

    La valeur de mémoire enregistrée correspond à l'instance de conteneur ; enregistrée auprès d'Amazon ECS lors de son premier lancement, et la valeur de mémoire disponible correspond à ce qui n'a pas encore été alloué aux tâches.