Meu cenário específico é o seguinte. Eu inicio um contêiner de docker com um cpuset específico:
docker run --cpuset-cpus="0-2" # ...
dentro desse contêiner, eu executo um script de shell como ponto de entrada e esse script de shell será executado make
em algum momento. Gostaria de descobrir qual seria um bom número de empregos ( -j
). É claro que eu poderia passar o número de CPUs alocadas pelo ambiente, mas uma maneira automática de detectá-lo seria muito preferida.
Sei que posso usar taskset -c -p $$
ou cat /proc/self/status | grep Cpus_allowed_list
recuperar o Cpus_allowed
processo atual, mas não sei como recuperar o número real de CPUs permitidas. Gostaria de evitar analisar a saída desses comandos ou mexer com a Cpus_allowed
máscara, mas farei isso quando estiver fora das opções.
nproc
- imprima o número de unidades de processamento disponíveisRespostas:
Você pode usar a
nproc
ferramenta de script de shell.Portanto, seria
-j$(nproc)
na linha de comando make em questão.fonte
--cpus="2"
não limita o número de unidades de processamento e é equivalente a-cpu-period="100000" and --cpu-quota="200000"
.