Mi escenario específico es el siguiente. Lanzo un contenedor docker con un conjunto de cpu 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 averiguar qué buena cantidad de trabajos (-j
) lo sería. Por supuesto, podría pasar el número de CPU asignadas a través del entorno, pero sería mucho más preferible una forma automática de detectarlo.
Sé que puedo usar taskset -c -p $$
o cat /proc/self/status | grep Cpus_allowed_list
para recuperar el Cpus_allowed
para el proceso actual, pero no sé cómo recuperar el número real de Cpu. Me gustaría evitar analizar la salida de esos comandos o jugar con el Cpus_allowed
enmascare, pero lo hará, cuando se quede sin opciones.