Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

1.2. Связи между подсистемами, иерархиями, контрольными группами и задачами

Cистемные процессы в терминологии cgroup называются задачами.
Далее приведены правила связей между подсистемами, иерархиями и задачами.
Правило 1

Отдельная подсистема может быть сопоставлена только одной иерархии.

Например, подсистема cpu не может быть одновременно подключена к двум разным иерархиям.
Правило 2

С одной иерархией может быть связано несколько подсистем.

Например, cpu и memory могут быть подключены к одной и той же иерархии при условии, что ни одна из подсистем не связана с другой иерархией.
Правило 3

При создании новой иерархии все системные задачи по умолчанию будут назначены контрольной группе этой иерархии — так называемой корневой группе. Каждое задание в созданной иерархии может принадлежать только одной группе в этой иерархии. Задача может принадлежать различным группам, если они расположены в разных иерархиях. Поэтому как только задача входит в состав новой группы в этой же иерархии, она автоматически удаляется из исходной группы.

Так, например, если подсистемы cpu и memory назначены иерархии cpu_and_mem, а подсистема net_cls — иерархии net, то процесс httpd может принадлежать одной группе в cpu_and_mem и одной в net.
Группа в cpu_and_mem, которой принадлежит процесс httpd, может сократить процессорное время, выделяемое другим процессам, до половины, а память — до 1024 МБ. Группа в net, в состав которой httpd также входит, может ограничить скорость передачи 30 мегабайтами в секунду.
При создании новой иерархии все системные задачи по умолчанию будут назначены корневой группе. То есть любая системная задача принадлежит как минимум одной группе.
Правило 4

Если процесс создает дочерние процессы, они автоматически войдут в состав групп, которым принадлежит родительский процесс. Впоследствии дочерние процессы можно перенести в другие группы.

Представим, например, процесс httpd, входящий в состав группы half_cpu_1gb_max в иерархии cpu_and_mem и группы trans_rate_30 в иерархии net. Порождаемые им процессы будут автоматически принадлежать half_cpu_1gb_max и trans_rate_30.
Дочерний процесс лишь изначально наследует группы родительского процесса и впоследствии не зависит от него. То есть изменение группы одного процесса никак не скажется на другом.