---
title: "配置 cgroup - OceanBase 数据库 V4.6.0 | OceanBase 文档中心"
description: 配置 cgroup 本文主要介绍如何为 OceanBase 数据库配置 cgroup。 背景信息 OceanBase 数据库的当前版本中，由于租户工作线程和大部分后台线程均根据租户来区分，网络线程为共享线程，用户可以通过配置 cgroup 来控制租户 CPU 或 IOPS 等资源的占用。在开始配置 cgroup 前，…
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*P8CuR4UJ_FkAAAAAAAAAAAAADiGDAQ/original) OceanBase 数据库分布式版 - V 4.6.0

# 配置 cgroup

更新时间：2026-05-19 16:10:19

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.6.0/zh-CN/600.manage/200.tenant-management/600.common-tenant-operations/300.resource-isolation/200.resource-isolation-of-oracle-mode/100.config-cgroups-of-oracle-mode.md)  

本文主要介绍如何为 OceanBase 数据库配置 cgroup。

## 背景信息

OceanBase 数据库的当前版本中，由于租户工作线程和大部分后台线程均根据租户来区分，网络线程为共享线程，用户可以通过配置 cgroup 来控制租户 CPU 或 IOPS 等资源的占用。在开始配置 cgroup 前，建议您先了解 cgroup 的概念，有关 cgroup 的介绍信息请参见 [资源隔离概述](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000005682929)。

## 使用限制或注意事项

- 由于设置资源隔离对性能影响比较大，以下场景下不建议使用 cgroup 功能进行租户的资源隔离：

     - 单租户场景，即集群中只有一个租户
     - 租户之间有业务关联的场景，例如，不同的微服务放在不同的租户，从而租户相互间呈上下游关系
     - 小规格租户场景，即 CPU 为 2C 或 4C 的租户
 - 要使用 cgroup 功能，要求 Linux 内核版本必须为 Linux Kernel 4.19 及以上版本。
 - OceanBase 数据库升级后，需要重新配置 cgroup。
 - 如果 OBServer 服务器重启，创建好的 cgroup 子目录（例如，本文档中 `/sys/fs/cgroup/` 目录下的所有子目录）会被清除，需要重新配置 cgroup。

## 操作步骤

### 步骤一：配置 cgroup 系统目录

#### 注意

- cgroup 系统目录的配置操作可以在 OceanBase 数据库软件安装前进行，也可以在 OceanBase 数据库软件安装后进行。本文档以 OceanBase 数据库软件已安装的前提下为例，提供 cgroup 系统目录的配置操作指导。
 - 配置 cgroup 系统目录时需要 `root` 用户权限。

本节以在一个 OBServer 节点上配置 cgroup 系统目录为例，如果有多个 OBServer 节点，则每个 OBServer 节点上都需要配置。

