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.
Vous pouvez utiliser l'outil de script shell nproc
.
Donc, ce serait -j$(nproc)
dans la ligne de commande de marque en question.