View a markdown version of this page

Considérations relatives à la mémoire et au processeur virtuel pour AWS Batch sur Amazon EKS - AWS Batch

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.

Considérations relatives à la mémoire et au processeur virtuel pour AWS Batch sur Amazon EKS

Dans AWS Batch Amazon EKS, vous pouvez spécifier les ressources mises à la disposition d'un conteneur. Par exemple, vous pouvez spécifier requests des limits valeurs pour le processeur virtuel et les ressources mémoire.

Les contraintes suivantes s'appliquent à la spécification des ressources vCPU :

  • Au moins un processeur virtuel requests ou une limits valeur doivent être spécifiés.

  • Une unité vCPU équivaut à un cœur physique ou virtuel.

  • La valeur du processeur virtuel doit être saisie en nombres entiers ou par incréments de 0,25.

  • La plus petite valeur de processeur virtuel valide est 0,25.

  • Si les deux sont spécifiés, la requests valeur doit être inférieure ou égale à la limits valeur. De cette façon, vous pouvez configurer à la fois des configurations de processeurs virtuels et des configurations matérielles de processeurs virtuels.

  • Les valeurs vCPU ne peuvent pas être spécifiées au format milliCPU. Par exemple, 100m n'est pas une valeur valide.

  • AWS Batch utilise la requests valeur pour les décisions de dimensionnement. Si aucune requests valeur n'est spécifiée, elle est copiée dans la requests valeur. limits

Les contraintes suivantes s'appliquent à la spécification des ressources mémoire :

  • Au moins une mémoire requests ou une limits valeur doit être spécifiée.

  • Les valeurs de mémoire doivent être comprises mebibytes entre (MiBs).

  • Si les deux sont spécifiés, la requests valeur doit être égale à la limits valeur.

  • AWS Batch utilise la requests valeur pour les décisions de dimensionnement. Si aucune requests valeur n'est spécifiée, elle est copiée dans la requests valeur. limits

Les contraintes suivantes s'appliquent à la spécification des ressources GPU :

  • Si les deux sont spécifiés, la requests valeur doit être égale à la limits valeur.

  • AWS Batch utilise la requests valeur pour les décisions de dimensionnement. Si aucune requests valeur n'est spécifiée, elle est copiée dans la requests valeur. limits

Exemple : définitions de poste

La section suivante AWS Batch sur la définition de tâche Amazon EKS permet de configurer les partages de processeurs virtuels souples. Cela permet AWS Batch à Amazon EKS d'utiliser toute la capacité du processeur virtuel pour le type d'instance. Toutefois, si d'autres tâches sont en cours d'exécution, un maximum de 2 processeurs virtuels leur est alloué. La mémoire est limitée à 2 Go.

{ "jobDefinitionName": "MyJobOnEks_Sleep", "type": "container", "eksProperties": { "podProperties": { "containers": [ { "image": "public.ecr.aws/amazonlinux/amazonlinux:2", "command": ["sleep", "60"], "resources": { "requests": { "cpu": "2", "memory": "2048Mi" } } } ] } } }

La définition de tâche suivante AWS Batch sur Amazon EKS a une request valeur de 1 et alloue un maximum de 4 vCPU à la tâche.

{ "jobDefinitionName": "MyJobOnEks_Sleep", "type": "container", "eksProperties": { "podProperties": { "containers": [ { "image": "public.ecr.aws/amazonlinux/amazonlinux:2", "command": ["sleep", "60"], "resources": { "requests": { "cpu": "1" }, "limits": { "cpu": "4", "memory": "2048Mi" } } } ] } } }

La définition de tâche suivante AWS Batch sur Amazon EKS définit une limits valeur de processeur virtuel de 1 Go 1 et une limits valeur de mémoire de 1 Go.

{ "jobDefinitionName": "MyJobOnEks_Sleep", "type": "container", "eksProperties": { "podProperties": { "containers": [ { "image": "public.ecr.aws/amazonlinux/amazonlinux:2", "command": ["sleep", "60"], "resources": { "limits": { "cpu": "1", "memory": "1024Mi" } } } ] } } }

Lorsque vous AWS Batch traduisez une AWS Batch tâche Amazon EKS en un module Amazon EKS, AWS Batch copiez la limits valeur dans la requests valeur. C'est le cas si requests aucune valeur n'est spécifiée. Lorsque vous soumettez l'exemple de définition de tâche précédent, le module spec est le suivant.

