web-dev-qa-db-fra.com

Que signifie le paramètre «cpu» dans le service de conteneur aws?

Je vais enregistrer une nouvelle tâche dans le service de conteneur pour t2.medium. J'ai vu des exemples où le paramètre cpu est égal à 0. J'essaie de savoir ce que c'est et combien je dois mettre ici pour une tâche.

Tout ce que j'ai pu trouver selon cette question: http://docs.aws.Amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html?shortFooter=truehttp://docs.aws.Amazon.com/AmazonECS/latest/developerguide/example_task_definitions.html

27
nightmare

"Le nombre d'unités CPU à réserver pour le conteneur. Une instance de conteneur a 1 024 unités CPU pour chaque cœur de CPU. Ce paramètre spécifie la quantité minimale de CPU à réserver pour un conteneur, et les conteneurs partagent des unités CPU non allouées avec d'autres conteneurs sur l'instance. avec le même rapport que leur montant alloué. Ce paramètre est mappé à CpuShares dans la section Créer un conteneur de l'API Docker Remote et l'option --cpu-share à docker run. "

Un t2.medium possède 2 processeurs virtuels, il a donc 2 048 unités centrales disponibles à planifier. Si vous ne voulez qu'un seul conteneur s'exécutant sur l'hôte, vous pouvez budgéter les 2 048 unités centrales, mais aucun autre conteneur ne sera jamais placé sur cet hôte.

Les conteneurs ont toujours la garantie d'obtenir au moins leur CPU budgété quand ils en ont besoin. De plus, une chose intéressante à propos des unités CPU est qu'un conteneur peut éclater au-dessus de ses unités allouées si aucun autre conteneur n'utilise la ressource. Par exemple, si vous avez deux tâches exécutées sur un t2.medium, chacune avec 1 024 unités centrales budgétisées, chaque tâche peut exploser individuellement jusqu'à 2 048 étant donné que l'autre tâche est complètement inactive. Lorsque vous commencez à partager des hôtes de cette façon, vous pouvez vraiment faire des économies sur l'utilisation d'ECS.

De plus, si toutes les UC ne sont pas budgétisées, ECS répartira automatiquement les UC restantes dans chaque conteneur au rapport de leurs UC budgétisées. Donc, si vous avez deux tâches s'exécutant sur un t2.medium chacune avec 0 UC, chaque conteneur obtiendra effectivement 1 024 UC, car aucun autre conteneur ne les a réservées.

Une chose à noter ici est que la mémoire fonctionne un peu différemment; c'est une limite stricte. Si le conteneur essaie jamais d'allouer plus de mémoire que prévu, la tâche/le conteneur se fermera. Vous pouvez sous-approvisionner les unités centrales et généralement vous en tirer (car les conteneurs peuvent éclater au-dessus de leur capacité), mais vous devez vous assurer de respecter vos contraintes de mémoire.


Exemple: si vous le définissez sur 0, il prendra une quantité proportionnelle du processeur non réservé. Supposons que ces scénarios soient sur t2.mediums avec 2 048 unités centrales:

Tâche # 1 - 0 UC, Tâche # 2 - 0 UC: Dans cette situation, la Tâche # 1 et la Tâche # 2 recevront 1 024 UC, car il y a 2 048 unités non réservées. Étant donné que les tâches sont de 1: 1 pour les réservations d'unité centrale, elles obtiendront toutes deux une part égale des unités centrales disponibles.

Tâche # 1 - 0 UC, Tâche # 2 - 1 024 UC: la tâche # 2 recevra 2 048 unités UC et la tâche # 1 0 car elle essaie de diviser 1 024 UC non utilisées dans un rapport de 0: 1,024.

Tâche n ° 1 - 0 UC: Si une seule tâche se trouve sur la machine, elle recevra toutes les 2 048 UC, car toutes les unités sont inutilisées, elles sont réparties entre les conteneurs selon un ratio de leur réservation.

53
louahola