Gauss资源负载管理(资源池、控制组)
【摘要】 管理模式介绍资源管理通过用户绑定Resource Pool管理,其中内存、连接、并发、IO都是通过参数直接设置是限额模式并且不支持超分,CPU通过Cgroup控制,可以是配额或者限额两种模式1.模式1:共享配额,CPU满负载竞争时,按照配额比例进行CPU抢占2.模式2:专属限额,通过–fixed参数时,会固定CPU核数。markdown mermaid流程图画法N:1N:1参数参数参数Us...
管理模式介绍
资源管理通过用户绑定Resource Pool管理,其中内存、连接、并发、IO都是通过参数直接设置,并且限额模式,不支持超分,CPU通过Cgroup控制,可以是配额或者限额两种模式,统一层级的百分比配置不能超过100%
1.模式1:共享配额,CPU满负载竞争时,按照配额比例进行CPU抢占
2.模式2:专属限额,通过–fixed参数时,会固定CPU核数。
官网:GaussDB(DWS)资源负载管理
详解GaussDB(DWS)的CPU资源隔离管控能力
markdown mermaid流程图画法
Cgroup下分Class Cgroup以及Workload Cgroup,正常应该使用Workload Cgroup绑定到资源池
相关SQL
创建资源池、User绑定资源池
create resource pool resource_pool_1 with(
control_group='class_test:wl_test1',
max_dynamic_memory='1GB',
max_shared_memory='1GB',
io_limits=0,
io_priority="High",
max_connections=-1,
max_concurrency=-1);
create user xxx WITH PASSWORD 'xxx' RESOURCE POOL '{poolname}' USER GROUP '{groupname}' ;
alter user xxx resource pool '{poolname}';
Cgroup CPU使用情况
select * from gs_wlm_respool_cpu_info() order by respool_name;--查看cpu实时使用状态
select * from gs_wlm_cgroup_info order by cgroup_name,priority;--重点看下,实时的CPU使用情况 来源:pg_stat_get_cgroup_info()
select * from gs_all_control_group_info order by decode(classgid,0,gid,classgid),gid ;--获取系统中所有控制组的配置信息,主要是看层次结构和CPU分配情况 来源:gs_all_control_group_info()
select rolname ,
(select t.shares from gs_all_control_group_info t where t.name=split_part(c.control_group,':',1) and classgid=0) class_shares ,
(select t.shares from gs_all_control_group_info t where t.class=split_part(c.control_group,':',1) and workload=split_part(c.control_group,':',2)) workload_shares
,c.*from pg_authid a,gs_wlm_respool_cpu_info() c where rolrespool=respool_name
and respool_name<>'default_pool'
and exists(select 1 from pg_stat_activity where usename=rolname and state<>'idle') order by control_group,rolname;
多用户间,使用的resource pool、 cgroup 、绑定cpu、使用率
select rolname ,now(),(select array_agg(a) from (select query_start a from pg_stat_activity where usename=rolname and state<>'idle' order by query_start)) as run_time,
(select t.shares from gs_all_control_group_info t where t.name=split_part(c.control_group,':',1) and classgid=0) class_shares ,
(select t.shares from gs_all_control_group_info t where t.class=split_part(c.control_group,':',1) and workload=split_part(c.control_group,':',2)) workload_shares
,c.*from pg_authid a,gs_wlm_respool_cpu_info() c where rolrespool=respool_name
and respool_name<>'default_pool'
and exists(select 1 from pg_stat_activity where usename=rolname and state<>'idle') order by control_group,rolname;
User、Resource Pool 查看用户以及资源池信息
select oid,* from pg_resource_pool;--查看当前数据库实例中所有的资源池信息
select * from gs_control_group_info('resource_pool_2');---查看某个资源池关联的控制组信息
select rolname ,rolrespool ,*from pg_authid where rolrespool like 'resource_pool%' or rolname = 'rolename';;--查看资源池被哪个用户绑定,底层表
select * from pg_user where respool like '%';---查看某一用户所绑定的资源池、存储空间(perm、temp、spill)限制 *******-;
select * from gs_wlm_user_info;--•重点看下
查看资源池连接、动态内存、静态内存、IO使用信息
select * from dbe_perf.wlm_user_resource_runtime;--不是实时的???
select * from pg_total_user_resource_info;--_total_user_resource_info视图显示所有用户的资源使用情况,需要使用管理员用户进行查询 下一层是通过函数 gs_wlm_get_all_user_resource_info,函数是通过gs_wlm_user_resource_info()
select * from gs_wlm_user_resource_info('test_2c')
select * from gs_wlm_respool_connection_info() order by respool_name;--查看连接使用情况
select * from gs_wlm_respool_memory_info() order by respool_name;--查看内存使用状态
select * from gs_wlm_respool_io_info() order by respool_name;--查看IO使用 状态
select * from gs_wlm_user_space_info() order by user_name;--查询用户的存储空间资源限额和资源使用情
线程池状态
select * from threadpool_status() ;
select * from dbe_perf.global_threadpool_status;
select * from dbe_perf.local_threadpool_status;
select * from pg_resource_pool;
select * from pg_os_threads where pid=139657859786496;
select * from pg_thread_wait_status where tid=139657859786496;
【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)