Приоритет планирования — это числовая характеристика, которую использует планировщик ядра 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.