Disons que j'exécute un service multitraitement dans un conteneur docker engendrant plusieurs processus, est-ce que docker utiliserait tous / plusieurs cœurs / processeurs de l'hôte ou juste un?
120
Disons que j'exécute un service multitraitement dans un conteneur docker engendrant plusieurs processus, est-ce que docker utiliserait tous / plusieurs cœurs / processeurs de l'hôte ou juste un?
--cpuset-cpus
si vous vouliez changer cela.Réponses:
Comme Charles le mentionne, par défaut, tout peut être utilisé, ou vous pouvez le limiter par conteneur en utilisant le
--cpuset-cpus
paramètre.Cela limiterait le conteneur à 3 processeurs (0, 1 et 2). Consultez la documentation d'exécution du docker pour plus de détails.
La meilleure façon de limiter l'utilisation du processeur des conteneurs est avec une limite fractionnaire sur les processeurs:
Cela limiterait votre conteneur à 2,5 cœurs sur l'hôte.
Enfin, si vous exécutez docker à l'intérieur d'une machine virtuelle, y compris Docker pour Mac, Docker pour Windows et docker-machine, ces machines virtuelles auront une limite de processeur distincte de votre ordinateur portable lui-même. Docker s'exécute à l'intérieur de cette VM et utilisera toutes les ressources données à la VM elle-même. Par exemple, avec Docker pour Mac, vous avez le menu suivant:
la source
Peut-être que votre VM hôte n'a qu'un seul cœur par défaut. Par conséquent, vous devez d'abord augmenter le nombre de processeurs de votre VM , puis utiliser l' option --cpuset-cpus pour augmenter vos cœurs de docker. Vous pouvez supprimer la machine virtuelle par défaut du docker à l'aide de la commande suivante, puis vous pouvez créer une autre machine virtuelle avec un nombre de processeurs et une taille de mémoire facultatifs :
Après cette étape, vous pouvez spécifier le nombre de cœurs avant d'exécuter votre image. cette commande utilisera 4 cœurs sur un total de 8 cœurs.
Ensuite, vous pouvez vérifier le nombre de cœurs disponibles dans votre image à l'aide de cette commande:
la source