首批通过分布式安全可靠测评,为关键业务系统打造
使用全局 CPU 资源的前后台隔离
更新时间:2026-07-29 10:39:51
为了实现更好的隔离效果,OceanBase 数据库支持了全局 CPU 资源的前后台隔离功能。该功能可以在全局层面上对所有租户的前台和后台任务进行 CPU 资源隔离。
CPU 隔离概述
在高性能计算环境中,资源的合理分配与隔离对于确保系统稳定性和提升效率具有决定性作用。有效的资源隔离策略可以预防任务间的资源争夺和相互干扰,从而提升资源利用效率和整体服务质量。当前,OceanBase 数据库已实现了通过租户的 Unit 规格来配置租户间的资源隔离,以及通过 DBMS_RESOURCE_MANAGER 系统包来配置租户内的资源隔离。
在未开启全局 CPU 资源的前后台隔离功能时,OBServer 节点的 CPU 隔离包含租户间的 CPU 隔离和租户内的 CPU 隔离,其隔离效果如下图所示。

隔离的层次为一个树状结构,租户之间的隔离策略由租户的 Unit 规格决定,每个租户内部还有各租户内任务的资源隔离,由 DBMS_RESOURCE_MANAGER 系统包来进行控制。
开启全局 CPU 资源的前后台隔离功能后,系统会在租户层级创建一个基于后台任务的子 cgroup。该后台子 cgroup 可以理解为一个 “虚拟租户”,即相当于一个 MAX_CPU 为配置项 global_background_cpu_quota 的值,并且 MIN_CPU 为 1 的虚拟租户。开启了全局 CPU 资源前后台隔离功能的隔离效果如下表所示。

开启全局 CPU 资源的前后台隔离功能后,即使不设置租户内的隔离策略,也会在整体层面上限制所有后台任务可使用的 CPU 资源上限(global_background_cpu_quota),从而有效地避免出现后台任务影响前台业务的情况。
适用场景
全局 CPU 资源的前后台隔离功能的推荐场景:
期望在整体层面上对后台任务进行隔离,避免后台任务影响到前台业务。
不希望计算与配置复杂的租户间或租户内资源隔离策略,特别是租户较多的时候配置起来比较繁琐
前提条件
使用全局 CPU 资源的前后台隔离功能要求 OBServer 节点已配置 cgroup 目录并开启 cgroup 功能,配置并开启 cgroup 的详细操作,参见 配置 cgroup。
注意事项
对于租户间的 CPU 隔离,在开启了全局 CPU 资源的前后台隔离功能后,每个租户的后台任务可使用的 CPU 上限会受到配置项
global_background_cpu_quota值的限制,即每个租户的后台任务可使用的 CPU 上限实际为:min(租户的 MAX_CPU, global_background_cpu_quota)。注意
对于 V4.2.1 及之后版本,为避免 sys 租户的处理请求受到干扰,sys 租户的 CPU 使用不受限制。
对于租户内的 CPU 隔离,在开启了全局 CPU 资源的前后台隔离功能后,在使用
DBMS_RESOURCE_MANAGER系统包配置租户内的资源隔离时,租户下每个后台任务的 CPU 使用上限可以根据租户的所有后台任务可使用的总 CPU 上限来计算,即租户下每个后台任务的 CPU 使用上限实际为:min(global_background_cpu_quota, 租户的 MAX_CPU) * 资源组内的 UTILIZATION_LIMIT。
开启全局 CPU 资源的前后台隔离
OceanBase 数据库通过以下两个配置项来实现全局 CPU 资源的前后台隔离:
enable_global_background_resource_isolation集群级配置项
enable_global_background_resource_isolation用于控制是否开启前后台任务的 CPU 资源隔离。默认值为False,表示不开启前后台任务的 CPU 资源隔离,即后台任务与前台任务在租户内隔离。需要重启 OBServer 节点才能生效。当其值为
True时,表示开启前后台任务的 CPU 隔离,即后台任务会在租户的上层进行单独隔离。有关配置项
enable_global_background_resource_isolation的更多说明,参见 enable_global_background_resource_isolation。global_background_cpu_quota集群级配置项
global_background_cpu_quota用于控制后台任务可使用的 CPU 配额。默认值为-1,表示后台任务可使用的 CPU 资源不受 cgroup 限制。有关配置项
global_background_cpu_quota的更多说明,参见 global_background_cpu_quota。
开启全局 CPU 资源的前后台隔离的具体操作如下:
使用
root用户登录集群的sys租户。执行以下命令,开启前后台任务 CPU 资源的全局隔离。
obclient> ALTER SYSTEM SET enable_global_background_resource_isolation = True;配置后台任务可使用的最大 CPU 配额。
需要根据业务实际情况来配置后台任务可使用的 CPU 配额。配置时,要求该值需要小于当前 OBServer 节点的 CPU 配额。
obclient> ALTER SYSTEM SET global_background_cpu_quota = 3;重启 OBServer 节点,使配置生效。
配置生效后,系统会在原 cgroup 目录结构中,创建一个与所有租户同级的
background目录,作为后台任务的 cgroup,并且在background目录下又会新建所有租户对应的 cgroup 目录。
后续操作
尽管通过开启全局 CPU 资源的前后台隔离功能可以达到在全局层面上限制后台任务的目的,如果还希望对后台任务做进一步精细的隔离调控,则需要通过 DBMS_RESOURCE_MANAGER 系统包来配置租户内的资源隔离。使用DBMS_RESOURCE_MANAGER 系统包配置租户内资源隔离的详细操作,参见 配置租户内资源隔离。