web-dev-qa-db-fra.com

Nombre de centables autorisées dans un conteneur Docker

Mon scénario spécifique est ce qui suit. Je lance un conteneur Docker avec une CPUSET spécifique:

docker run --cpuset-cpus="0-2" # ...

à l'intérieur de ce conteneur, j'exécute un script shell comme point d'entrée et ce script shell fonctionnera make à un moment donné. Je voudrais savoir quel bon nombre d'emplois (-j) serait. Je pouvais bien sûr passer le nombre de processeurs alloués à travers l'environnement, mais un moyen automatique de détecter qu'il serait très préféré.

Je sais que je peux utiliser taskset -c -p $$ ou cat /proc/self/status | grep Cpus_allowed_list Pour récupérer le Cpus_allowed Pour le processus actuel, mais je ne sais pas comment récupérer le nombre réel de processeurs autorisés. Je voudrais éviter d'analyser la production de ces commandes ou de violer avec le Cpus_allowed masque, mais le fera, quand des options.

14
pmr

Vous pouvez utiliser l'outil de script shell nproc.

Donc, ce serait -j$(nproc) dans la ligne de commande de marque en question.

19
Brian