首页 > 数据库 > > 优先级控制-CPU优先级
通过负载管理(队列控制)设置了全局和局部并发控制之后,当执行的并发任务数超过该设置的并发数之后,新的任务会进入到等待队列中。队列按照先进先出的原则排队执行。
资源负载管理开启模式下等待队列的机制如图1所示:
并发受限制类型 | 调度执行机制 |
|---|---|
对于受全局并发数限制的任务 |
|
对于受局部并发数限制的任务 |
|
说明:对于受全局并发数量限制的任务,在CN等待队列中,静态并发控制情况下,任务进入资源池的顺序由执行该任务的用户所绑定的资源池的优先级决定;动态负载管理情况下,任务进入资源池的顺序按照先进先出原则。值得注意的是,在动态负载管理情况下,中心协调节点(CCN)上等待的队列,任务进入资源池的顺序由执行该任务的用户所绑定的资源池的优先级决定。
gs_ssh -c "gs_cgroup -u -S class_a -s 10"说明:
调整资源池的优先级可以通过调整资源池绑定的控制组资源比例来实现。当资源池绑定的控制组的资源比例发生变化,则其对应的优先级也会同步变化。
ALTER USER tenant_a1 WITH RESOURCE POOL 'resource_pool_b1';说明:
postgres=# set cgroup_name="class_a:workload_a2";或
set session_respool="resource_pool_a2";说明:
调整当前会话的优先级可以通过调整当前会话关联的控制组或资源池来实现。
SELECT * FROM pg_session_wlmstat where status = 'pending';调整任务在CN队列中的位置,将该任务调整到CN队列的最前端。
SELECT pg_wlm_jump_queue(threadid);作业执行中,把作业的优先级调整到class_a:workload_a2。通过视图pg_session_wlmstat查询到作业的threadid。
SELECT gs_wlm_switch_cgroup(threadid, 'class_a:workload_a2');说明:
如果语句优先级较低或者长时间被阻塞需要尽快执行,可以使用插队操作,只有管理员才有权限对正在执行的任务调整优先级。
gs_cgroup -pClass Group information is listed:
GID: 20 Type: CLASS Name: DefaultClass TopGID: 3 Percent(%): 124(20) MaxLevel: 1 RemPCT: 100 Cores: 0-3
GID: 21 Type: CLASS Name: class_a TopGID: 3 Percent(%): 249(40) MaxLevel: 3 RemPCT: 20 Cores: 0-3
使用gsql连接数据库。执行如下命令
SELECT rolrespool FROM PG_AUTHID WHERE rolname = 'rolename';
rolrespool
--------------
default_pool
(1 row)
SHOW CGROUP_NAME;查看当前会话绑定的资源池:
SHOW SESSION_RESPOOL;
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69959250/viewspace-3163697/ ,如需转载,请注明出处,否则将追究法律责任。