SystemdDoctor
мешает работе ресурсы срезы

Ограничения ресурсов не работают: система в смешанном режиме срезов

Управление ресурсами есть в двух версиях, и часть параметров работает только в новой. В смешанном режиме настройки применяются частично и молча: служба запускается, а предел не действует. Проверять режим стоит до разбора самих пределов.

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

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

  1. Система работает в устаревшем или смешанном режиме

    Часть параметров ресурсов в старом режиме не поддерживается. Они принимаются и игнорируются.

  2. Предел задан, но не действует

    Значение видно в свойствах службы, а фактического ограничения нет. Расхождение обнаруживается только под нагрузкой.

  3. Служба контейнеров ждёт другого режима

    Средства контейнеров настраиваются на конкретный режим. Несовпадение даёт отказы при запуске контейнеров.

Диагностика

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

Режим управления срезами: тип файловой системы показывает версию.

stat -fc %T /sys/fs/cgroup

Заданные пределы службы.

systemctl show myapp.service -p MemoryMax -p CPUQuota

Какие файлы ограничений реально существуют.

ls /sys/fs/cgroup/system.slice/myapp.service/ 2>/dev/null | head

Решение

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

1. Система работает в устаревшем или смешанном режиме
Почему происходит
Часть параметров ресурсов в старом режиме не поддерживается. Они принимаются и игнорируются.
Как проверить
Посмотрите режим срезов.
stat -fc %T /sys/fs/cgroup 2>/dev/null
systemd-analyze --no-pager 2>/dev/null | head -3
Как исправить
Переведите систему в единый новый режим параметром ядра. Это требует перезагрузки и проверки, что все службы контейнеров к нему готовы.
2. Предел задан, но не действует
Почему происходит
Значение видно в свойствах службы, а фактического ограничения нет. Расхождение обнаруживается только под нагрузкой.
Как проверить
Сравните заданный предел и фактический файл ограничения.
systemctl show myapp.service -p MemoryMax
cat /sys/fs/cgroup/system.slice/myapp.service/memory.max 2>/dev/null || echo файла нет
Как исправить
Проверяйте пределы по файлам среза, а не только по свойствам службы. Отсутствие файла означает, что параметр не действует.
3. Служба контейнеров ждёт другого режима
Почему происходит
Средства контейнеров настраиваются на конкретный режим. Несовпадение даёт отказы при запуске контейнеров.
Как проверить
Посмотрите настройку способа управления срезами.
sudo docker info 2>/dev/null | grep -iE "Cgroup Driver|Cgroup Version"
Как исправить
Приведите настройку службы контейнеров в соответствие с режимом системы. Смешение — частая причина неработающих ограничений у контейнеров.

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

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

$ stat -fc %T /sys/fs/cgroup
tmpfs

$ systemctl show myapp.service -p MemoryMax
MemoryMax=536870912
$ cat /sys/fs/cgroup/system.slice/myapp.service/memory.max
cat: /sys/fs/cgroup/system.slice/myapp.service/memory.max: No such file or directory

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

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

Источники

  • systemd.resource-control(5)
    Версии управления ресурсами и поддержка параметров.
    официальная документация, systemd 255
    сверено 15 сентября 2026
  • Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
    Проверено на systemd 255: в новом режиме файл ограничения памяти присутствует.
    собственная проверка, systemd 255
    сверено 15 сентября 2026