Mi escenario específico es el siguiente. Lanzo un contenedor acoplable con un cpuset específico:
docker run --cpuset-cpus="0-2" # ...
dentro de ese contenedor ejecuto un script de shell como punto de entrada y ese script de shell se ejecutará make
en algún momento. Me gustaría saber cuál sería un buen número de trabajos ( -j
). Por supuesto, podría pasar el número de CPU asignadas a través del entorno, pero sería preferible una forma automática de detectarlo.
Sé que puedo usar taskset -c -p $$
o cat /proc/self/status | grep Cpus_allowed_list
recuperar el Cpus_allowed
proceso actual, pero no sé cómo recuperar el número real de CPU permitidas. Me gustaría evitar analizar la salida de esos comandos o jugar con la Cpus_allowed
máscara, pero lo haré cuando no tenga opciones.
nproc
- imprima el número de unidades de procesamiento disponiblesRespuestas:
Puedes usar el
nproc
herramienta de script de shell.Por lo tanto, estaría
-j$(nproc)
en la línea de comando make en cuestión.fuente
--cpus="2"
no limita el número de unidades de procesamiento y es equivalente a-cpu-period="100000" and --cpu-quota="200000"
.