首页 > 其他分享 >cgroup、资源池、用户的关系..涉及到GaussDB(DWS)的资源设置

cgroup、资源池、用户的关系..涉及到GaussDB(DWS)的资源设置

时间:2024-03-29 14:44:37浏览次数:22  
标签:DWS postgres .. gsql GaussDB respool job user pool

本文分享自华为云社区《GaussDB(DWS)的cgroup、资源池、用户的关系》,作者: nullptr_。

1. 前言

本文主要展示了DWS中cgroup、资源池、用户之间的关系,从而对DWS的资源设置情况有个初步了解。

2. 相关对象创建脚本

gs_ssh -c "gs_cgroup -cS ClassN1 -G wn1"
gs_ssh -c "gs_cgroup -cS ClassN1 -G wn2"
gs_ssh -c "gs_cgroup -cS ClassN2 -G wn3"
gs_ssh -c "gs_cgroup -cS ClassG1 -G wg1_1"
gs_ssh -c "gs_cgroup -cS ClassG1 -G wg1_2"
gs_ssh -c "gs_cgroup -cS ClassG2 -G wg2_1"
gs_ssh -c "gs_cgroup -cS ClassG2 -G wg2_2"

#创建资源池
gsql -d postgres -p 6000 -c  "create resource pool respool_1 with (control_group = 'ClassN1:wn1');"
gsql -d postgres -p 6000 -c  "create resource pool respool_2 with (control_group = 'ClassN1:wn2');"
gsql -d postgres -p 6000 -c  "create resource pool respool_3 with (control_group = 'ClassN2:wn3');"
gsql -d postgres -p 6000 -c  "create resource pool respool_4 with (control_group = 'ClassN2:wn3');"
gsql -d postgres -p 6000 -c  "create resource pool respool_grp_1 with (control_group = 'ClassG1');"
gsql -d postgres -p 6000 -c  "create resource pool respool_g1_job_1 with (control_group = 'ClassG1:wg1_1');"
gsql -d postgres -p 6000 -c  "create resource pool respool_g1_job_2 with (control_group = 'ClassG1:wg1_2');"
gsql -d postgres -p 6000 -c  "create resource pool respool_grp_2 with (control_group = 'ClassG2');"
gsql -d postgres -p 6000 -c  "create resource pool respool_g2_job_1 with (control_group = 'ClassG2:wg2_1');"
gsql -d postgres -p 6000 -c  "create resource pool respool_g2_job_2 with (control_group = 'ClassG2:wg2_2');"

#创建租户,创建用户
gsql -d postgres -p 6000 -c  "CREATE USER user_1 RESOURCE POOL 'respool_1' PASSWORD 'Gauss_ab1' ;"
gsql -d postgres -p 6000 -c  "CREATE USER user_2 RESOURCE POOL 'respool_2' PASSWORD 'Gauss_ab1' ;"
gsql -d postgres -p 6000 -c  "CREATE USER user_3 RESOURCE POOL 'respool_3' PASSWORD 'Gauss_ab1' ;"
gsql -d postgres -p 6000 -c  "CREATE USER user_4 PASSWORD 'Gauss_ab1' ;"
gsql -d postgres -p 6000 -c  "CREATE USER user_5 PASSWORD 'Gauss_ab1' ;"
gsql -d postgres -p 6000 -c  "CREATE USER user_grp_1 RESOURCE POOL 'respool_grp_1' PASSWORD 'Gauss_ab1' ;"
gsql -d postgres -p 6000 -c  "CREATE USER user_g1_job_1 RESOURCE POOL 'respool_g1_job_1' USER GROUP 'user_grp_1' PASSWORD 'Gauss_ab1' ;"
gsql -d postgres -p 6000 -c  "CREATE USER user_g1_job_2 RESOURCE POOL 'respool_g1_job_2' USER GROUP 'user_grp_1' PASSWORD 'Gauss_ab1' ;"
gsql -d postgres -p 6000 -c  "CREATE USER user_grp_2 RESOURCE POOL 'respool_grp_2' PASSWORD 'Gauss_ab1' ;"
gsql -d postgres -p 6000 -c  "CREATE USER user_g2_job_1 RESOURCE POOL 'respool_g2_job_1' USER GROUP 'user_grp_2' PASSWORD 'Gauss_ab1' ;"
gsql -d postgres -p 6000 -c  "CREATE USER user_g2_job_2 RESOURCE POOL 'respool_g2_job_2' USER GROUP 'user_grp_2' PASSWORD 'Gauss_ab1' ;"
gsql -d postgres -p 6000 -c  "CREATE USER user_grp_3 RESOURCE POOL 'respool_grp_1' PASSWORD 'Gauss_ab1' ;"

