Contare il numero di CPU consentite in un contenitore Docker


14

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 makead 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_listrecuperare il Cpus_allowedprocesso 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_allowedmaschera, ma lo farò, quando non ci sono opzioni.


1
nproc- stampa il numero di unità di elaborazione disponibili
Brian,

@Brian È stato troppo facile.
PMR

Risposte:


19

È possibile utilizzare lo nprocstrumento di script di shell.

Quindi sarebbe -j$(nproc)nella riga di comando di make in questione.


1
"docker run --rm --cpus 2 debian nproc" -> 8?
Evan Benn,

2
@EvanBenn the --cpus="2"non limita il numero di unità di elaborazione ed è equivalente a -cpu-period="100000" and --cpu-quota="200000".
Brian
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.