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