SystemdDoctor
служба не работает процессор привязка

status=215/CPUAFFINITY в systemd

Код 215/CPUAFFINITY значит, что systemd не сумел привязать процесс службы к ядрам из CPUAffinity=. Чаще всего в списке есть номера ядер, которых на машине нет — unit-файл перенесли с другого сервера.

Вероятные причины

По порядку: сверху то, что встречается чаще.

  1. В списке ядра, которых нет на машине

    Привязка к несуществующему ядру недопустима. Unit, написанный для машины с 16 ядрами, на машине с 4 ядрами упадёт на этом шаге.

  2. Указанные ядра отключены

    Ядро можно вывести из работы через sysfs или параметрами загрузки. Оно существует, но привязка к нему запрещена.

  3. Ошибка в записи списка

    Список задаётся числами и диапазонами через пробел или запятую: CPUAffinity=0 1 2 или CPUAffinity=0-3. Другие разделители не разбираются.

Диагностика

Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.

Показывает шаг CPUAFFINITY и причину.

journalctl -xeu myapp.service --no-pager -n 20

Два похожих параметра рядом: AllowedCPUs= работает через cgroup и не даёт этот код, их часто путают.

systemctl show myapp.service -p CPUAffinity -p AllowedCPUs

Решение

Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.

1. В списке ядра, которых нет на машине
Почему происходит
Привязка к несуществующему ядру недопустима. Unit, написанный для машины с 16 ядрами, на машине с 4 ядрами упадёт на этом шаге.
Как проверить
Сравните список с числом ядер.
systemctl show myapp.service -p CPUAffinity
nproc
lscpu | grep -E "^CPU\(s\)|On-line"
Как исправить
Исправьте список под фактические ядра или уберите параметр: планировщик и без него распределяет нагрузку.
2. Указанные ядра отключены
Почему происходит
Ядро можно вывести из работы через sysfs или параметрами загрузки. Оно существует, но привязка к нему запрещена.
Как проверить
Посмотрите список работающих ядер.
cat /sys/devices/system/cpu/online
Как исправить
Привязывайтесь только к работающим ядрам либо верните отключённые в работу.
3. Ошибка в записи списка
Почему происходит
Список задаётся числами и диапазонами через пробел или запятую: CPUAffinity=0 1 2 или CPUAffinity=0-3. Другие разделители не разбираются.
Как проверить
Посмотрите действующее значение.
systemctl show myapp.service -p CPUAffinity
Как исправить
Приведите список к допустимому виду.

Пример вывода

Unit перенесён с более крупного сервера. Пример показательный: он собран на тестовой машине специально для этой страницы, а не взят из чужого журнала.

× worker.service - Background worker
     Active: failed (Result: exit-code) since Mon 2026-09-14 20:15:51 MSK; 1s ago
    Process: 18400 ExecStart=/usr/local/bin/worker (code=exited, status=215/CPUAFFINITY)

systemd[18400]: worker.service: Failed at step CPUAFFINITY spawning /usr/local/bin/worker: Invalid argument

Связанные ошибки

  • status=214/SETSCHEDULER в systemd Код 214/SETSCHEDULER: не удалось применить политику планирования процессора из CPUSchedulingPolicy=. Обычно из-за прав или диапазона приоритета.
  • status=242/NUMA_POLICY в systemd Код 242/NUMA_POLICY: не удалось применить политику размещения памяти NUMA из NUMAPolicy= и NUMAMask=.
  • Служба работает медленно: упор в CPUQuota Квота процессора ограничивает службу: признаки, как измерить и когда квота вредна.
  • status=0/SUCCESS, но служба считается упавшей Программа завершилась успешно, а systemctl показывает inactive или failed. Разбор: Type=simple против forking, RemainAfterExit, демонизация.
  • status=1/FAILURE в systemd Код 1/FAILURE означает, что программа запустилась и сама завершилась с ошибкой. Как найти настоящую причину в журнале службы.
  • status=126 в systemd: файл не исполняется Код 126: команда найдена, но выполнить её нельзя. Отличие от 127 и от 203/EXEC, разбор причин.
  • status=127 в systemd: команда не найдена Код 127 без имени: оболочка не нашла команду. Появляется, когда ExecStart запускает скрипт или sh -c, а внутри команды нет.
  • status=2/INVALIDARGUMENT в systemd Код 2/INVALIDARGUMENT: программа сочла аргументы или настройки недопустимыми. Частая причина — лишние кавычки в ExecStart=.

Источники

  • systemd.exec(5)
    215 EXIT_CPUAFFINITY: не удалось настроить привязку к процессорам, см. CPUAffinity=.
    официальная документация, systemd 255
    сверено 15 сентября 2026
  • Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
    Воспроизведено с CPUAffinity=0-15 на машине с четырьмя ядрами.
    собственная проверка, systemd 255
    сверено 15 сентября 2026