2.2. Создание иерархии и подключение подсистем

Предупреждение

Приведенные ниже инструкции подразумевают, что контрольные группы еще не настроены. Изменение параметров в существующих группах может повлиять на производительность задач в их составе.
Если в системе уже настроены группы (вручную или с помощью cgconfig), приведенные здесь команды завершатся неудачей, так как для их работы необходимо отключить существующие иерархии, что повлияет на производительность системы. Не рекомендуется экспериментировать с этими настройками в критически важных системах.
Чтобы создать иерархию и подключить к ней подсистемы, надо добавить соответствующие записи в секцию mount в /etc/cgconfig.conf (в режиме root). Формат:
подсистема = /cgroup/иерархия;
При следующем запуске cgconfig будет создана иерархия и подключены подсистемы.
Далее будет создана иерархия cpu_and_mem, к которой будут подключены подсистемы cpu, cpuset, cpuacct, memory.
mount {
    cpuset  = /cgroup/cpu_and_mem;
    cpu     = /cgroup/cpu_and_mem;
    cpuacct = /cgroup/cpu_and_mem;
    memory  = /cgroup/cpu_and_mem;
}

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

Иерархии могут быть созданы с помощью команд оболочки.
В режиме root создайте каталог с именем контрольной группы, который будет служить точкой подключения иерархии:
~]# mkdir /cgroup/имя
Например:
~]# mkdir /cgroup/cpu_and_mem
Подключите иерархию и добавьте в нее подсистемы:
~]# mount -t cgroup -o подсистемы иерархия /cgroup/иерархия
Здесь подсистемы — список подсистем, разделенных запятой (см. Подсистемы в Red Hat Enterprise Linux и Глава 3, Подсистемы и настраиваемые параметры).

Пример 2.3. Подключение подсистем с помощью mount

В следующем примере в качестве точки подключения иерархии будет использоваться существующий каталог /cgroup/cpu_and_mem. К иерархии с именем cpu_and_mem будут подключены подсистемы cpu, cpuset и memory. Наконец, cpu_and_mem будет подключена в /cgroup/cpu_and_mem:
~]# mount -t cgroup -o cpu,cpuset,memory cpu_and_mem /cgroup/cpu_and_mem
Список доступных подсистем и соответствующих точек подключения можно получить с помощью команды lssubsys [3]:
~]# lssubsys -am
cpu,cpuset,memory /cgroup/cpu_and_mem
net_cls
ns
cpuacct
devices
freezer
blkio
Исходя из этого, можно сделать следующие выводы:
  • иерархии /cgroup/cpu_and_mem назначены подсистемы cpu, cpuset, memory;
  • подсистемы net_cls, ns, cpuacct, devices, freezer и blkio еще не принадлежат никаким иерархиям, о чем свидетельствует отсутствие соответствующих точек подключения.


[3] lssubsys входит в состав пакета libcgroup (см. Глава 2, Работа с контрольными группами).