3.6. Moving a Process to a Control Group
Move a process into a cgroup by running the
cgclassify command:
cgclassify -g controllers:path_to_cgroup pidlist
~]# cgclassify -g controllers:path_to_cgroup pidlist
where:
- controllers is a comma-separated list of resource controllers, or
/*to launch the process in the hierarchies associated with all available subsystems. Note that if there are multiple cgroups of the same name, the-goption moves the processes in each of those groups. - path_to_cgroup is the path to the cgroup within the hierarchy;
- pidlist is a space-separated list of process identifier (PIDs).
If the
-g option is not specified, cgclassify automatically searches /etc/cgrules.conf and uses the first applicable configuration line. According to this line, cgclassify determines the hierarchies and cgroups to move the process under. Note that for the move to be successful, the destination hierarchies have to exist. The subsystems specified in /etc/cgrules.conf has to be also properly configured for the corresponding hierarchy in /etc/cgconfig.conf.
You can also add the
--sticky option before the pid to keep any child processes in the same cgroup. If you do not set this option and the cgred service is running, child processes will be allocated to cgroups based on the settings found in /etc/cgrules.conf. The process itself, however, will remain in the cgroup in which you started it.
It is also possible to use the cgred service (which starts the
cgrulesengd service) that moves tasks into cgroups according to parameters set in the /etc/cgrules.conf file. Use cgred only to manage manually attached controllers. Entries in the /etc/cgrules.conf file can take one of the two forms:
- user subsystems control_group;
- user:command subsystems control_group.
For example:
maria net_prio /usergroup/staff
maria net_prio /usergroup/staff
This entry specifies that any processes that belong to the user named
maria access the devices subsystem according to the parameters specified in the /usergroup/staff cgroup. To associate particular commands with particular cgroups, add the command parameter, as follows:
maria:ftp devices /usergroup/staff/ftp
maria:ftp devices /usergroup/staff/ftp
The entry now specifies that when the user named
maria uses the ftp command, the process is automatically moved to the /usergroup/staff/ftp cgroup in the hierarchy that contains the devices subsystem. Note, however, that the daemon moves the process to the cgroup only after the appropriate condition is fulfilled. Therefore, the ftp process can run for a short time in an incorrect group. Furthermore, if the process quickly spawns children while in the incorrect group, these children might not be moved.
Entries in the
/etc/cgrules.conf file can include the following extra notation:
@— when prefixed to user, indicates a group instead of an individual user. For example,@adminsare all users in theadminsgroup.\*— represents "all". For example,\*in thesubsystemfield represents all subsystems.%— represents an item the same as the item on the line above. For example:@adminstaff net_prio /admingroup @labstaff % %
@adminstaff net_prio /admingroup @labstaff % %Copy to Clipboard Copied! Toggle word wrap Toggle overflow