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á makeen 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_listrecuperar el Cpus_allowedproceso 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_allowedmáscara, pero lo haré cuando no tenga opciones.

nproc- imprima el número de unidades de procesamiento disponiblesRespuestas:
Puedes usar el
nprocherramienta 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".