В linux системный вызов для установки соответствия процессоров процессу sched_setaffinity
. Тогда есть taskset
инструмент, чтобы сделать это в командной строке.
Чтобы эта единственная программа работала только на одном процессоре, я думаю, вы захотите что-то вроде
taskset -c 1 ./myprogram
(установите любой номер процессора в качестве аргумента для -c
коммутатора.)
Это должно быть достаточно близко к однопроцессорной системе, если ваши другие процессы не работают слишком часто по сравнению с тем, который вы хотите измерить, или они запланированы для других процессоров. Если вы хотите , чтобы выделить один процессор для этого единого процесса только , и предотвратить другие процессы от работы на этом процессоре, вы должны установить их сродство тоже.
Это, я не знаю, как это сделать правильно. Вам нужно будет установить привязку к процессору в init
самом начале процесса загрузки, чтобы убедиться, что он наследуется всем процессам в системе. В качестве обходного пути вы можете использовать taskset -c -p 0 $PID
все остальные процессы, чтобы заставить их работать только на CPU # 0.
Systemd такжеCPUAffinity=
контролировать сродство в единичных файлах и есть несколько из вопросов по настройке сродства по умолчанию здесь на unix.SE, но я не нашел ни с хорошим решением.
Хотя, как @Kamil Maciorowski прокомментировал и ответил на другой вопрос на superuser.com , настройка isolcpus=1
в командной строке ядра должна «изолировать этот ЦП от общих алгоритмов планирования», что вам может понадобиться.