Cgroup ограничивает потребление, но не создаёт отдельный список процессов или сетевых интерфейсов. Для разделения видимости нужны пространства имён, для распределения CPU и RAM — контроллеры ресурсов.
Группа управления ресурсами
Определение
Группа управления ресурсами (cgroup) — объединение процессов Linux, для которого ядро учитывает и ограничивает потребление процессора, памяти и ввода-вывода. В cgroup v2 такие группы образуют единую иерархию: ограничения родительской группы действуют и для дочерних.
Также ищут: cgroup · cgroup v2 · группа контроля ресурсов
Зачем это знать
Отдельная сеть контейнера не мешает ему занять всю память узла. Cgroup позволяет задать границы и увидеть их срабатывание. При медленном ответе приложения проверяйте не только общую загрузку сервера, но и ограничения конкретной группы: свободные ядра не отменяют её квоту.
Карта понятия
Что подтверждено
Cgroup v2 организует процессы в единую иерархию. Контроллеры распределяют ресурсы между её ветвями; ограничения родительской группы продолжают действовать для дочерних.
Граница применимости: Иерархия cgroup v2 и включённые контроллеры Linux.
Cgroup задаёт правила потребления, а пространство имён — видимость системных объектов. Отдельное представление системы не выделяет процессам собственные физические ресурсы.
Граница применимости: Сопоставление cgroup v2 и пространств имён Linux.
Вес CPU задаёт относительную долю процессорного времени при конкуренции. Квота задаёт максимум времени за период. Большой вес не отменяет квоту и не означает закрепление за отдельным ядром.
Граница применимости: Контроллер CPU в cgroup v2; вес и максимальная полоса процессорного времени.
Квота 50 мс на период 100 мс даёт группе до половины времени одного CPU в среднем за период. Несколько её потоков расходуют общий бюджет; после исчерпания квоты они ждут следующего периода.
Граница применимости: Иллюстрация периодической квоты CPU в cgroup v2 без дополнительного бюджета всплесков; это не закрепление ядра.
Порог memory.high усиливает освобождение памяти и замедляет нарушающую его группу; сам по себе он не вызывает завершение из-за нехватки памяти. Предел memory.max может привести к такому завершению, если освобождения памяти недостаточно.
Граница применимости: Контроллер памяти cgroup v2; поведение memory.high и memory.max.
Статистика CPU и события памяти показывают срабатывание ограничений группы. Их нужно сопоставлять с задержкой приложения: покупка более мощного сервера не меняет уже установленную квоту.
Граница применимости: Диагностика ограничений cgroup v2 при неизменной конфигурации группы.
Пространство имён cgroup может скрывать часть пути группы, но учёт и ограничения продолжают действовать в общей иерархии ядра. Скрытая ветвь не становится отдельным набором физических ресурсов.
Граница применимости: Пространство имён cgroup и иерархия cgroup v2 в Linux.
Не путать
Cgroup применяется к процессам Linux независимо от наличия Kubernetes. Лимит контейнера Kubernetes передаётся механизмам узла; его фактические последствия видны в статистике группы.
Что проверить
- Установите, использует ли узел cgroup v2 и какие контроллеры включены.
- Проверьте ограничения самой группы и её родителей.
- Разделите вес CPU, квоту за период и закрепление за ядрами.
- Сопоставьте время ожидания квоты с задержкой приложения под нагрузкой.
- Проверьте memory.high, memory.max и события нехватки памяти.
- Учтите общие ресурсы соседних групп при нагрузочном испытании.
- До покупки новых CPU или RAM выясните, упирается ли приложение в оборудование или настроенный предел.
Первоисточники
- namespaces(7) — Linux manual page
Описывает отдельные представления системных ресурсов в пространствах имён Linux и перечисляет изолируемые классы объектов.
Утверждения: 02
- Resource Management for Pods and Containers
Разделяет запросы и ограничения CPU и памяти: их учёт при размещении, распределение процессорного времени и применение пределов на узле.