status=214/SETSCHEDULER в systemd
Код 214/SETSCHEDULER значит, что systemd не сумел применить политику планирования процессора. Политики реального времени (fifo, rr) требуют прав и попадают под отдельный предел, а приоритет для них считается по собственной шкале — перепутать её легко.
Вероятные причины
По порядку: сверху то, что встречается чаще.
-
Политика реального времени без нужных прав
CPUSchedulingPolicy=fifoиrrтребуют CAP_SYS_NICE и достаточногоLimitRTPRIO=. Обычная служба от непривилегированного пользователя их не получит. -
Приоритет вне диапазона выбранной политики
Для fifo и rr приоритет задаётся числами от 1 до 99, для other и batch он должен быть нулевым. Приоритет 50 при политике other — ошибка.
-
Ядро без поддержки реального времени
В части контейнеров и на урезанных ядрах политики реального времени недоступны, и вызов отказывает независимо от прав.
Диагностика
Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.
Показывает шаг SETSCHEDULER и причину: отказ в доступе или недопустимый аргумент.
journalctl -xeu myapp.service --no-pager -n 20Все параметры планирования вместе.
systemctl show myapp.service | grep -E "CPUScheduling|LimitRTPRIO|Nice"Решение
Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.
- Почему происходит
CPUSchedulingPolicy=fifoиrrтребуют CAP_SYS_NICE и достаточногоLimitRTPRIO=. Обычная служба от непривилегированного пользователя их не получит.
- Как проверить
-
Посмотрите политику, приоритет и пределы.
systemctl show myapp.service -p CPUSchedulingPolicy -p CPUSchedulingPriority -p LimitRTPRIO -p CapabilityBoundingSet
- Как исправить
-
Если реальное время действительно нужно, оставьте CAP_SYS_NICE и задайте
LimitRTPRIO=. Если нет — уберите политику: по умолчаниюotherподходит почти всем службам.
- Почему происходит
- Для fifo и rr приоритет задаётся числами от 1 до 99, для other и batch он должен быть нулевым. Приоритет 50 при политике other — ошибка.
- Как проверить
-
Сверьте политику и приоритет.
systemctl show myapp.service -p CPUSchedulingPolicy -p CPUSchedulingPriority
- Как исправить
- Согласуйте значения: либо fifo с приоритетом 1–99, либо other без приоритета.
- Почему происходит
- В части контейнеров и на урезанных ядрах политики реального времени недоступны, и вызов отказывает независимо от прав.
- Как проверить
-
Проверьте окружение и доступность политики.
systemd-detect-virt chrt -m
- Как исправить
- Откажитесь от политики реального времени в таком окружении.
Пример вывода
Политика реального времени у службы без прав. Пример показательный: он собран на тестовой машине специально для этой страницы, а не взят из чужого журнала.
× audio.service - Low latency audio
Active: failed (Result: exit-code) since Mon 2026-09-14 20:03:19 MSK; 1s ago
Process: 17880 ExecStart=/usr/local/bin/audiod (code=exited, status=214/SETSCHEDULER)
systemd[17880]: audio.service: Failed at step SETSCHEDULER spawning /usr/local/bin/audiod: Operation not permitted
Связанные ошибки
- status=201/NICE в systemd Код 201/NICE: systemd не смог выставить приоритет процесса из Nice=. Обычно мешает предел LimitNICE или отсутствие прав.
- status=211/IOPRIO в systemd Код 211/IOPRIO: не удалось задать приоритет ввода-вывода из IOSchedulingClass= или IOSchedulingPriority=.
- status=205/LIMITS в systemd Код 205/LIMITS: systemd не смог применить ограничения ресурсов из Limit*=. Обычно значение недопустимо или превышает жёсткий предел.
- status=215/CPUAFFINITY в systemd Код 215/CPUAFFINITY: не удалось привязать процесс к перечисленным ядрам из CPUAffinity=. Обычно указаны несуществующие ядра.
- AppArmor: apparmor="DENIED" в журнале ядра Профиль AppArmor запретил операцию: как прочитать запись, найти профиль и поправить его правильно.
- Caddy не занимает порты 80 и 443 без прав Служба падает при открытии слушателя: нет возможности занимать привилегированные порты.
- Configuration file is marked world-inaccessible Предупреждение о правах на unit-файл: служба работает, но файл недоступен для чтения другим.
- Interactive authentication required при управлении службой systemctl требует аутентификации: обращение от непривилегированного пользователя через polkit. Как разрешить точечно.
Источники
-
systemd.exec(5)
214 EXIT_SETSCHEDULER: не удалось настроить планирование процессора. -
Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
Воспроизведено с CPUSchedulingPolicy=fifo и CPUSchedulingPriority=80 без CAP_SYS_NICE.