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

status=245/KSM в systemd

Код 245/KSM относится к параметру MemoryKSM=, который включает для процессов службы объединение одинаковых страниц памяти. Отказ значит, что механизм недоступен: он отключён в ядре или не поддерживается на уровне процесса.

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

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

  1. KSM отключён в ядре

    Объединение страниц управляется через sysfs и по умолчанию во многих сборках выключено.

  2. Ядро не умеет управлять KSM на уровне процесса

    Управление через prctl появилось в относительно новых ядрах. На старых включить объединение для отдельной службы нельзя.

Диагностика

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

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

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

Подтверждает, что в вашей версии systemd этот номер означает именно KSM.

systemd-analyze exit-status 245

Решение

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

1. KSM отключён в ядре
Почему происходит
Объединение страниц управляется через sysfs и по умолчанию во многих сборках выключено.
Как проверить
Посмотрите состояние KSM.
cat /sys/kernel/mm/ksm/run 2>/dev/null || echo "KSM недоступен"
Как исправить
Включите KSM в ядре либо уберите MemoryKSM=yes из unit-файла: параметр экономит память, но не обязателен для работы службы.
2. Ядро не умеет управлять KSM на уровне процесса
Почему происходит
Управление через prctl появилось в относительно новых ядрах. На старых включить объединение для отдельной службы нельзя.
Как проверить
Посмотрите версию ядра и версию systemd.
uname -r
systemctl --version | head -1
Как исправить
Уберите параметр для этого ядра.

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

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

× cache.service - In-memory cache
     Active: failed (Result: exit-code) since Mon 2026-09-15 10:20:44 MSK; 1s ago
    Process: 6400 ExecStart=/usr/local/bin/cache (code=exited, status=245/KSM)

systemd[6400]: cache.service: Failed at step KSM spawning /usr/local/bin/cache: Operation not supported

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

  • status=244/BPF в systemd Код 244/BPF: не удалось применить ограничения через BPF, например RestrictFileSystems=. В man-странице systemd этот код указан неверно.
  • status=204/MEMORY в systemd Код 204/MEMORY: systemd не смог выделить память при подготовке запуска службы. Что проверять на машине и в unit-файле.
  • status=242/NUMA_POLICY в systemd Код 242/NUMA_POLICY: не удалось применить политику размещения памяти NUMA из NUMAPolicy= и NUMAMask=.
  • Cannot allocate memory в журнале службы Не удалось выделить память: предел службы, память машины, настройка overcommit, исчерпанные области отображения.
  • Elasticsearch: служба падает из-за размера кучи JVM Размер кучи больше доступной памяти или больше предела службы: падение при старте или под нагрузкой.
  • Failed with result 'oom-kill' Состояние oom-kill: процесс службы убит из-за нехватки памяти. Как понять, упёрлись в предел службы или в память машины.
  • Hardware Error / EDAC: ошибки памяти в журнале Ядро сообщает об ошибках памяти. Что считать безобидным, а что поводом менять модуль.
  • Java-служба: OutOfMemoryError и куча Служба на JVM падает с нехваткой памяти: размер кучи, предел контрольной группы, дампы кучи.

Источники

  • exit-status.h: EXIT_KSM = 245
    В таблице man systemd.exec(5) этот код пока отсутствует.
    исходный код systemd, systemd main
    сверено 15 сентября 2026
  • systemd.exec(5)
    Параметр MemoryKSM= описан в разделе управления памятью.
    официальная документация, systemd 255
    сверено 15 сентября 2026
  • Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
    systemd-analyze exit-status на systemd 255 печатает KSM 245.
    собственная проверка, systemd 255
    сверено 15 сентября 2026