numactl --physcpubind миграция процессора

Я пытаюсь запустить мое mpi-приложение (Open MPI 1.4.5) с помощью numactl. Поскольку очевидно, что распределение нагрузки с использованием --cpu-nodebind не распределяет мои процессы в циклическом порядке по доступным узлам, я хотел специально ограничить свои процессы закрытым набором процессоров. Таким образом, я планирую обеспечить сбалансированную нагрузку между узлами с точки зрения количества потоков, работающих на каждом узле. --physcpubind, кажется, делает работу в соответствии с руководством numactl.

Проблема в том, что из этого поста я мог бы извлечь, что при использовании --phycpubind процессам разрешено мигрировать внутри этого набора процессоров. Другая проблема заключается в том, что некоторые процессоры из этого набора остаются неиспользованными, в то время как другим назначаются два или более процессов, и, таким образом, они работают с использованием ЦП только на 50% или менее. Почему это происходит, и есть ли способ обойти это явление?

С уважением

0 ответов

Я думаю, вы можете попробовать это (у меня это сработало):

numactl --cpunodebind={cpu-core}  chrt -r 98 {your-app}

Команда chrt позволяет вам установить политику планирования, вы можете выбрать один из следующих вариантов:

Policy options:
 -b, --batch          set policy to SCHED_BATCH
 -d, --deadline       set policy to SCHED_DEADLINE
 -f, --fifo           set policy to SCHED_FIFO
 -i, --idle           set policy to SCHED_IDLE
 -o, --other          set policy to SCHED_OTHER
 -r, --rr             set policy to SCHED_RR (default)

РЕДАКТИРОВАТЬ: число 98 является приоритетом, в моем случае я выполняю критичный по времени процесс. Кроме того, вам может потребоваться изолировать процессор, который вы используете, чтобы планировщик не назначал / перемещал процессы в / из них.

Другие вопросы по тегам