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

11

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

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

dentro desse contêiner Eu executo um script de shell como o ponto de entrada e esse script de shell executará make em algum momento. Eu gostaria de descobrir 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 do 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 a máscara Cpus_allowed , mas farei isso quando estiver fora das opções.

    
por pmr 13.05.2015 / 11:15

1 resposta

17

Você pode usar a ferramenta de script shell nproc .

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

    
por 13.05.2015 / 13:36