SystemdDoctor
служба не работает память numa редкое

status=242/NUMA_POLICY в systemd

Код 242/NUMA_POLICY относится к машинам с несколькими узлами памяти. Он значит, что systemd не сумел применить политику NUMA: обычно в маске указаны узлы, которых нет, либо политика требует маски, а её не задали.

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

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

  1. В NUMAMask= указаны несуществующие узлы

    На машине с одним узлом памяти (а таковы почти все виртуальные серверы) маска с узлом 1 недопустима.

  2. Политика задана без обязательной маски

    Политики bind и interleave требуют указания узлов. Без маски применить их нельзя.

Диагностика

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

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

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

Список узлов памяти машины: с ним сверяется маска.

numactl --hardware

Решение

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

1. В NUMAMask= указаны несуществующие узлы
Почему происходит
На машине с одним узлом памяти (а таковы почти все виртуальные серверы) маска с узлом 1 недопустима.
Как проверить
Посмотрите узлы памяти и значение маски.
systemctl show myapp.service -p NUMAPolicy -p NUMAMask
numactl --hardware 2>/dev/null | head -5
Как исправить
Исправьте маску под фактические узлы или уберите оба параметра: на одноузловой машине политика NUMA бессмысленна.
2. Политика задана без обязательной маски
Почему происходит
Политики bind и interleave требуют указания узлов. Без маски применить их нельзя.
Как проверить
Проверьте, задана ли маска при такой политике.
systemctl show myapp.service -p NUMAPolicy -p NUMAMask
Как исправить
Добавьте NUMAMask= с нужными узлами или смените политику на default.

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

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

× db.service - Database
     Active: failed (Result: exit-code) since Mon 2026-09-15 09:20:14 MSK; 1s ago
    Process: 4800 ExecStart=/usr/local/bin/db (code=exited, status=242/NUMA_POLICY)

systemd[4800]: db.service: Failed at step NUMA_POLICY spawning /usr/local/bin/db: Invalid argument

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

  • status=215/CPUAFFINITY в systemd Код 215/CPUAFFINITY: не удалось привязать процесс к перечисленным ядрам из CPUAffinity=. Обычно указаны несуществующие ядра.
  • status=204/MEMORY в systemd Код 204/MEMORY: systemd не смог выделить память при подготовке запуска службы. Что проверять на машине и в unit-файле.
  • status=245/KSM в systemd Код 245/KSM: не удалось включить объединение одинаковых страниц памяти через MemoryKSM=. Код появился в systemd 254.
  • Cannot allocate memory в журнале службы Не удалось выделить память: предел службы, память машины, настройка overcommit, исчерпанные области отображения.
  • Elasticsearch: служба падает из-за размера кучи JVM Размер кучи больше доступной памяти или больше предела службы: падение при старте или под нагрузкой.
  • Failed with result 'oom-kill' Состояние oom-kill: процесс службы убит из-за нехватки памяти. Как понять, упёрлись в предел службы или в память машины.
  • Hardware Error / EDAC: ошибки памяти в журнале Ядро сообщает об ошибках памяти. Что считать безобидным, а что поводом менять модуль.
  • Java-служба: OutOfMemoryError и куча Служба на JVM падает с нехваткой памяти: размер кучи, предел контрольной группы, дампы кучи.

Где встречается чаще всего

Источники

  • systemd.exec(5)
    242 EXIT_NUMA_POLICY: не удалось применить политику NUMA, см. NUMAPolicy= и NUMAMask=.
    официальная документация, systemd 255
    сверено 15 сентября 2026
  • Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
    Воспроизведено с NUMAMask=0-1 на виртуальной машине с одним узлом.
    собственная проверка, systemd 255
    сверено 15 сентября 2026