1. 使用 `admin` 用户登录到 OBServer 服务器。
 2. 执行以下命令，挂载 `/sys/fs/cgroup` 目录。

   #### 说明

   如果已经存在 `/sys/fs/cgroup` 目录，则可忽略该步骤。

   ```shell
   [admin@xxx /]$ sudo mount -t tmpfs cgroups /sys/fs/cgroup

   ```

   其中，`cgroups` 为自定义名称，用于在查看 Mount 信息时进行标识。

   挂载结果如下所示。

   ```shell
   $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/cgroup

   ```
 3. 创建 `/sys/fs/cgroup/cpu` 目录并修改 Owner 后，挂载 cpu 子系统。

   #### 说明

   如果已经存在 `/sys/fs/cgroup/cpu` 目录且目录为空，则可忽略该步骤。

   ```shell
   [admin@xxx /]$ sudo mkdir /sys/fs/cgroup/cpu

   [admin@xxx /]$ sudo chown admin:admin -R /sys/fs/cgroup/cpu

   ```

   创建一个名为 `cpu` 的层级，在该层级上附加 `cpu` 子系统，并且将层级挂载到 `/sys/fs/cgroup/cpu` 目录。

   ```shell
   [admin@xxx /]$ sudo mount -t cgroup -o cpu cpu /sys/fs/cgroup/cpu

   ```
 4. 创建名为 `oceanbase` 的子目录，并修改其 Owner 为 `admin`。

   ```shell
   [admin@xxx /]$ sudo mkdir /sys/fs/cgroup/cpu/oceanbase

   [admin@xxx /]$ sudo chown admin:admin -R /sys/fs/cgroup/cpu/oceanbase

   ```
 5. 为 `oceanbase` 目录分配 CPU 和 Memory 资源。

      1. 执行以下命令，查看机器上 cpu、cpuacct、cpuset 三个子系统的挂载情况。

        ```shell
        [admin@xxx /]$ ll /sys/fs/cgroup

        ```
      2. 根据子系统的挂载情况，选择合适的操作：

             - cpuset 子系统与 cpu、cpuacct 等子系统一起挂载

              该场景下，通常是三个子系统挂载在同一目录下，例如，挂载结果如下所示。

              ```shell
              drwxr-xr-x 3 root root 0 Jul 24 2020 blkio
              lrwxrwxrwx 1 root root 33 Jul 24 2020 cpu -> /sys/fs/cgroup/cpuset,cpu,cpuacct
              lrwxrwxrwx 1 root root 33 Jul 24 2020 cpuacct -> /sys/fs/cgroup/cpuset,cpu,cpuacct
              lrwxrwxrwx 1 root root 33 Jul 24 2020 cpuset -> /sys/fs/cgroup/cpuset,cpu,cpuacct
              drwxr-xr-x 4 root root 0  Jul 24 2020 cpuset,cpu,cpuacct

              ```

              对于该场景，需要执行以下命令来为 `oceanbase` 目录分配 CPU 和 Memory 资源。

              ```shell
              [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"

              ```
             - cpuset 子系统与 cpu、cpuacct 等子系统分开挂载

              该场景下，cpuset 子系统与 cpu、cpuacct 等子系统为分开挂载（通常 ECS 机型较多），其挂载结果如下所示。

              ```shell
              drwxr-xr-x 2 root root 40 2月 27 15:27 blkio
              lrwxrwxrwx 1 root root 11 2月 27 15:27 cpu -> cpu,cpuacct
              lrwxrwxrwx 1 root root 11 2月 27 15:27 cpuacct -> cpu,cpuacct
              drwxr-xr-x 2 root root 40 2月 27 15:27 cpu,cpuacct
              drwxr-xr-x 2 root root 40 2月 27 15:27 cpuset

              ```

              对于该场景，不需要执行额外操作，直接进行下一步即可。
 6. 行以下命令，为 `oceanbase` 目录设置子目录的继承属性。

   ```shell
   [admin@xxx /]$ sudo sh -c "echo 1 > /sys/fs/cgroup/cpu/oceanbase/cgroup.clone_children"

   ```

   命令执行成功后，在 `oceanbase`目录下创建的 cgroup 子目录，其属性均会继承父目录。

### 步骤二：与 OceanBase 数据库建立软链接

配置 cgroup 系统目录后，需要建立 OceanBase 数据库软件的安装目录与 cgroup 系统目录的软链接。

1. 使用 `admin` 用户登录到 OBServer 节点。
 2. 手动建立 OceanBase 数据库软件的安装目录与 cgroup 系统目录的软链接。

   ```shell
   [admin@xxx /home/admin]$ cd /home/admin/oceanbase/

   [admin@xxx /home/admin]
   $ ln -sf /sys/fs/cgroup/cpu/oceanbase/ cgroup

   ```

   其中：`/home/admin/oceanbase/` 为 OceanBase 数据库软件的安装路径。

   执行成功后，结果如下所示。

   ```shell
   [admin@xxx /home/admin/oceanbase]
   $ll cgroup
   lrwxrwxrwx 1 admin admin 29 Dec  8 11:09 cgroup -> /sys/fs/cgroup/cpu/oceanbase/
   lrwxrwxrwx 1 admin admin 29 Dec  8 11:09 cgroup -> /sys/fs/cgroup/blkio/oceanbase/

   ```

### 步骤三：开启 cgroup 功能

OceanBase 数据库通过集群级配置项 `enable_cgroup` 来控制 OBServer 是否开启 cgroup 功能，其默认值为 `True`，表示开启 cgroup 功能。建立软链接并开启 cgroup 功能后，不需要重启 OBServer 节点，cgroup 功能就会自动生效。

如果未开启 cgroup 功能，您可以参考以下操作，开启 cgroup 功能。

1. 使用 `root` 用户登录集群的 `sys` 租户。
 2. 执行以下命令，开启 cgroup 功能。

   ```shell
   obclient> ALTER SYSTEM SET enable_cgroup = true;

   ```

   或者

   ```shell
   obclient> ALTER SYSTEM SET enable_cgroup = 1;

   ```

## 后续操作

成功配置 cgroup 系统目录并开启 cgroup 功能后，在应急情况下，您可以通过各租户所在目录下的 `cpu.cfs_period_us`、`cpu.cfs_quota_us`、`cpu.shares` 等文件来控制租户内 CPU 资源的占用。一般不建议使用该方式进行资源隔离。

建议使用 cgroup 中的目录文件调用 `DBMS_RESOURCE_MANAGER` 系统包中的子程序 `CREATE_CONSUMER_GROUP` 创建的资源组，来进行用户级或 SQL 级的资源隔离。配置资源隔离的详细操作，参见 [配置租户内资源隔离](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000005685789)。

## 相关文档

[清除 cgroup 配置](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000005685788)

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