3. cgroup

GaussDB(DWS)资源负载管理的核心是资源池,而配置资源池首先要在环境中实现控制组Cgroups的设置。
Class控制组为数据库业务运行所在的顶层控制组,集群部署时会自动生成默认子Class控制组“DefaultClass”。DefaultClass的Medium控制组会含有系统触发的作业在运行,该控制组不允许进行资源修改,且运行在该控制组上的作业不受资源管理的控制,所以推荐创建新的子Class及其Workload控制组来设置资源比例。

3.1 运行脚本之后cgroup分布情况如下

per910mas@xx:~> gs_cgroup -p

Top Group information is listed:
GID:   0 Type: Top    Percent(%): 1000( 50) Name: Root                  Cores: 0-103
GID:   1 Type: Top    Percent(%):  833( 83) Name: Gaussdb:per910mas     Cores: 0-103
GID:   2 Type: Top    Percent(%):  333( 40) Name: Backend               Cores: 0-103
GID:   3 Type: Top    Percent(%):  499( 60) Name: Class                 Cores: 0-103

Backend Group information is listed:
GID:   4 Type: BAKWD  Name: DefaultBackend   TopGID:   2 Percent(%): 266(80) Cores: 0-103
GID:   5 Type: BAKWD  Name: Vacuum           TopGID:   2 Percent(%):  66(20) Cores: 0-103

Class Group information is listed:
GID:  20 Type: CLASS  Name: DefaultClass     TopGID:   3 Percent(%):  99(20) MaxLevel: 1 RemPCT: 100 Cores: 0-103
GID:  21 Type: CLASS  Name: ClassN1          TopGID:   3 Percent(%):  99(20) MaxLevel: 3 RemPCT:  60 Cores: 0-103
GID:  22 Type: CLASS  Name: ClassN2          TopGID:   3 Percent(%):  99(20) MaxLevel: 2 RemPCT:  80 Cores: 0-103
GID:  23 Type: CLASS  Name: ClassG1          TopGID:   3 Percent(%):  99(20) MaxLevel: 3 RemPCT:  60 Cores: 0-103
GID:  24 Type: CLASS  Name: ClassG2          TopGID:   3 Percent(%):  99(20) MaxLevel: 3 RemPCT:  60 Cores: 0-103

Workload Group information is listed:
GID:  86 Type: DEFWD  Name: wn1:2            ClsGID:  21 Percent(%):  19(20) WDLevel:  2 Cores: 0-103
GID:  87 Type: DEFWD  Name: wn2:3            ClsGID:  21 Percent(%):  19(20) WDLevel:  3 Cores: 0-103
GID:  89 Type: DEFWD  Name: wn3:2            ClsGID:  22 Percent(%):  19(20) WDLevel:  2 Cores: 0-103
GID:  91 Type: DEFWD  Name: wg1_1:2          ClsGID:  23 Percent(%):  19(20) WDLevel:  2 Cores: 0-103
GID:  92 Type: DEFWD  Name: wg1_2:3          ClsGID:  23 Percent(%):  19(20) WDLevel:  3 Cores: 0-103
GID:  94 Type: DEFWD  Name: wg2_1:2          ClsGID:  24 Percent(%):  19(20) WDLevel:  2 Cores: 0-103
GID:  95 Type: DEFWD  Name: wg2_2:3          ClsGID:  24 Percent(%):  19(20) WDLevel:  3 Cores: 0-103