apiVersion: v1 kind: Pod ... spec: ... containers: - command: - sleep - 60 image: public.ecr.aws/amazonlinux/amazonlinux:2 resources: limits: cpu: 1 memory: 1024Mi requests: cpu: 1 memory: 1024Mi ...

Réservations du processeur et de la mémoire des nœuds

AWS Batch s'appuie sur la logique par défaut du bootstrap.sh fichier pour les réservations de processeur virtuel et de mémoire. Pour plus d'informations sur le bootstrap.sh fichier, consultez le fichier bootstrap.sh. Lorsque vous dimensionnez votre processeur virtuel et vos ressources mémoire, considérez les exemples suivants.

Note

Si aucune instance n'est en cours d'exécution, les réservations de processeur virtuel et de mémoire peuvent initialement affecter la logique de AWS Batch dimensionnement et la prise de décision. Une fois les instances exécutées, AWS Batch ajuste les allocations initiales.

Exemple : réservation du processeur du nœud

La valeur de réservation du processeur est calculée en millicores en utilisant le nombre total de vCPU disponibles pour l'instance.

Numéro du processeur virtuel Pourcentage réservé
1 6 %
2 1 %
3-4 0.5%
4 et plus 0,25 %

En utilisant les valeurs précédentes, ce qui suit est vrai :

  • La valeur de réservation du processeur pour une c5.large instance avec 2 vCPU est de 70 m. Ceci est calculé de la manière suivante : (1*60) + (1*10) = 70 m.

  • La valeur de réservation du processeur pour une c5.24xlarge instance comportant 96 vCPU est de 310 m. Ceci est calculé de la manière suivante : (1*60) + (1*10) + (2*5) + (92*2,5) = 310 m.

Dans cet exemple, 1 930 unités vCPU millicores (calculées entre 2000 et 70) sont disponibles pour exécuter des tâches sur une instance. c5.large Supposons que votre tâche nécessite des unités vCPU 2 (2 x 1 000 m), la tâche ne tient pas sur une seule instance. c5.large Cependant, une tâche qui nécessite des unités 1.75 vCPU convient.

Exemple : réservation de la mémoire des nœuds

La valeur de réservation de mémoire est calculée en mébioctets comme suit :

  • Capacité de l'instance en mégaoctets. Par exemple, une instance de 8 Go correspond à 7 748MiB.

  • La kubeReserved valeur. La kubeReserved valeur est la quantité de mémoire à réserver aux démons système. La kubeReserved valeur est calculée de la manière suivante : ((11 * nombre maximum de pods pris en charge par le type d'instance) + 255). Pour plus d'informations sur le nombre maximum de pods pris en charge par un type d'instance, consultez instance-info.jsonl

  • La HardEvictionLimit valeur. Lorsque la mémoire disponible tombe en dessous de HardEvictionLimit cette valeur, l'instance tente d'expulser les pods.

La formule pour calculer la mémoire allouable est la suivante : (instance_capacity_in_MiB) - (11 * (maximum_number_of_pods)) - 255 - (HardEvictionLimit value.)).

Une c5.large instance prend en charge jusqu'à 29 pods. Pour une c5.large instance de 8 Go d'une HardEvictionLimit valeur de 100 MiB, la mémoire allouable est de 7074. MiB Ceci est calculé de la manière suivante : (7748 - (11 * 29) -255 -100) = 7074 MiB. Dans cet exemple, une MiB tâche de 8 192 ne correspond pas à cette instance, même s'il s'agit d'une instance 8 gibibyte (GiB).

DaemonSets

Lors de l'utilisationDaemonSets, tenez compte des points suivants :

  • Si aucune instance AWS Batch Amazon EKS n'est en cours d'exécution, cela DaemonSets peut initialement affecter la logique de AWS Batch dimensionnement et la prise de décision. AWS Batch alloue initialement 0,5 unité vCPU et 500 MiB comme prévu. DaemonSets Une fois les instances exécutées, AWS Batch ajuste les allocations initiales.

  • Si a DaemonSet définit des limites de processeur virtuel ou de mémoire, AWS Batch sur Amazon EKS, les tâches disposent de moins de ressources. Nous vous recommandons de limiter autant DaemonSets que possible le nombre de personnes affectées à des AWS Batch tâches.