Contar o número de CPUs permitidas em um contêiner Docker

Meu cenário específico é o seguinte. Eu lanço um contêiner docker com um cpuset específico:

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

dentro desse contêiner, executo um script de shell como ponto de entrada e esse script de shell será executado make em algum momento. Eu gostaria de descobrir o que um bom número de empregos (-j) seria. Eu poderia, claro, passar o número de CPUs alocadas pelo ambiente, mas uma maneira automática de detectá-lo seria muito preferida.

Eu sei que posso usar taskset -c -p $$ ou cat /proc/self/status | grep Cpus_allowed_list para recuperar o Cpus_allowed para o processo atual, mas não sei como recuperar o número real de CPUs permitidas. Eu gostaria de evitar analisar a saída desses comandos ou mexer com o Cpus_allowed máscara, mas vai fazê-lo, quando fora de opções.

Você pode usar o nproc shell script tool.

Então seria -j$(nproc) na linha de comando make em questão.

‘nproc’ - imprima o número de unidades de processamento disponíveis

@ Brian isso foi muito fácil .