yuan-er

导航

 

资源管理概述

操作场景

云数据库GaussDB的资源管理功能通过资源池和控制组实现对用户资源的管控,每个资源池可以分配适当配额的CPU、内存、IO、并发数和连接数资源。其中IO、内存、并发数、连接数这4种资源的配额可以在资源池中以数值的方式直接指定,而资源池对CPU资源的管控需要通过绑定控制组实现。GaussDB利用Linux的Cgroups机制来进行CPU资源管理,可以在控制组中设置CPU配额与核数资源的分配。该功能可以实现多租户场景下资源的精准划分和控制,做到资源隔离,保证不互相影响,同时可以解决高负载场景下资源不足导致实例不可服务的问题。

资源管理功能的流程如图1,在控制组管理界面完成控制组的创建,在资源池管理界面完成资源池的创建(包括关联控制组和设置其他资源配额),在用户管理界面给数据库用户绑定创建好的资源池即可实现该用户下作业的资源管理。

图1 资源管理基础框架

控制组类别与层级划分

  • 控制组架构
    • GaussDB控制组的架构如图2所示。Class控制组为数据库业务运行所在的顶层控制组,用户可以在Class控制组下自定义控制组来进行CPU资源的分配。数据库实例部署时会在Class控制组下自动生成默认控制组“DefaultClass”。DefaultClass下层的Medium控制组会含有系统触发的作业在运行,该控制组不允许进行CPU资源的修改,且运行在该控制组上的作业不受资源管理的控制,所有作业都运行在这个控制组上的时候,资源不受限制,相互争抢,所以推荐用户自定义控制组来设置CPU资源比例。
      图2 GaussDB控制组结构
  • 控制组层级
    • 在顶层Class控制组下允许用户自定义的控制组分为如下两个层级:
      1. 第一个层级是子class控制组,创建子class控制组设置CPU资源会直接占用顶级Class控制组的CPU资源 (DefaultClass控制组为默认控制组,固定占有顶级Class控制组20%的CPU资源)。
      2. 第二个层级是workload控制组,在每个子class控制组下可以创建多个workload控制组,对所属的子class控制组占有的CPU资源进行更细致地划分。用户业务如果有对CPU分层管理的需求,可灵活选择创建不同层级的控制组,如果无特别要求,仅使用子class层级的控制组即可。

资源池类别与层级划分

资源池的类别与层级由它绑定的控制组的类别与层级决定:

  • 组资源池:绑定子class控制组的资源池。
  • 业务资源池:绑定workload控制组的资源池。

系统会自动创建默认资源池default_pool,default_pool会绑定默认CPU控制组DefaultClass:Medium,对其他资源均不设限制。客户可根据自身业务对CPU资源层级管理的需要,来选择创建不同层级的资源池。如果无特别要求,仅使用组资源池即可。

资源池的层级由且仅由它所绑定的控制组的层级决定。因此,组资源池与其下属的业务资源池仅有CPU资源有包含关系,即分配给业务资源池的CPU资源占据的是其所属组资源池的CPU资源的配额,但是内存、IO、连接数、并发数资源是独立占用GaussDB资源的,没有包含关系。

用户类别与层级划分

在创建资源池时完成了CPU控制组的绑定和其他资源的配额设置后,相当于获得了一个指定资源的容器,下一步是将其关联到具体的数据库用户,从而实现该用户的资源分配与隔离,组用户关联组资源池,业务用户关联业务资源池。

  • 组用户:创建用户时如果关联指定组资源池,创建的用户即为组用户。
  • 业务用户:创建用户时如果关联指定业务资源池,创建的用户即为业务用户。

客户可以根据自身业务需要,指定用户关联不同的资源池。如不显式指定用户关联的资源池,则会默认关联默认资源池default_pool。如果无特别要求,仅创建组用户关联组资源池即可。

业务资源池属于某一个组资源池,所以业务用户在绑定业务资源池时,需要先指定一个组资源池,这个组资源池必须是已经被某个组用户绑定了的,创建出来的业务用户将会从属于这个组用户,然后再选择绑定这个组资源池下的某个业务资源池。

资源管理规划与流程

使用资源管理功能前,需要先根据业务模型完成租户资源的规划。业务运行一段时间后,可以根据资源的使用情况再进行配置调整。

假设某大型企业内的两个部门共用同一套数据库实例,GaussDB通过将同一个部门需要使用的系统资源集合划分为系统的一个租户,以此来实现不同部门间的资源隔离,其资源规划如下表所示。

表1 租户资源规划

租户名称

参数名称

取值样例

租户A

子class控制组

class_a

workload控制组

  • workload_a1
  • workload_a2

组资源池

resource_pool_a

业务资源池

  • resource_pool_a1
  • resource_pool_a2

组用户

tenant_a

业务用户

  • tenant_a1
  • tenant_a2

租户B

子class控制组

class_b

workload控制组

  • workload_b1
  • workload_b2

组资源池

resource_pool_b

业务资源池

  • resource_pool_b1
  • resource_pool_b2

组用户

tenant_b

业务用户

  • tenant_b1
  • tenant_b2
图3 资源管理流程

约束限制

  • 集中式版实例不支持资源管理特性。
  • 分布式版V2.0-8.200.0及以上版本支持资源管理特性。
  • 管控Agent版本24.1.32及以上版本支持资源管理特性。
 
posted on 2025-02-24 14:54  数据库笔记  阅读(13)  评论(0)    收藏  举报