Red Hat Training
A Red Hat training course is available for Red Hat Enterprise Linux
Глава 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
: подсистема пространства имен.
Примечание
Возможно, вы уже сталкивались с терминами контроллер и контроллер ресурсов в документации ядра. Оба термина являются синонимами «подсистемы».
Само определение подсистемы довольно расплывчато — это механизм управления группами процессов.