暂无图片
暂无图片
2
暂无图片
暂无图片
暂无图片

GBase8a性能优化——优先级(一)

VV_刺头王 2022-09-16
1906


GBase 8a MPP Cluster集群面临的挑战:

1.         系统资源不受控情况下,所有SQL执行都会抢占资源,这样会造成系统的不稳定;

2.         系统资源被一条低优先级的SQL大量占用,导致紧急SQL无法按时完成;

3.         复杂SQL在集群中往往会分多步执行,在并发情况下,同一SQL的任务会受资源限制,无法保证在所有节点间同步完成。

所以资源管理要解决的问题:

1.         系统资源能够按照策略分配使用;

2.         任务的执行要有优先级管理;

3.         复杂(多步)任务在集群中要有统一的管理策略(包括:资源分配、优先级、执行顺序等)。


优先级相关命令

1.         用户优先级设定

语法:

grant usage on *.* to user_name with task_priority priority_value

priority_value的取值范围为0,1,2,3对应最小优先级,低优先级、中优先级和高优先级,缺省为中优先级2。

  权限要求:

有grant权限的用户,推荐用户: root

  示例:

gbase> create user uer1 ;

Query OK, 0 rows affected

 

gbase> grant usage on *.* to  uer1  with task_priority  1;

Query OK, 0 rows affected

 

gbase> select task_priority from user where user='user1';

+---------------+

| task_priority |

+---------------+

|             1 |

+---------------+

1 row in set


2.         用户资源组设定

    语法:

grant usage on *.* to user_name with resource_group group_value

group_value的取值范围为0-15,0组为缺省组。

   权限要求:

有grant权限的用户,推荐用户: root

   示例:

gbase> create user user0 identified by 'user0';

Query OK, 0 rows affected

 

gbase> grant usage on *.* to user0 with resource_group 0;

Query OK, 0 rows affected

 

gbase> select resource_group from user where user='user0';

+----------------+

| resource_group |

+----------------+

|              0 |

+----------------+

1 row in set


3.         查询并行度设定

   语法:

grant usage on *.* to user_name with max_cpus_used max_cpus_used_value

max_cpus_used_value的取值范围为大于0的整数,该参数决定查询的并行度,推荐值为用户所在资源组的可用CPU数目。

  权限要求:

有grant权限的用户,推荐用户: root

  示例:

gbase> use gbase;

Query OK, 0 rows affected

 

gbase> create user user1;

Query OK, 0 rows affected

 

gbase> grant usage on *.* to  user1  with max_cpus_used  4;

Query OK, 0 rows affected

 

gbase> select max_cpus from user where user='user1';

+----------+

| max_cpus |

+----------+

|        4 |

+----------+

1 row in set


4.         用户优先级与任务调度配重设定

   语法

Set  gcluster  global  gbase_high_priority_weight = weight_value(80-100)

Set  gcluster  global  gbase_mid_priority_weight = weight_value (60-80)

Set  gcluster  global  gbase_low_priority_weight = weight_value (40-60)

Set  gcluster  global  gbase_min_priority_weight = weight_value (20-40)

   weight_value 取值按高、中、低、最小划分,具体范围如下:

高: 80 – 100

中: 60 - 80

低: 40 - 60

最小:20 - 40

  权限要求

有set权限用户

  示例

gbase> Set  gcluster  global  gbase_min_priority_weight = 20;

Query OK, 0 rows affected, 32 warnings (Elapsed: 00:00:00.01)

 

gbase> show variables like '%gbase_min_priority_weight%';

+---------------------------+-------+

| Variable_name             | Value |

+---------------------------+-------+

| gbase_min_priority_weight | 20    |

+---------------------------+-------+

1 row in set (Elapsed: 00:00:00.00)

   说明

使用上述语句配重值不会持久化,即gnode重新启动后会丢失。

要是需要持久化,则需要在执行该语句之前先执行:

set  gbase_global_variable_persistent = 1

执行该语句后执行:

set  gbase_global_variable_persistent = 0

配重参数可控制cpu.shares 与blkio.weight参数。

  具体可参考

参数

CGroup最小值

CGroup最大值

CGroup缺省值

集群

最小值

集群

最大值

集群比重计算

cpu.shares

1

1024

1

2560

(2560 * weight) / 100

Blkio.weight

1

1000

300

1

1000

(1000 * weight) / 100

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论