Il mio scenario specifico è il seguente. Lancio un contenitore docker con un cpuset specifico:
docker run --cpuset-cpus="0-2" # ...
all'interno di quel contenitore eseguo uno script di shell come punto di ingresso e quello script di shell verrà eseguito make
ad un certo punto. Vorrei capire quale sarebbe un buon numero di posti di lavoro ( -j
). Ovviamente potrei passare il numero di CPU allocate attraverso l'ambiente, ma un modo automatico per rilevarlo sarebbe molto preferito.
So di poter utilizzare taskset -c -p $$
o cat /proc/self/status | grep Cpus_allowed_list
recuperare il Cpus_allowed
processo corrente, ma non so come recuperare il numero effettivo di CPU consentite. Vorrei evitare di analizzare l'output di quei comandi o armeggiare con la Cpus_allowed
maschera, ma lo farò, quando non ci sono opzioni.
nproc
- stampa il numero di unità di elaborazione disponibili