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