Мій конкретний сценарій такий. Я запускаю контейнер 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- роздрукувати кількість доступних одиниць обробки