Процесс без вытеснения в Linux (2.6.32)
Я пытаюсь сделать процесс не выгружаемым. Я изменил политику планировщика на SCHED_FIFO
и установить rtprio
до 99. Как только начинается процесс, при отсутствии прерываний ввода-вывода, могу ли я быть уверен, что этот процесс не будет прерван другим процессом? Rtprio=99 является наивысшим приоритетом или все еще есть процесс ядра с более высоким приоритетом? И, наконец, как я могу узнать, был ли процесс прерван или нет во время его выполнения?
1 ответ
У него есть другой процесс, который может выгрузить процесс с самым высоким значением RT Пример, процессы, которые создаются stop_machine()
для горячего удаления CPUS, изменения текста кода ядра.
Вы можете получить информацию из /proc/$PID/sched, чтобы определить, был ли прерван процесс или нет. cat /proc/$PID/sched
nr_switches : 4197
nr_voluntary_switches : 4140
nr_involuntary_switches : 57
Если nr_switches
изменен, процесс был прерван