CM Group information is listed:

Timeshare Group information is listed:
GID: 724 Type: TSWD   Name: Low              Rate: 1
GID: 725 Type: TSWD   Name: Medium           Rate: 2
GID: 726 Type: TSWD   Name: High             Rate: 4
GID: 727 Type: TSWD   Name: Rush             Rate: 8

系统资源限制分为配额限额。默认情况下为配额

  • 配额:配额是一种比较灵活的控制方式,例如wn1:2的配额为20%,在正常情况下组内资源使用可以超过20%,如果在资源繁忙的情况下(使用率为100%)则资源严格按照配额的大小进行限制
  • 限额:限额则直接限制CPU使用的核数的范围。
  • 配额&限额:则在CPU核数范围内限制配额比例

4. 资源池

4.1 资源池分布情况如下

postgres=# select oid,* from pg_resource_pool;
    oid     |   respool_name   | mem_percent | cpu_affinity |    control_group    | active_statements | max_dop | memory_limit |  parentid  | io_limits | io_priority |  nodegroup   | is_foreign | short_acc | except_rule | weight
------------+------------------+-------------+--------------+---------------------+-------------------+---------+--------------+------------+-----------+-------------+--------------+------------+-----------+-------------+--------
         10 | default_pool     |           0 |           -1 | DefaultClass:Medium |                -1 |      -1 | default      |          0 |         0 | None        | installation | f          | t         | None        |     -1
 2147585814 | respool_1        |           0 |           -1 | ClassN1:wn1         |                10 |      -1 | default      |          0 |         0 | None        | installation | f          | t         | None        |     -1
 2147585815 | respool_2        |           0 |           -1 | ClassN1:wn2         |                10 |      -1 | default      |          0 |         0 | None        | installation | f          | t         | None        |     -1
 2147585816 | respool_3        |           0 |           -1 | ClassN2:wn3         |                10 |      -1 | default      |          0 |         0 | None        | installation | f          | t         | None        |     -1
 2147585817 | respool_grp_1    |          20 |           -1 | ClassG1             |                10 |      -1 | default      |          0 |         0 | None        | installation | f          | t         | None        |     -1
 2147585818 | respool_g1_job_1 |          20 |           -1 | ClassG1:wg1_1       |                10 |      -1 | default      | 2147585817 |         0 | None        | installation | f          | t         | None        |     -1
 2147585819 | respool_g1_job_2 |          20 |           -1 | ClassG1:wg1_2       |                10 |      -1 | default      | 2147585817 |         0 | None        | installation | f          | t         | None        |     -1
 2147585820 | respool_grp_2    |          20 |           -1 | ClassG2             |                10 |      -1 | default      |          0 |         0 | None        | installation | f          | t         | None        |     -1
 2147585821 | respool_g2_job_1 |          20 |           -1 | ClassG2:wg2_1       |                10 |      -1 | default      | 2147585820 |         0 | None        | installation | f          | t         | None        |     -1
 2147585822 | respool_g2_job_2 |          20 |           -1 | ClassG2:wg2_2       |                10 |      -1 | default      | 2147585820 |         0 | None        | installation | f          | t         | None        |     -1
 2147586195 | respool_4        |           0 |           -1 | ClassN2:wn3         |                10 |      -1 | default      |          0 |         0 | None        | installation | f          | t         | None        |     -1
(11 rows)

4.1.1 组资源池限制

per910mas@xx:~> gsql -d postgres -p 6000 -c  "create resource pool respool_grp_3 with (control_group = 'ClassG1');"
ERROR:  resource pool with control_group ClassG1 has been existed in the two-layer resource pool list

