FAIRYFAR-INTERNAL
 
  FAIRYFAR-INTERNAL  |  SITEMAP  |  ABOUT-ME  |  HOME  
GaussDB A(DWS)多租户资源管理配置实例

转自:https://bbs.huaweicloud.com/blogs/247849

一、使用gs_cgroup工具配置控制组

1.1 配置逻辑集群资源配额

配置标准报告的多租户控制组,父租户80%cpu配额(线下8.0版本只能用整个集群80% )、自主分析控制组 class2:analyze 50%cpu(根据需求调整)配额,标准报告控制组class1:standard 50%cpu。

  • 命令
snippet.bash
gs_ssh -c “gs_cgroup -c -N LC_B”
  • 创建class控制组
snippet.bash
gs_ssh -c "gs_cgroup -c -S findm_b_tenant -N LC_B "
  • 创建workload用户组
snippet.bash
gs_ssh -c " gs_cgroup -c -S findm_b_tenant -N LC_B -G workload_standard –g 50"
gs_ssh -c " gs_cgroup -c -S findm_b_tenant -N LC_B -G workload_analyze  -g 50" 
gs_ssh -c " gs_cgroup -u -S findm_b_tenant -N LC_B -G workload_standard –g 50"
gs_cgroup -u -S class1 -G grp1 -g 30
  • 修改CPU配额
snippet.bash
gs_cgroup -u -S ${Class控制组名称} -N ${逻辑集群名称} -G ${Workload控制组名称} -g ${CPU配额}
gs_ssh -c “gs_cgroup -c -N LC_B –S FINDM_B_TENANT -s 40 -G wg1 -g 20”
gs_ssh -c " gs_cgroup -u -S findm_b_tenant -N LC_B -G workload_analyze –g 50"
  • 查看配置文件中控制组信息
snippet.bash
gs_cgroup –p –N LC_B
select * from gs_all_control_group_info;

1.2 配置逻辑集群资源限额

增加CPU 限额 配置

gs_cgroup -u -S ${Class控制组名称} -N ${逻辑集群名称} -G ${Workload控制组名称} -g ${CPU限额} –fixed

命令示例:

snippet.bash
gs_cgroup -u -S findm_b_tenant -N LC_B -G workload_analyze -g 50 –fixed
gs_cgroup --fixed -u -S class1 -G grp1 -g 30

集群配置:

snippet.bash
gs_ssh -c "gs_cgroup -u -S findm_b_tenant -N LC_B -G workload_analyze -g 50 --fixed"
gs_ssh -c "gs_cgroup -u -S findm_b_tenant -N LC_B -G workload_standard -g 50 --fixed"

更新配额

/* gs_ssh -c "gs_cgroup -u -T findm_b_tenant -N LC_B  -G workload_analyze –t 50 --fixed" */

二、多租户配置

2.1配置多租户

1.创建父租户,内存占集群内存100% (先建父租户资源池(角色绑定),后建业务租户资源池)

snippet.sql
CREATE RESOURCE POOL findm_b_pool WITH (CONTROL_GROUP="tenant", NODEGROUP="LC_B",MEM_PERCENT=100);

2.创建业务租户,内存占父租户内存50%,复杂作业并发10。

snippet.sql
CREATE RESOURCE POOL findm_stand_child WITH (CONTROL_GROUP="tenant:workload_standard", 
NODEGROUP="LC_B",MEM_PERCENT=50,ACTIVE_STATEMENTS=10);

自主分析的设置成50%,复杂作业并发10。

snippet.sql
CREATE RESOURCE POOL findm_analyze_child WITH (CONTROL_GROUP="b_tenant:workload_analyze", 
NODEGROUP="LC_B",MEM_PERCENT=50,ACTIVE_STATEMENTS=10);

示例:

img

2.2用户关联多租户(关联业务用户)

1.创建角色关联父租户(必须,所有业务用户都关联到该角色)

CREATE ROLE stand RESOURCE POOL '_pool'
NODE GROUP "LC_B" NOLOGIN PASSWORD DISABLE;

2.创建用户关联业务租户

CREATE USER {分析用户} PASSWORD 'xxxxx' RESOURCE POOL 'standard_pool' NODE GROUP "LC_B" USER GROUP 'stand';

3.将已存在用户关联业务租户

ALTER USER {分析用户} RESOURCE POOL 'analyze_child' NODE GROUP "LC_B" USER GROUP 'stand';

示例:

ALTER USER qtest RESOURCE POOL 'stand_child' NODE GROUP "LC_B" USER GROUP 'stand';
ALTER USER distest RESOURCE POOL 'analyze_child' NODE GROUP "LC_B" USER GROUP 'stand';

三、GaussDB 异常规则

3.1异常规则清单

img

3.2配置异常规则

序号 作用 规则名称 配置命令
—- ——— ————– ————————————————————
1 CPU倾斜率 cpuskewpercent gs_ssh -c "gs_cgroup -N LC_B -S findm_b_tenant -G workload_analyze -E "cpuskewpercent=50,qualificationtime=3200" -a "
2 执行时间 elapsetime gs_ssh -c "gs_cgroup -N LC_B -S findm_b_tenant -G workload_analyze -E "elapsedtime=2400" -a "
3 阻塞时间 blocktime gs_ssh -c "gs_cgroup -N LC_B -S findm_b_tenant -G workload_analyze -E "blocktime=1200" -a "
4 落盘空间 spillsize gs_ssh -c "gs_cgroup -N LC_B -S findm_b_tenant -G workload_analyze -E "spillsize=10240" -a "

四、GaussDB单作业限制

query_max_mem 是执行作业所能够使用的最大内存,如果设置的query_max_mem值大于0,当作业执行时所使用内存超过该值时,将报错退出。

1.整个集群设置内存限制作为缺省值(如非标报告):

gs_guc reload -Z coordinator -Z datanode -N all -I all -c "query_max_mem=value"

2.标准报告 通过 set query_max_mem=0不限制

gs_cgroup –P 查看当前节点资源池挂载情况

img

gs_cgroup –h 可以查看帮助

img

错误处理

需要重新挂载cgroup

卸载cgroup

sudo /opt/huawei/Bigdata/mppdb/core/bin/gs_cgroup -U omm –d

装载cgroup

gs_cgroup -U omm -H /opt/huawei/Bigdata/mppdb/core –c


打赏作者以资鼓励: