3.5. Setting Cgroup Parameters
Modify the parameters of the control groups by editing the
/etc/cgconfig.conf
configuration file, or by using the cgset
command. Changes made to /etc/cgconfig.conf
are preserved after reboot, while cgset
changes the cgroup parameters only for the current session.
Modifying /etc/cgconfig.conf
You can set the controller parameters in the Groups section of
/etc/cgconfig.conf
. Group entries are defined using the following syntax:
group name {
[permissions]
controller {
param_name = param_value;
…
}
…
}
Replace name with the name of your cgroup, controller stands for the name of the controller you wish to modify. You should modify only controllers you mounted yourself, not any of the default controllers mounted automatically by systemd. Replace param_name and param_value with the controller parameter you wish to change and its new value. Note that the
permissions
section is optional. To define permissions for a group entry, use the following syntax:
perm { task { uid = task_user; gid = task_group; } admin { uid = admin_name; gid = admin_group; } }
Note
Restart the
cgconfig
service for the changes in the /etc/cgconfig.conf
to take effect. Restarting this service rebuilds hierarchies specified in the configuration file but does not affect all mounted hierarchies. You can restart a service by executing the systemctl restart
command, however, it is recommended to first stop the cgconfig
service:
~]# systemctl stop cgconfig
Then open and edit the configuration file. After saving your changes, you can start
cgconfig
again with the following command:
~]# systemctl start cgconfig
Using the cgset Command
Set controller parameters by running the
cgset
command from a user account with permission to modify the relevant cgroup. Use this only for controllers you mounted manually.
The syntax for
cgset
is:
cgset
-r
parameter=value path_to_cgroup
where:
- parameter is the parameter to be set, which corresponds to the file in the directory of the given cgroup;
- value is the value for the parameter;
- path_to_cgroup is the path to the cgroup relative to the root of the hierarchy.
The values that can be set with
cgset
might depend on values set higher in a particular hierarchy. For example, if group1
is limited to use only CPU 0 on a system, you cannot set group1/subgroup1
to use CPUs 0 and 1, or to use only CPU 1.
It is also possible use
cgset
to copy the parameters of one cgroup into another, existing cgroup. The syntax to copy parameters with cgset
is:
cgset
--copy-from
path_to_source_cgroup path_to_target_cgroup
where:
- path_to_source_cgroup is the path to the cgroup whose parameters are to be copied, relative to the root group of the hierarchy;
- path_to_target_cgroup is the path to the destination cgroup, relative to the root group of the hierarchy.