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 является приоритетом, в моем случае я выполняю критичный по времени процесс. Кроме того, вам может потребоваться изолировать процессор, который вы используете, чтобы планировщик не назначал / перемещал процессы в / из них.