转自:[https://bbs.huaweicloud.com/blogs/247849](https://bbs.huaweicloud.com/blogs/247849) # 一、使用gs_cgroup工具配置控制组 ## 1.1 配置逻辑集群资源配额 配置标准报告的多租户控制组,父租户80%cpu配额(线下8.0版本只能用整个集群80% )、自主分析控制组 class2:analyze 50%cpu(根据需求调整)配额,标准报告控制组class1:standard 50%cpu。 - 命令 ```bash gs_ssh -c “gs_cgroup -c -N LC_B” ``` - 创建class控制组 ```bash gs_ssh -c "gs_cgroup -c -S findm_b_tenant -N LC_B " ``` - 创建workload用户组 ```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配额 ```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" ``` - 查看配置文件中控制组信息 ```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 ``` 命令示例: ```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 ``` 集群配置: ```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% (先建父租户资源池(角色绑定),后建业务租户资源池) ```sql CREATE RESOURCE POOL findm_b_pool WITH (CONTROL_GROUP="tenant", NODEGROUP="LC_B",MEM_PERCENT=100); ``` 2.创建业务租户,内存占父租户内存50%,复杂作业并发10。 ```sql CREATE RESOURCE POOL findm_stand_child WITH (CONTROL_GROUP="tenant:workload_standard", NODEGROUP="LC_B",MEM_PERCENT=50,ACTIVE_STATEMENTS=10); ``` 自主分析的设置成50%,复杂作业并发10。 ```sql CREATE RESOURCE POOL findm_analyze_child WITH (CONTROL_GROUP="b_tenant:workload_analyze", NODEGROUP="LC_B",MEM_PERCENT=50,ACTIVE_STATEMENTS=10); ``` 示例: ![img](../../../../../ff_internal_upload/img/2021/1615563538489008197.png) ## 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](../../../../../ff_internal_upload/img/2021/1615563558851042442.png) ## 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](../../../../../ff_internal_upload/img/2021/1615563618723082946.png) gs\_cgroup –h 可以查看帮助 ![img](../../../../../ff_internal_upload/img/2021/1615563628554007816.png) 错误处理 需要重新挂载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 ```