In OceanBase Database V4.2.0, worker threads and most background threads are identified by tenant, and network threads are shared. You can configure control groups (cgroups) to control the CPU usage of tenants.
Background information
Before you configure cgroups, we recommend that you learn about the concept of cgroup first. For more information, see Overview.
Procedure
Step 1: Configure the cgroup system directory
Notice
You must configure the cgroup system directory before you install OceanBase Database.
This topic describes how to configure the cgroup system directory on one OBServer node. If the OceanBase cluster consists of multiple OBServer nodes, you must configure the cgroup system directory on each OBServer node.
Log on as the
adminuser to the OBServer server.Run the following command to mount the
/sys/fs/cgroupdirectory.Note
If the
/sys/fs/cgroupdirectory already exists, skip this step.[admin@xxx /]$ sudo mount -t tmpfs cgroups /sys/fs/cgroupHere,
cgroupsis a user-defined name for identification when you view the mount information.The mounting result is as follows:
$df Filesystem 1K-blocks Used Available Use% Mounted on / 293601280 28055472 265545808 10% / /dev/v01d 2348810240 2113955876 234854364 91% /data/1 /dev/v02d 1300234240 1170211208 130023032 91% /data/log1 shm 33554432 0 33554432 0% /dev/shm /dev/v04d 293601280 28055472 265545808 10% /home/admin/logs cgroups 395752136 0 395752136 0% /sys/fs/cgroupCreate a directory named
/sys/fs/cgroup/cpuand change its owner. This directory is used for mounting the cpu subsystem later.[admin@xxx /]$ sudo mkdir /sys/fs/cgroup/cpu [admin@xxx /]$ sudo chown admin:admin -R /sys/fs/cgroup/cpuNote
If the
/sys/fs/cgroup/cpudirectory already exists and is empty, skip this step.Mount the cpu subsystem.
Create a directory hierarchy named
cpu, attach the cpu subsystem to this hierarchy, and mount this hierarchy to the/sys/fs/cgroup/cpudirectory.[admin@xxx /]$ sudo mount -t cgroup -o cpu cpu /sys/fs/cgroup/cpuCreate a subdirectory named
oceanbaseand change its owner toadmin.[admin@xxx /]$ sudo mkdir /sys/fs/cgroup/cpu/oceanbase [admin@xxx /]$ sudo chown admin:admin -R /sys/fs/cgroup/cpu/oceanbaseRun the following commands to set the
oceanbasedirectory to inherit the CPU and memory configurations from the upper-level directory and set the lower-level directories of theoceanbasedirectory to automatically inherit its configurations.Notice
At present, the cpu, cpuset, and cpuacct subsystems cannot be mounted to different directories. If they are mounted to different directories on your server, clear the mounting information and then run the
sudo mount -t cgroup -o cpuset,cpu,cpuacct cpu /sys/fs/cgroup/cpucommand to mount them to the same directory.Confirm that the cpu, cpuset, and cpuacct subsystems are mounted to the same directory and then run the following commands:
[admin@xxx /]$ sudo sh -c "echo `cat /sys/fs/cgroup/cpu/cpuset.cpus` > /sys/fs/cgroup/cpu/oceanbase/cpuset.cpus" [admin@xxx /]$ sudo sh -c "echo `cat /sys/fs/cgroup/cpu/cpuset.mems` > /sys/fs/cgroup/cpu/oceanbase/cpuset.mems" [admin@xxx /]$ sudo sh -c "echo 1 > /sys/fs/cgroup/cpu/oceanbase/cgroup.clone_children"
Step 2: Deploy OceanBase Database
After the cgroup system directory is configured, you can deploy OceanBase Database. For the deployment procedure, see Deploy OceanBase Database.
Step 3: Establish a soft link to OceanBase Database
After OceanBase Database is installed, establish a soft link between the installation directory of OceanBase Database and the cgroup system directory.
Log on as the
adminuser to the OBServer node.Manually establish a soft link between the installation directory of OceanBase Database and the cgroup system directory.
[admin@xxx /home/admin]$ cd /home/admin/oceanbase/ [admin@xxx /home/admin] $ ln -sf /sys/fs/cgroup/cpu/oceanbase/ cgroup/home/admin/oceanbase/is the installation directory of OceanBase Database.The execution result is as follows:
[admin@xxx /home/admin/oceanbase] $ll cgroup lrwxrwxrwx 1 admin admin 29 Dec 8 11:09 cgroup -> /sys/fs/cgroup/cpu/oceanbase/Restart the observer process.
You must first stop the observer process and then restart it. For more information, see Restart a node.
If the observer process detects that a soft link has been established, it will create the cgroup directory in the
/sys/fs/cgroup/cpu/oceanbase/directory.
Step 4: Enable the cgroup feature
In OceanBase Database, the cluster-level enable_cgroup parameter specifies whether to enable the cgroup feature for the OBServer node. The default value is True, which specifies to enable this feature. If this feature is disabled, perform the following steps to enable it.
Log on to the
systenant of the cluster as therootuser.Run the following command to enable the cgroup feature:
obclient> ALTER SYSTEM SET enable_cgroup=true;or
obclient> ALTER SYSTEM SET enable_cgroup=1;or
obclient> ALTER SYSTEM SET enable_cgroup=ON;
What to do next
After you configure the cgroup system directory and enable the cgroup feature, in the case of emergencies, you can control the utilization of CPU resources in a tenant by using the cpu.cfs_period_us, cpu.cfs_quota_us, and cpu.shares files in the directory of the tenant. Generally, we recommend that you do not implement resource isolation in this way.
We recommend that you use the files in the cgroup system directory to call the CREATE_CONSUMER_GROUP subprogram in the DBMS_RESOURCE_MANAGER package to create resource groups for user-level or SQL statement-level resource isolation. For more information about user-level and SQL statement-level resource isolation, see the following topics: