Назад | Перейти на главную страницу

Подсчитать количество разрешенных процессоров в контейнере 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.