Show Table of Contents
2.8. Перенос процесса в контрольную группу
Процесс можно переместить с помощью команды
cgclassify:
~]# cgclassify -g cpu,memory:group1 1701
Формат:
cgclassify -g подсистемы:путь PID.
- подсистемы — список подсистем, разделенных запятой. Если указать
*, то будут выбраны все подсистемы, которым принадлежат указанные процессы. Если в разных иерархиях есть группы с одним и тем же именем,-gпереместит процессы в каждую группу. - путь — путь к группе из корня иерархии.
- PID — список идентификаторов процессов, разделенных запятой.
Дополнительный аргумент
-- sticky перед идентификатором процесса оставляет дочерние процессы в текущей контрольной группе. Если аргумент не указан, и в то же время выполняется cgred, дочерние процессы будут переназначены в соответствии с настройками в /etc/cgrules.conf. Сам процесс будет оставаться в исходной контрольной группе.
С помощью
cgclassify можно сразу переместить несколько процессов. Следующая команда переместит процессы с PID 1701 и 1138 в группу group1:
~]# cgclassify -g cpu,memory:group1 1701 1138
Идентификаторы процессов разделяются пробелом, а указанные группы должны принадлежать разным иерархиям.
Создание иерархии в оболочке
Чтобы напрямую переместить процесс в группу, запишите его PID в файл
tasks этой группы. Команда переноса процесса 1701 в /cgroup/lab1/group1/ будет выглядеть так:
~]# echo 1701 > /cgroup/lab1/group1/tasks2.8.1. cgred
Служба cgred отвечает за перенос заданий в контрольные группы на основе заданных в
/etc/cgrules.conf параметров. Записи в /etc/cgrules.conf могут следовать следующим форматам:
- пользователь иерархии контрольная_группа
- пользователь:команда иерархии контрольная_группа
Например:
maria devices /usergroup/staff
В этом примере все процессы, принадлежащие пользователю
maria, будут обращаться к подсистеме devices в соответствии с заданными для группы /usergroup/staff параметрами. Чтобы сопоставить отдельные команды контрольным группам, укажите их после имени пользователя:
maria:ftp devices /usergroup/staff/ftp
То есть если пользователь
maria выполняет команду ftp, процесс будет автоматически перемещен в группу /usergroup/staff/ftp в иерархии, содержащей подсистему devices. Стоит отметить, что перенос процесса будет осуществлен только при выполнении указанного условия, поэтому может оказаться так, что ftp некоторое время будет выполняться не в той группе. Более того, если процесс создает другие процессы во время выполнения в другой группе, нет гарантии, что дочерние процессы будут корректно перемещены.
Записи в
/etc/cgrules.conf могут включать дополнительные выражения:
@перед именем пользователя обозначает не отдельного пользователя, а группу. Например,@adminsвключает всех пользователей в группеadmins.*охватывает все компоненты. Так,*в поле подсистем обозначает все подсистемы.%копирует элементы из предыдущей строки. Например:@adminstaff devices /admingroup @labstaff % %

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.