Я экспериментирую с SCHED_FIFO
и наблюдаю неожиданное поведение. Сервер, который я использую, имеет 12 ядер с отключенной гиперпоточностью. Все настраиваемые прерывания настроены на выполнение на ЦП 0.
Моя программа при запуске создает поток для задач с более низким приоритетом, используя библиотеку pthreads без изменения политики планирования с привязкой к ЦП, установленной на ядро 0.Затем родительский поток устанавливает привязку ЦП к ядру 3 и собственную политику планирования на SCHED_FIFO
, используя sched_setscheduler()
с нулевым pid и приоритетом 1, а затем запускает неблокирующий цикл.
Сама программа работает хорошо. Однако, если я попытаюсь войти на сервер во второй раз во время работы программы, терминал не будет отвечать, пока я не остановлю свою программу. Это похоже на то, как планировщик пытается запустить другие процессы на том же ядре, что и процесс реального времени.
sched_setscheduler()
в родительском элементе изменять поведение дочернего элемента, который был создан ранее?Заранее спасибо.