4.1.2 业务资源池

资源池的内存资源计算mem_percent需要按照层级进行比例计算

4.1.3 默认资源池

如果开启了资源管理功能,则系统会默认创建一个资源池default_pool。当一个会话或者用户没有指定关联的资源池时,都会被默认关联到default_pool。default_pool默认绑定DefaultClass:Medium控制组,同时并发和内存默认不管控,default_pool支持参数修改,但关联default_pool的作业会受到max_active_statements全局并发限制。当管理员执行运维操作不需要进行管控时,需要在执行SQL前执行SET session_respool=‘root’;将资源池切换至运维队列,此时作业将不受控。

5. 用户

5.1 用户分布情况

postgres=# select * from pg_user;、
    usename    |  usesysid  | usecreatedb | usesuper | usecatupd | userepl |  passwd  | valbegin | valuntil |     respool      |   parent   | spacelimit | useconfig | nodegroup | tempspacelimit | spillspacelimit
---------------+------------+-------------+----------+-----------+---------+----------+----------+----------+------------------+------------+------------+-----------+-----------+----------------+-----------------
 per910mas     |         10 | t           | t        | t         | t       | ******** |          |          | default_pool     |          0 |            |           |           |                |
 u1            | 2147558961 | f           | f        | f         | f       | ******** |          |          | default_pool     |          0 |            |           |           |                |
 user_1        | 2147585823 | f           | f        | f         | f       | ******** |          |          | respool_1        |          0 |            |           |           |                |
 user_2        | 2147585827 | f           | f        | f         | f       | ******** |          |          | respool_2        |          0 |            |           |           |                |
 user_3        | 2147585831 | f           | f        | f         | f       | ******** |          |          | respool_3        |          0 |            |           |           |                |
 user_4        | 2147585835 | f           | f        | f         | f       | ******** |          |          | default_pool     |          0 |            |           |           |                |
 user_5        | 2147585839 | f           | f        | f         | f       | ******** |          |          | default_pool     |          0 |            |           |           |                |
 user_grp_1    | 2147585843 | f           | f        | f         | f       | ******** |          |          | respool_grp_1    |          0 |            |           |           |                |
 user_g1_job_1 | 2147585847 | f           | f        | f         | f       | ******** |          |          | respool_g1_job_1 | 2147585843 |            |           |           |                |
 user_g1_job_2 | 2147585851 | f           | f        | f         | f       | ******** |          |          | respool_g1_job_2 | 2147585843 |            |           |           |                |
 user_grp_2    | 2147585855 | f           | f        | f         | f       | ******** |          |          | respool_grp_2    |          0 |            |           |           |                |
 user_g2_job_1 | 2147585859 | f           | f        | f         | f       | ******** |          |          | respool_g2_job_1 | 2147585855 |            |           |           |                |
 user_g2_job_2 | 2147585863 | f           | f        | f         | f       | ******** |          |          | respool_g2_job_2 | 2147585855 |            |           |           |                |
 user_grp_3    | 2147586254 | f           | f        | f         | f       | ******** |          |          | respool_grp_1    |          0 |            |           |           |                |
(14 rows)

5.1.2 多租户场景

  • 业务用户共享组用户的资源,组用户共享其所在资源池的资源。
  • 业务用户必须挂在到组用户下,且层级必须与资源池层级一一对应

 

点击关注,第一时间了解华为云新鲜技术~

 

标签:DWS,postgres,..,gsql,GaussDB,respool,job,user,pool
From: https://www.cnblogs.com/huaweiyun/p/18103818

