Подсчитайте количество разрешенных процессоров в контейнере Docker

Мой конкретный сценарий заключается в следующем. Я запускаю контейнер docker с определенным набором процессоров:

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.

nproc - выводит количество доступных процессорных блоков.

@Брайан, это было слишком просто.