Приоритет планирования — это числовая характеристика, которую использует планировщик ядра Linux для определения порядка выполнения процессов и потоков.
В Linux планирование реализовано в ядре (CFS для обычных задач и отдельные политики для realtime). Приоритет определяет, сколько процессорного времени процесс получает по сравнению с другими.
Основные понятия
Nice
Для обычных процессов (policy CFS) используется значение nice в диапазоне от -20 до 19.
- Меньше значение → выше приоритет.
- Больше значение → ниже приоритет.
Значение по умолчанию — 0. Изменяется черезniceиrenice.
Static priority (PRI в top).
В top отображается поле PRI — внутренний приоритет, рассчитываемый ядром на основе nice и других факторов. Это не то же самое, что nice, а производная величина.
Realtime-приоритет.
Для политик SCHED_FIFO и SCHED_RR используется отдельный диапазон realtime-приоритетов (обычно 1–99). Такие процессы имеют приоритет над обычными (CFS) и могут вытеснять их полностью.
Политики планирования.
- CFS (Completely Fair Scheduler) — стандартная политика для большинства процессов.
- SCHED_FIFO — realtime, выполняется до блокировки или явной передачи CPU.
- SCHED_RR — realtime с квантованием времени.
- SCHED_IDLE — минимальный приоритет.
- SCHED_BATCH — для фоновых batch-задач.
Практический смысл.
- Изменение nice влияет на «вес» процесса в очереди CFS.
- Realtime-процессы следует использовать осторожно — они могут вызвать starvation обычных задач.
- При анализе через top/htop обычно достаточно смотреть NI, PRI и политику планирования, если есть подозрение на перекос распределения CPU.