Slice= и срезы systemd: группировка служб по ресурсам
Указывает срез, в который помещается служба. Срез — это узел дерева контрольных групп с собственными ограничениями ресурсов, общими для всех его участников.
Что делает
Системные службы по умолчанию попадают в system.slice, сеансы пользователей — в user.slice. Свой срез нужен, когда группе служб надо задать общий потолок: например «все службы этого приложения вместе не больше 4 ГБ памяти».
Ограничения среза действуют поверх ограничений служб: служба не может получить больше, чем разрешено срезу. Это частая причина непонимания: предел у службы поднят, а упор остаётся.
Где ставится. В секции [Service]. Сам срез описывается отдельным unit-файлом с расширением .slice.
Значения
| Значение | Что происходит |
|---|---|
system.slice | по умолчанию для системных служб. |
myapp.slice | свой срез; нужен файл myapp.slice. |
Пример
Свой срез с общим потолком для группы служб.
# /etc/systemd/system/myapp.slice
[Unit]
Description=Все службы myapp
[Slice]
MemoryMax=4G
CPUQuota=200%
TasksMax=2048
# в каждой службе группы
[Service]
Slice=myapp.slice
Дерево срезов видно командой systemd-cgls, а потребление по срезам — systemd-cgtop.
Типичные ошибки
Ограничение среза сильнее ограничения службы: при упоре в срез поднятие предела у службы ничего не даст.
Срез нужно описать отдельным unit-файлом: ссылка на несуществующий срез приведёт к ошибке.
Перемещение службы в другой срез требует перезапуска.
Связанные ошибки
- Failed with result 'resources'Состояние resources: systemd не смог выделить ресурсы для запуска службы. Чем отличается от кодов 200-й группы и что проверять.
- status=219/CGROUP в systemdКод 219/CGROUP: не удалось создать или настроить контрольную группу службы. Причины на уровне системы и контейнеров.
- Too many tasks: упор в предел TasksMaxСлужба не может создать новый процесс: достигнут предел TasksMax. Где он задан и как поднять правильно.
Рядом стоящие параметры
Источники
- systemd.slice(5)
- systemd.resource-control(5)
- Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)