Show Table of Contents
Глава 1. Введение в контрольные группы
Red Hat Enterprise Linux 6 предоставляет новые возможности ядра — контрольные группы или cgroups (от англ. control groups). Контрольные группы позволяют распределять между процессами ресурсы — процессорное время, память, доступ к сети. Настройки существующих групп можно изменять динамически, запрещать и разрешать их доступ к ресурсам. С помощью
cgconfig можно обеспечить сохранение конфигурации cgroups между перезагрузками.
Cgroups позволяют осуществлять тонкий контроль распределения, приоритизации и управления системными ресурсами. При этом ресурсы оборудования эффективно распределяются между пользователями и заданиями.
1.1. Организация контрольных групп
Подобно процессам, контрольные группы организованы иерархически, и дочерние группы наследуют атрибуты родительских. Существует две основных модели организации групп (см. ниже).
Модель процессов Linux
Все процессы в Linux являются дочерними по отношению к
init, который запускается во время загрузки системы и запускает другие процессы. Таким образом, иерархия процессов Linux представляет собой дерево с единственным корнем.
Все процессы за исключением
init наследуют настройки окружения (переменную PATH и пр.) [1] и другие атрибуты родительского процесса (дескрипторы файлов и пр.).
Модель контрольных групп
Основные сходства контрольных групп и процессов:
- организованы в виде иерархии;
- дочерние группы выборочно наследуют атрибуты родительской группы.
Основное отличие заключается в том, что в системе одновременно может существовать множество независимых иерархий контрольных групп.
Каждая иерархия может соответствовать одной или нескольким подсистемам. Подсистема[2] определяет отдельный тип ресурса, например процессорное время или память. Всего в Red Hat Enterprise Linux 6 есть 9 подсистем (см. ниже).
Подсистемы в Red Hat Enterprise Linux
blkio: ограничение ввода-вывода блочных устройств (дисков, USB и т.п.).cpu: использует планировщик для управления доступом к процессору.cpuacct: генерирует отчеты об использовании процессорных ресурсов.cpuset: отвечает за выделение процессоров и узлов памяти в многопроцессорных системах .devices: отвечает за управление доступом заданий к устройствам.freezer: останавливает и возобновляет работу заданий контрольной группы.memory: накладывает ограничения и генерирует отчеты об использовании памяти.net_cls: позволяет присвоить сетевым пакетам идентификатор класса (classid), который помогает контроллеруtcидентифицировать пакеты, поступающие из заданной контрольной группы.ns: подсистема пространства имен.
Примечание
Возможно, вы уже сталкивались с терминами контроллер и контроллер ресурсов в документации ядра. Оба термина являются синонимами «подсистемы».
Само определение подсистемы довольно расплывчато — это механизм управления группами процессов.

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.