Мой конкретный сценарий таков. Я запускаю док-контейнер с конкретным процессором:
docker run --cpuset-cpus="0-2" # ...
внутри этого контейнера я запускаю сценарий оболочки в качестве точки входа, и этот сценарий оболочки запускается make
в какой-то момент. Я хотел бы разобраться, какое количество рабочих мест (-j
) было бы. Я, конечно, мог бы передать количество выделенных процессоров через среду, но автоматический способ определения этого был бы гораздо предпочтительнее.
Я знаю, что могу использовать taskset -c -p $$
или cat /proc/self/status | grep Cpus_allowed_list
получить Cpus_allowed
для текущего процесса, но я не знаю, как получить фактическое количество разрешенных процессоров. Я хотел бы избежать синтаксического анализа вывода этих команд или возиться с Cpus_allowed
маска, но сделаю это, когда нет вариантов.
Вы можете использовать nproc
инструмент сценария оболочки.
Так было бы -j$(nproc)
в рассматриваемой командной строке make.