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

OushuDB 管理指南之资源管理

原创 丁冉 2021-12-16
456


1、资源管理配置

用户可以通过以下两个参数(hawq-site.xml中)配置资源管理器可以分配的资源数量。

  • hawq_rm_memory_limit_perseg: 配置每个节点可以使用的内存大小,缺省值为64GB

  • hawq_rm_nvcore_limit_perseg: 配置每个节点可以使用的vcore数,缺省值为16

如果我们有8个slave节点,配置如下,则我们在这个OushuDB集群中可以使用的资源数为:128GB * 8 = 1024GB内存,16 * 8 = 128 vcore。

<property><name>hawq_rm_memory_limit_perseg</name><value>128GB</value></property><property><name>hawq_rm_nvcore_limit_perseg</name><value>16</value></property>

在资源队列树中,只有叶子节点可以关联用户接受查询。儿子节点的资源是从父节点中分配出来的。其中一个父节点的所有儿子节点的MEMORY_LIMIT_CLUSTER和 CORE_LIMIT_CLUSTER比例值之和必须小于等于100%。


2、资源队列高级配置

通常情况下,创建资源队列时用户只需要指定下面三个参数:

  • ACTIVE_STATEMENTS:资源队列允许的最大并发查询数,超过这个并发的连接则会排队等待。资源管理器会均匀分配资源到队列中并发的查询。

  • MEMORY_LIMIT_CLUSTER:资源队列可以使用的父队列内存的比例

  • CORE_LIMIT_CLUSTER:资源队列可以使用的父队列CPU的比例

但在某些情况下用户可以指定一些高级参数来配置资源管理队列。

3、设置Virtual Segment内存使用


VSEG_RESOURCE_QUOTA指的是一个virtual segment中使用的内存数量。默认值是256MB。比如一个资源管理队列可以使用的资源是8GB,如果VSEG_RESOURCE_QUOTA为256MB,则这个资源管理队列可以分配的最大virtual segment数为8GB/256MB = 32个。如果我们使用512MB,则最多可以分配8GB/512MB = 16个。

VSEG_RESOURCE_QUOTA=‘mem:{128mb | 256mb | 512mb | 1024mb | 2048mb | 4096mb | 8192mb | 16384mb | 1gb | 2gb | 4gb | 8gb | 16gb}’


使用大的VSEG_RESOURCE_QUOTA有时可以避免聚集,连接等操作的spilling,因为每个segment可以使用更多的内存。

如果发现有些语句频繁出现spilling,可以适当调大VSEG_RESOURCE_QUOTA。

例如:

CREATE RESOURCE QUEUE adhoc2 WITH (PARENT='department3', ACTIVE_STATEMENTS=3,MEMORY_LIMIT_CLUSTER=50%, CORE_LIMIT_CLUSTER=50%, VSEG_RESOURCE_QUOTA='mem:512MB');

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

评论