相关文章

  • AIGC、3D模型、轻量化、格式转换、可视化、数字孪生引擎...
    老子云3D可视化快速开发平台,集云压缩、云烘焙、云存储云展示于一体,使3D模型资源自动输出至移动端PC端、Web端,能在多设备、全平台进行展示和交互,是全球领先、自主可控的自动化3D云引擎。平台架构平台特性基于HTML5和WebGL技术,可在主流浏览器上进行快速浏览和调试,支持P......
  • 求 1 - 1/2 + 1/3 - 1/4 + 1/5 -... + 1/99 - 1/100
    通过分析,可以发现:分子不变分母++符号———》分母是偶数就为负,分母为奇数则为加号累加//1-1/2+1/3-1/4+...+1/99-1/100=?#include<stdio.h>intmain(){doublesum=1.0;for(inti=2;i<101;i++){//i即分母if(i%2==0){//......
  • Java案例:考试奖励(利用if..else if实现)
    目录1:题目2:分析3:代码展示1:题目小明快期末考试了,小明爸爸对他说,会根据他不同的考试成绩,送他不同的礼物,假如你可以控制小明的得分,请用程序实现小明到底该获得什么样的礼物,并在控制台输出。2:分析1.键盘录入考试成绩2.由于奖励种类比较多.属于多......
  • C/C++ 语言中的 ​if...else if...else 语句
    C/C++语言中的​if...elseif...else语句1.`if`statement2.`if...else`statement3.`if...elseif...else`statementReferences1.ifstatementThesyntaxoftheifstatementis:if(condition){//bodyofifstatement}Thecodeins......
  • MySQL各类查询语句DQL--like in between...and
    数据库名称可以为【schoolDB】,字符集【utf8】,排列规则【utf8_general_ci】建立表CREATETABLE`student`(`id`int(11)NOTNULLAUTO_INCREMENTCOMMENT'学号',`createDate`datetimeDEFAULTNULL,`userName`varchar(20)DEFAULTNULL,`pwd`varchar(36)DE......
  • C语言例4-29:计算1+2+...+100之和(利用do-while语句实现)。
    代码如下://计算1+2+...+100之和(利用do-while语句实现)。#include<stdio.h>intmain(void){ intn=1,sum=0; do { sum=sum+n; n++; }while(n<=100); printf("sum=%d\n",sum); return0;}结果如下:说明:本例中do-while循环和while循环完成相同的功能。但是,当......
  • 网络安全2024年为什么如此吃香?事实原来是这样....
    前言由于我国网络安全起步晚,所以现在网络安全工程师十分紧缺。俗话说:‘‘没有网络安全就没有国家安全’’为什么选择网络安全?十四五发展规划建议明确提出建设网络强国,全面加强网络安全保障体系和能力建设,加强网络文明建设,发展积极健康的网络文化。这是国家从战略高度把......
  • PanTools v1.0.17 多网盘批量管理 批量分享、转存、复制...
    软件介绍一款针对多个热门网盘的文件管理、批量分享、批量转存、批量复制、批量重命名、批量链接检测、跨账号移动文件、多账号文件搜索等,支持不同网盘的不同账号的资源文件操作。适用于网站站长、资源爱好者等,对于管理名下具有多个网盘多个账号具有实用的效果。支持:百度......
  • 【VMware ESXi】HP Z4G4 Workstation安装ESXi停留在Shutting down firmware services.
    家里有台HPZ4G4Workstation工作站,底层安装运行了VMware的ESXiHypervisor,作为Homelab的Allinone环境。之前安装ESXi8的时候有个问题,在启动ESXi安装阶段,一直停留在“Shuttingdownfirmwareservices...”这个地方。我知道可能大多数人遇到的问题都是如下报错,解决方法也是......
  • element 文本域设置 隐藏边框,禁止缩放,自动换行...
    1.隐藏边框:deep(.el-textarea__inner){box-shadow:0000px;}:deep(.el-textarea__inner:hover){box-shadow:0000px;}:deep(.el-textarea__inner:focus){box-shadow:0000px;} 2.禁止缩放resize="none"3.自动换行 autosizeminRows:5......