8 About Control Groups
Control groups, usually referred to as cgroups
, are an Oracle Linux kernel feature that enables processes (PIDs
)
to be organized into hierarchical groups for resource allocation. For example, if you have
identified 3 sets of processes that need to be allocated CPU time in a ratio of 150:100:50,
you can create 3 cgroups
, each with a CPU weight corresponding to one of the
3 values in the ratio, and then assign the appropriate processes to each
cgroup
.
By default, systemd
creates a cgroup
for the following:
-
Each
systemd
service set up on the host.For example, a server might have control group
NetworkManager.service
to group processes owned by theNetworkManager
service, and control groupfirewalld.service
to group processes owned by thefirewalld
service, and so on. -
Each user (
UID
) on the host.
The cgroup
functionality is mounted as a virtual file system under /sys/fs/cgroup
. Each cgroup has a corresponding folder within /sys/fs/cgroup
file system. For example, the cgroups
created by systemd
for the services it manages can be seen by running the command ls -l /sys/fs/cgroup/system.slice | grep ".service"
as shown in the following sample code block:
ls -l /sys/fs/cgroup/system.slice | grep ".service"
...root root 0 Mar 22 10:47 atd.service
...root root 0 Mar 22 10:47 auditd.service
...root root 0 Mar 22 10:47 chronyd.service
...root root 0 Mar 22 10:47 crond.service
...root root 0 Mar 22 10:47 dbus-broker.service
...root root 0 Mar 22 10:47 dtprobed.service
...root root 0 Mar 22 10:47 firewalld.service
...root root 0 Mar 22 10:47 httpd.service
...
You can also create custom cgroups
by creating folders under the
/sys/fs/cgroup
virtual file system and assigning process IDs
(PIDs
) to different cgroups
according to the system needs.
However, the recommended practice is to use systemd
to configure
cgroups
instead of creating the cgroups
manually under
/sys/fs/cgroup.
See Using systemd to Manage cgroups v2 for the recommended method of managing cgroups
through
systemd
.
Note:
Use systemd
to configure cgroups
.
Although the recommended method for configuring using systemd
to manage cgroups, this topic also covers the manual creation of cgroup
folders in the /sys/fs/cgroup
file system. However, this coverage is mainly to provide background knowledge of the kernel cgroup
feature to which systemd
provides access.
Oracle Linux uses the control groups version 2 (cgroups v2)
implementation. These groups provide a single control group hierarchy against which all resource
controllers are mounted. In this hierarchy, you can obtain better proper coordination
of resource uses across different resource controllers. This version is an improvement
over cgroups v1
whose over flexibility prevented proper coordination
of resource use among the system consumers.
Note that cgroups v1
is deprecated and is not available on Oracle Linux 10.
The cgroups v2
functionality is enabled and mounted by default.
For more information about control groups, see the cgroups(7)
and
sysfs(5)
manual pages.