资源管理
GBase 8a MPP Cluster集群所面临的集群规模、数据量、SQL复杂度越来越大,虽
然通过加强数据的合理分布、集群查询计划的合理调度、硬件资源的扩展等手段解
决一部分资源(CPU、NET、MEMORY、DISK IO等)瓶颈问题,但依然面临如下
挑战:
1.系统资源不受控情况下,所有SQL执行都会抢占资源,这样会造成系统的不
稳定;
2.系统资源被一条低优先级的SQL大量占用,导致高优先级SQL无法按时完成;
3.复杂SQL在集群中往往会分多步执行,在并发情况下,同一SQL的任务会受
资源限制,无法保证在所有节点间同步完成。
配置原则
资源管理要解决的问题是:
1.系统资源能够按照策略分配使用;
2.任务的执行要有优先级管理;
3.复杂(多步)任务在集群中要有统一的管理策略(包括:资源分配、优先级、
执行顺序等)。
集群相关命令
1.用户优先级设定
l 语法

priority_value的取值范围为0,1,2,3对应最小优先级,低优先级、中优先
级和高优先级,缺省为中优先级2。
l 权限要求
有grant权限的用户,推荐用户:root
l 示例:

2.用户资源组设定
l 语法

group_value的取值范围为0-15,0组为缺省组。
l 权限要求
有grant权限的用户,推荐用户:root。
l 示例

3.查询并行度设定
l 语法

max_cpus_used_value的取值范围为大于0的整数,该参数决定查询的并行度,
推荐值为用户所在资源组的可用CPU数目。
l 权限要求
有grant权限的用户,推荐用户:root。
l 示例

4.用户优先级与任务调度配重设定
l 语法

l 示例
weight_value取值按高、中、低、最小划分,具体范围如下:
高:80 - 100
中:60 - 80
低:40 - 60
最小:20 - 40
l 权限要求
有set权限用户

l 使用上述语句配重值不会持久化,即gnode重新启动后会丢失。
要是需要持久化则需要在执行该语句之前先执行
set gbase_global_variable_persistent = 1
执行该语句后执行
set gbase_global_variable_persistent = 0
l 配重参数可控制cpu.shares与blkio.weight参数,具体可参考下表:
表:参数说明

5.显示优先级状态
l 语法

l 显示
Ønode_name:集群节点名称。
Øgroup:资源组编号。
Øpriority:优先级编号。
Øpriority_weight:优先级配重。
Østatus:优先级开启状态ON/OFF。
Ødescription:优先级控制参数描述。
l 权限要求
有show权限用户。
l 示例
第一步 需要配置cgconfig.conf文件。在配置文件中为资源组0、1进行设置。
第二步 启动cgconfig服务。
第三步 重启gcware,# gcluster_service gcware restart。
完成以上配置操作后,再执行下面示例的命令,0、1两个控制组的优先级将
为开启状态。
示例
l 示例1:查看集群全部节点优先级状态。

l 示例2:查看node1节点的优先级状态信息。

l 示例3:查看状态为ON的优先级信息。


l 示例4:关闭node1节点cgroup配置服务(service cgconfig stop)。


l 示例5:重新开启node1的cgroup配置服务(service cgconfig start)。



6.配置优先级队列相关参数
通过在gcluster(/opt/gcluster/config/gbase_8a_gcluster.cnf)与gnode(/opt/gnode/co
nfig/gbase_8a_gbase.cnf)的配置文件中修改下面几个参数值来完成优先级队列
的配置:
lgbase_use_priority_queue:参数设置为0,表示关闭优先级队列;设置为1,
表示开启优先级队列;
l_gbase_priority_total_tasks:参数表示最大并行运行查询任务数目,包括
DML的查询部分,本参数最大值不能超过128,缺省为本地CPU核数2倍;
l_gbase_priority_tasks:参数表示每个优先级队列可容纳最大任务数目(即
可参加调度的数目),未能进入队列任务将阻塞等待,本参数最大值不能超
过64,缺省为本地CPU核数;
lgbase_use_res_ctrl_group:本参数决定是不是启用资源控制组挂接。参数
设置为0,表示不开启资源控制组挂接,缺省设置为不开启状态;设置其
他值为开启资源控制组挂接。
7.指定查询SQL优先级
资源组用户Session可 根 据 具 体 情 况 , 通 过 使 用hint (格式为
/*+PRIORITY(‗priority_value‘)*/),决定该SQL运行级别(即对应的优先级),
本命令只限于查询SQL。
l 语法

l 权限要求
有create,insert,drop,select 权限的用户。

优先级设定只能小于或等于该用户优先级别,设置错误会恢复到用户优先级,并报出警告
―can not upgrade to priority X‖(X是执行用户的优先级)。
l 示例

