GBase 8a MPP Cluster 资源管理解析:资源池、多租户及负载管控机制
什么是资源管理器
GBase 8a MPP Cluster 资源管理功能可以对 SELECT 和 DML 等受控 SQL 在运行过程中使用的 CPU、内存、I/O 和磁盘空间等资源进行合理管控,以达到资源合理利用,系统稳定性运行的要求。
在没有资源管理的情况下,多用户多任务并发执行,资源消耗得不到有效调节,会出现任务间资源激烈争抢以及消耗过度等情况。在这样的场景下,SQL 的执行会变得缓慢并且不可预期,系统会因为资源使用过度而崩溃。因此需要对资源的使用进行管理调度,使得 SQL 任务能够高效快速的运行,系统能够更稳定。
资源管理关系层级详解
GBase 8a MPP Cluster 资源管理由 Consumer Group(资源消费组)、Resource Pool(资源池)、Resource Plan(资源计划)、Resource Directive(资源指令)、User(资源消费用户)组成。
消费者组:用户是通过消费者组来成批管理。
资源池:通过资源池配置,包含了静态和动态资源池。
资源计划:将不同的资源方案整合到一起,可以包含多个资源指令(消费者组和资源池的对照关系)。同一时刻只能由1个资源计划激活,。
资源指令:通过组合消费者组和资源池,形成对这个组用户的资源管理,并加入某个资源计划里。
GBase 8a MPP Cluster 资源管理关系图如下:

Consumer Group
多个用户的集合,consumer group 与 user 之间是一对多的关系。Default Consumer Group:数据库自动创建的资源消费组,未显式加入自定义资源消费组的用户,隶属于该组。Default Consumer Group 必须手动挂接一个动态资源池。
Resource Pool
若干系统资源的集合,分为 static resource pool(静态资源池)和 dynamic resource pool(动态资源池)。一个 static resource pool 中可以包含多个 dynamic resource pool,一个 dynamic resource pool 只能隶属于一个 staticresource pool。
Resource Plan
是描述 consumer group 和 resource pool 之间的关联关系的集合。在一个 resource plan 下,resource pool 和 consumer group 是一对多的关系,一个 resource pool 可以关联多个 consumer group。
Resource Directive
描述指定 resource plan 中 consumer group 与 resource pool之间的关联关系。default consumer group 与 resource pool 之间必须有关联关系。
资源调度核心流程时序
资源管理配置流程从创建用户自定义资源消费组开始,经权限校验后,将用户纳入消费组;同时依次创建静态资源池、动态资源池及资源计划,并通过资源指令分别将自定义消费组和缺省消费组与动态资源池完成关联,最后激活资源计划使配置生效。整体流程覆盖了"用户→消费组→资源池→计划→激活"的完整闭环。
资源管理流程图如下:

多维度资源管控策略矩阵
GBase 8a MPP Cluster 资源管理功能可以对 SELECT 和 DML 等受控 SQL 在运行过程中使用的 CPU、内存、I/O 和磁盘空间等资源进行合理管控,以达到资源合理利用,系统稳定性运行的要求。其中:
CPU
实现对受控 SQL 使用 CPU 优先级和百分比控制,以及 SQL 并发数及并行度的管理。
内存
实现对受控 SQL 使用的算子 buffer(large heap)内存使用上限的控制。
I/O
实现对受控 SQL 使用的 direct I/O 磁盘读写速率上限的控制。
磁盘空间
实现对表数据文件占用磁盘空间大小的管控。
资源管理实施要点与风险规避
环境要求:

配置要求:
· 集群所有节点必须安装 libcgroup 和 libcgroup-devel rpm 包。GBase 8a MPP Cluster 安装时会检查 rpm 包是否安装,如未安装,需要由用户手动安装 rpm包,否则不能使用资源管理功能。
· 资源管理启动之前确保 cgconfig 服务已启动。
磁盘空间管控仅对数据文件占用磁盘空间大小进行管控,索引文件不在管控范围内。
由于 RH6.x/SUSE11 等低版本的操作系统存在内核缺陷,可能会导致大负载的情况下,操作系统宕机。
资源全生命周期管理闭环
创建和管理 Consumer Group
不同 VC 中的 group_name 允许重名。
集群安装完成后,存在一个默认资源消费组 default_consumer_group,该消费组的 id=1。
任何计划内 default_consumer_group 必须关联动态资源池。
用户所属消费者组配置
同一 vc 下,consumer group 与 user 之间是一对多的关系,即一个 consumer group 中可以包含多个 user,一个 user 只能隶属于一个 consumer group。
管理 Resource Pool
资源池为集群任务执行过程中的资源供给者与管理者,分为静态资源池与动态资源池两种,静态资源池为资源供给者,而动态资源池为资源管理者,约束任务对资源的使用。
资源计划Resource Plan
Resource Plan(资源计划)为按照一定规律规划集群中资源使用的方案,在资源计划中将资源消费组挂接到合理的资源池中,以保证更有效地利用集群资源。
资源指令Resource Directive
Resource Directive(资源指令)指定在资源计划中资源消费组与动态资源池的挂接关系。
激活资源管理
同一 VC 下,同一时段只能有一个 plan 被激活;
在任何 resource plan 中,default consumer group 必须与动态池关联,才可以激活该resource plan。
总结与运维建议
GBase 8a 的资源管理功能具备以下特点:
灵活的资源控制能力:支持物理资源隔离和逻辑资源隔离两种方式,可组合使用提供更灵活的资源控制能力
多维度资源限制:支持CPU、内存、磁盘空间、I/O、并发数等多种资源维度的限制和分配
优先级管理:支持任务优先级设置,保障关键业务资源需求
多业务场景支持:适用于多业务混合负载、批量加工与即席查询隔离、用户资源配额控制等场景
总而言之,GBase 8a 的资源管理功能是一个灵活、高效、多维度的系统资源控制工具,能够帮助企业在多业务共享数据库集群的场景下,保障各业务的稳定运行,最大化系统资源利用率。