Mon scénario spécifique est le suivant. Je lance un docker avec un cpuset spécifique:
docker run --cpuset-cpus="0-2" # ...
à l'intérieur de ce conteneur, je lance un script shell comme point d'entrée et ce script shell s'exécutera make
à un moment donné. Je voudrais savoir quel serait un bon nombre d'emplois ( -j
). Je pourrais bien sûr transmettre le nombre de CPU alloués dans l'environnement, mais un moyen automatique de le détecter serait de loin préférable.
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 en cours, mais je ne sais pas comment récupérer le nombre réel de CPU autorisés. Je voudrais éviter d'analyser la sortie de ces commandes ou de jouer avec le Cpus_allowed
masque, mais je le ferai quand je n'aurai plus d'options.
nproc
- imprimer le nombre d'unités de traitement disponiblesRéponses:
Vous pouvez utiliser l'
nproc
outil de script shell.Ce serait donc
-j$(nproc)
dans la ligne de commande make en question.la source
--cpus="2"
ne limite pas le nombre d'unités de traitement et est équivalent à-cpu-period="100000" and --cpu-quota="200000"
.