Skip to content

Que savoir à propos de l’attribution du processeur dans Amazon ECS ?

Lecture de 6 minute(s)
0

Je souhaite attribuer le processeur à des tâches dans Amazon Elastic Container Service (Amazon ECS), mais je ne sais pas comment procéder.

Brève description

Lorsque vous créez une définition de tâche dans Amazon ECS, vous pouvez définir des limites pour les ressources du processeur au niveau de la tâche et du conteneur. Ces limites peuvent affecter les performances globales de votre cluster Amazon ECS. En fonction des comportements d’Amazon ECS et de votre cas d’utilisation, ajustez les valeurs d’attribution du processeur aux niveaux de la tâche et du conteneur. Utilisez les informations suivantes pour déterminer l’attribution de processeur qui répond aux exigences de votre charge de travail et de vos applications.

Résolution

Amazon ECS utilise une unité de mesure standard pour les ressources du processeur appelée unités de processeur. Par exemple, 1 024 unités de processeur équivalent à 1 processeur virtuel pour Linux et 2 048 unités de processeur équivalent à 2 processeurs virtuels. Lorsque vous définissez des tâches, vous pouvez utiliser 1 vCPU au lieu de 1 024. Lorsque la définition de tâche est enregistrée, ECS traduit la valeur en unités.

Remarque : Les paramètres du processeur et de la mémoire au niveau des tâches sont ignorés pour les conteneurs Windows. La meilleure pratique pour les conteneurs Windows est de spécifier les ressources au niveau du conteneur. Pour plus d’informations, consultez Taille de la tâche.

Attribution du processeur au niveau des tâches

Vous pouvez exécuter des tâches Amazon ECS sur des instances AWS Fargate ou Amazon Elastic Compute Cloud (Amazon EC2).

Pour les instances Linux, le paramètre cpu que vous définissez au niveau de la tâche définit également les ressources de processeur maximales autorisées pour les tâches dans ce conteneur. Les conteneurs qui s’exécutent dans cette configuration de tâches ne peuvent utiliser que la capacité du processeur définie par la taille de la tâche.

AWS Fargate

Pour Linux et Windows, AWS Fargate requiert un paramètre cpu au niveau de la tâche pour attribuer les ressources demandées à la tâche. Vous pouvez sélectionner memory et cpu parmi les tailles de tâches prédéfinies disponibles pour AWS Fargate.

Amazon EC2

Remarque : pour les tâches qui s’exécutent sur Amazon EC2 Linux, le paramètre cpu est facultatif.

Si vous définissez le paramètre cpu dans Linux, ce paramètre présente les limites suivantes :

  • L’accès à vos conteneurs est limité en fonction de la quantité de processeur que vous définissez au niveau de la tâche.
  • La valeur que vous définissez dans votre paramètre Task cpu devient la réservation de processeur pour la tâche planifiée sur une instance de conteneur.
  • Les unités cpu affectées aux conteneurs utilisent les parts du processeur Linux pour mettre en œuvre les parts au sein de la tâche. Le processeur Linux est un mécanisme pondéré permettant de déterminer la priorité d’accès au processeur.

Dans l’exemple suivant, un paramètre cpu est défini comme suit sur Amazon EC2 :

  • une instance EC2 m5.large enregistrée dans un cluster ECS comme instance de conteneur pour un total de 2 048 unités de processeur.
  • Une tâche avec le processeur : 1 024 définis dans les définitions au niveau des tâches sont en cours d’exécution sur l’instance.
  • L’instance EC2 CPUUtilization actuelle est à 68 %.

Dans l’exemple précédent, la configuration dispose de 1 024 unités de processeur restantes dans son groupe.

La CPUUtilization actuelle n’affecte pas le nombre d’unités de processeur disponibles dans l’instance de conteneur pour planifier les tâches. Si l’instance est utilisée à plus de 50 %, la moitié des unités du groupe d’instances sont disponibles pour démarrer de nouvelles tâches. Le paramètre agit comme une réservation et une limite du processeur. Il ne se traduit pas directement par l’utilisation du processeur.

En utilisant les paramètres de l’exemple précédent, vous disposez de plusieurs configurations possibles si vous ne tenez compte que du processeur :

  • Vous pouvez planifier deux tâches supplémentaires avec cpu: 512 définies au niveau de la tâche ou du conteneur.
  • Vous pouvez planifier une tâche avec deux conteneurs dotés d’un cpu: 1024 défini au niveau de la tâche et d’un cpu: 512 défini au niveau du conteneur. Vous pouvez définir ces niveaux dans chacun des deux conteneurs.
  • Si le cpu n’est pas défini, vous pouvez planifier autant de tâches que peut prendre en charge ECS pour le mode réseau que vous avez sélectionné. Les unités de processeur disponibles dans votre instance de conteneur ECS pour la planification ne sont pas affectées.

Attribution de processeurs au niveau du conteneur

Les définitions cpu au niveau du conteneur sont prises en compte au moment de la planification et au moment de l’exécution lorsqu’il n’existe pas de conflit de processeur.

Au moment de la planification

Les définitions cpu au niveau du conteneur sont prises en compte au moment de la planification :

  • Lorsque la définition cpu au niveau de la tâche n’est pas définie, le nombre total d’unités de processeurs définies dans vos conteneurs devient la réservation de processeurs.
  • Le nombre total d’unités de processeur dans votre définition cpu au niveau du conteneur ne peut pas être supérieur aux unités de processeur définies dans votre attribution au niveau de la tâche.

Au moment de l’exécution, lorsqu’il n’existe pas de conflit de processeur

Les définitions cpu suivantes au niveau du conteneur sont prises en compte au moment de l’exécution lorsqu’il n’existe pas de conflit de processeur :

  • Si la définition du niveau de tâche cpu est définie, vos conteneurs n’ont accès qu’aux ressources cpu jusqu’à la valeur définie au niveau de tâche cpu.
  • Si la définition de cpu au niveau de la tâche n’est pas définie, les conteneurs de votre tâche ont accès à toutes les ressources du processeur disponibles dans votre instance. Les conteneurs peuvent accéder aux ressources indépendamment de la définition cpu définie au niveau du conteneur.
  • Si vous utilisez Windows et que la définition cpu au niveau de la tâche n’est pas prise en charge, les conteneurs sont plafonnés au niveau cpu du conteneur.

Remarque : Sur les instances de conteneur Windows, le quota de processeur est appliqué comme quota absolu. Pour plus d’informations, consultez Environnement.

Pour les instances de conteneur Linux, les définitions cpu au niveau du conteneur sont directement mappées aux paramètres CpuShares. Pour plus d’informations, consultez Créer une API de conteneur sur le site Web de Docker.

Conflit de processeur

Le conflit de processeur se produit lorsque plusieurs processus demandent du temps d’utilisation de cpu. En cas de conflit de processeur, vos conteneurs sont limités à la quantité de ressources que vous définissez sur votre cpu au niveau de la définition du conteneur.

Important : vérifiez que l’application que vous exécutez sur ECS est compatible avec les conteneurs. Certaines applications, à l’instar de Java 10, sont compatibles avec les conteneurs et n’utilisent que les limites définies dans la définition cpu au niveau du conteneur. Ces applications utilisent la définition au niveau du conteneur même en cas de conflit de processeur.

Informations connexes

Comment attribuer de la mémoire aux tâches dans Amazon ECS ?

AWS OFFICIELA mis à jour il y a un an