GaussDB(DWS)负载管理核心技术解密三: 工作负载管理测试分析
工作负载管理测试
该文章从产品的易用性,功能性 ,可测试等几个维度对dws工作负载管理,aws redshift WLM,FIM 多租户进行测试分析比对。
DWS负载管理测试
1.首先在该页面创建一个集群:
2.选中该集群选择工作负载管理:
3.选择添加工作负载管理队列,该页面可以设置队列的cpu,内存,存储空间,作业的并发数:
4.关联用户之后就可以使用该用户去运行作业:
注释:创建队列以及关联用户的后台实现为如下,此处不需要人工干预。
添加工作负载管理队列的后台的操作是创建一个组,创建对应的资源池,组用户,对应队列计算资源的设置是在资源池上,存储资源的设置落在组用户上,之后该队列的关联用户即为组用户的子用户:
例:队列资源配置为:CPU配额20%,内存30%,存储空间102400M,查询并发10,队列名称:queue1
a.) gs_ssh -c “gs_cgroup -c -S s_queue1 -s 20” //创建class控制组
b.) create resource pool s_ queue1 with (control_group='s_queue1', active_statements=-1,mem_percent=30); //创建组资源池
c.) create role s_queue1 resource pool 's_queue1' password disable perm space '102400'; //创建组用户
d.) gs_ssh -c “gs_cgroup -c -S s_queue1 -G queue1 -g 99” //创建workload控制组,100%继承class控制组的资源
e.) create resource pool queue1 with (control_group='s_queue1:queue1', active_statements=10,mem_percent=100); //创建业务资源池
5.前台页面可以显示作业的运行情况,显示的是运行作业的个数比较清晰:
6.短查询加速:dws短查询配置默认支持短查询可以优先并且内存不受资源池管控,而且可以控制短查询并发个数,该特性保留接口后续会把该特性优化做到短查询内存受资源池内存管控;
查询配置:
查询概览:
后台统计:
注释:此处是短查询加速可以看到对应的用户没有内存占用也就是这里我们短查询加速的时候目前不占用资源池内存。
FIM多租户测试
1.需要创建一个父租户,之后再创建一个子租户:
2.添加子租户:
Aws redshift工作负载管理测试
1.添加一个队列,并且只能设置内存跟并发:
注释:redshift WLM 根据用户组和查询组向队列分配查询,所以需要自己手动创建用户组,查询组并手动将相应的组关联到队列,比较麻烦。
2.作业运行查询概览,对应的不是作业个数:
3.短查询加速:aws的短查询设置之后内存不受管控,不在队列之内需要预留内存资源,通过预测时间来控制短查询的下发,控制很容易不精确,而且不能控制短查询个数;
select * from STV_WLM_SERVICE_CLASS_CONFIG
测试总结:
通过以上测试分析得到以下结论:
1.dws的工作负载管理作业并发数没有限制,队列只要cpu,内存不超过上限值就可以,下发作业更灵活,而且作业查询概览统计的即为作业个数,查询结果更清晰;aws redshift WLM 最多 8 个队列,每个队列可配置最高 50 的并发级别,所有用户定义的队列(不包括超级用户队列)的最高并发级别总数为 50,导致作业下发个数受限,而且查询个数跟作业个数不一致导致查询结果不够清晰;
2.dws的设置不需要重启集群既可以生效;aws的设置需要重启集群;
3.dws的工作负载管理平均统计时间是5S,误差小 ;aws的异常处理规则是10S 统计一次,导致异常处理误差大;
4.cpu的管控:dws的工作负载队列就能设置,比较容易;aws 的管控需要另外设置异常处理规则比较麻烦;
5.磁盘空间的管控:dws的磁盘空间管控工作负载队列即可设置;aws的只能管控临时下盘空间并且需要设置异常处理规则;
6.dws的短查询加速更灵活多样多种选择,可以选择短查询内存走资源池也可以选择不走资源池,而且可以控制短查询的并发个数;aws的短查询加速只是不走资队列,没有个数的管控,只是通过预测时间来限制是否走短查询加速,不够精确;
7.dws的负载管理页面可以查到用户正在使用的内存大小跟用户的使用空间大小;aws的没有这样细致的统计页面;
8.易用性:dws工作负载队列更容易设置;
综上所述dws的工作负载管理易用性,功能性都是比较好的,而且该模块易于维护更能满足用户进行合理的资源限制,使在可接受的执行时间范围内使用一定的资源执行这些复杂查询,同时划分出部分资源给那些查询消耗没那么大的用户,这样在部分用户执行复杂作业的同时,另一部分用户的作业也不会受到太大影响。
- 点赞
- 收藏
- 关注作者
评论(0)