2.5. Создание контрольных групп

Формат команды создания групп: cgcreate -t uid:gid -a uid:gid -g подсистемы:путь.
  • -t (необязательный): определяет пользователя (по UID) и группу (по GID), которым будет принадлежать псевдофайл tasks создаваемой группы. Пользователь сможет добавлять и удалять задания из группы.

    Примечание

    Единственный метод удаления задач из группы заключается в их перемещении в другую группу. При этом пользователь должен обладать правами записи во вторую группу.
  • -a (необязательный): определяет пользователя (по UID) и группу (по GID), которым будут принадлежать все псевдофайлы группы кроме tasks. Этот пользователь сможет изменять уровень доступа заданий к ресурсам.
  • -g (необзятельный): разделенный запятой список подсистем, определяющих иерархии, которым будет принадлежать группа. Список завершается двоеточием, после которого следует путь к группе. Точка подключения иерархии не указывается.
    К примеру, группа в /cgroup/cpu_and_mem/lab1/ будет обозначена как lab1, так как ее путь уже известен в силу того, что заданной подсистеме соответствует всего одна иерархия. Группа контролируется всеми подсистемами в указанных иерархиях, даже если некоторые подсистемы не были напрямую перечислены в строке cgcreate (см. Пример 2.5, «Пример cgcreate»).
Так как контрольные группы в иерархии используют одни и те же контроллеры, дочерние группы тоже их унаследуют.

Пример 2.5. Пример cgcreate

Представим, что подсистемы cpu и memory подключены в иерархию cpu_and_mem, а net_cls — в net.
~]# cgcreate -g cpu,net_cls:/test-subgroup
cgcreate создаст две группы с именем test-subgroup — одну в иерархии cpu_and_mem, а вторую в net. Первая группа будет также находиться под контролем подсистемы memory, хотя это не указано явно.

Создание иерархии в оболочке

Чтобы создать дочернюю группу, используйте команду mkdir:
~]# mkdir /cgroup/иерархия/имя/новая_группа
Например:
~]# mkdir /cgroup/cpuset/lab1/group1