Greenplum中的资源组

0    32    1

Tags:

👉 本文共约14873个字,系统预计阅读时间或需56分钟。

用户可以使用资源组在Greenplum数据库中设置和实施CPU,内存和并发事务限制。定义资源组后,可以将该组分配给一个或多个Greenplum数据库角色,或分配给外部组件(如PL /Container),以便控制这些角色或组件使用的资源。

当用户将资源组分配到角色(基于角色的资源组),用户定义该组的资源限制应用于所有的该组的所有角色。例如,对于一个资源组的内存限制标识了该组所有Greenplum数据库用户提交的运行事务的最大内存使用量。

同样,将资源组分配给外部组件时,组限制将应用于组件的所有正在运行的实例。 例如,如果为PL/Container外部组件创建资源组,则为组定义的内存限制将指定为其分配组的每个PL/Container运行时的所有正在运行的实例的最大内存使用量。

该章节包含以下小节

Parent topic: 管理资源

理解角色和组件资源组

Greenplum数据库支持两类型型的资源组:管理角色资源的组,以及管理外部组件(如PL/Container)资源的组。

资源组的最常见应用程序是管理不同角色可以在Greenplum数据库群集中并发执行的活动查询的数量。 用户还可以管理Greenplum为每个查询分配的CPU和内存资源量。

角色的资源组使用Linux控制组(cgroup)进行CPU资源管理。Greenplum数据库使用称为vmtracker的内存审计器在内部为这些资源组跟踪虚拟内存。

当用户执行查询时,Greenplum数据库会根据为资源组定义的一组限制来评估查询。如果尚未达到组的资源限制并且查询不会导致组超过并发事务限制,Greenplum数据库会立即执行查询。如果不满足这些条件,Greenplum数据库会对查询进行排队。例如,如果已达到资源组的最大并发事务数,则后续查询将排队,并且必须等待其他查询在运行之前完成。当资源组的并发和内存限制被更改为足够大的值时,Greenplum数据库也可以执行挂起的查询。

在角色的资源组中,事务以先进先出的方式进行评估。 Greenplum数据库定期评估系统的活动工作负载,根据需要重新分配资源和启动/排队作业。

用户还可以使用资源组来管理外部组件(如PL/Container)的CPU和内存资源。 外部组件的资源组使用Linux cgroup来管理组件的总CPU和总内存资源。

Note: Greenplum数据库的容器化部署(例如Greenplum for Kubernetes)可能会创建一组嵌套的cgroup,以管理主机系统资源。 嵌套cgroup会影响Greenplum数据库资源组对CPU百分比,CPU核心和内存的限制(Greenplum数据库外部组件除外)。 Greenplum数据库资源组系统资源限制基于父组的配额。

例如,Greenplum数据库在cgroup演示中运行,Greenplum Database cgroup嵌套在cgroup演示中。 如果cgroup演示配置CPU限制为系统CPU资源的60%且Greenplum数据库资源组CPU限制设置为90%,则主机系统CPU资源的Greenplum数据库限制为54%(0.6 x 0.9)。

嵌套的cgroup不会影响Greenplum数据库外部组件(如PL/Container)的内存限制。 仅当用于管理Greenplum数据库资源的cgroup未嵌套时,才能管理外部组件的内存限制,cgroup配置为顶级cgroup。

有关配置cgroup以供资源组使用的信息,请参阅使用资源组.

资源组的参数和限制

当用户创建一个资源组时,请注意以下几点:

  • 通过识别该组存储器是如何审核指定资源组的类型。
  • 提供一组限制,用于确定组可用的CPU和内存资源量。

资源组的参数和限制:

限制类型描述
MEMORY_AUDITOR用于资源组的内存审计器。 如果要将资源组分配给角色,则需要vmtracker缺省值)。 指定cgroup以将资源组分配给外部组件。
CONCURRENCY资源组中允许的最大并发事务数,包括活动和空闲事务。
CPU_RATE_LIMIT此资源组可用的CPU资源百分比。
CPUSET为该资源组保留的CPU核心数
MEMORY_LIMIT该资源组可用的内存资源百分比。
MEMORY_SHARED_QUOTA提交到该资源组的事务之间共享的内存资源百分比
MEMORY_SPILL_RATIO内存密集型事务的内存使用阈值。当事务达到此阈值时,它将溢出到磁盘。

Note: 不对SET,RESET和SHOW命令强制执行资源限制。

内存审计器

MEMORY_AUDITOR属性通过标识组的内存审计器来指定资源组的类型。 指定vmtrackerMEMORY_AUDITOR的资源组标识角色的资源组。 指定cgroupMEMORY_AUDITOR的资源组标识外部组件的资源组。

默认的MEMORY_AUDITOR是vmtracker。

用户为资源组指定的MEMORY_AUDITOR确定Greenplum数据库是否以及如何使用限制属性来管理CPU和内存资源:

限制类型角色资源组外部组件资源组
CONCURRENCY否;必须为零(0)。
CPU_RATE_LIMIT
CPUSET
MEMORY_LIMITYes
MEMORY_SHARED_QUOTA视组件决定
MEMORY_SPILL_RATIO视组件决定

事务并行限制

CONCURRENCY限制控制角色资源组允许的最大并发事务数。

Note: CONCURRENCY限制不适用于外部组件的资源组,对于此类组必须设置为零(0)。

角色的每个资源组在逻辑上被划分为等于CONCURRENCY限制的固定数量的槽。 Greenplum数据库为这些插槽分配相等,固定百分比的内存资源。

角色资源组的默认CONCURRENCY限制值为20。

Greenplum数据库将资源组达到CONCURRENCY限制后提交的任何事务排队。 当正在运行的事务完成时,如果存在足够的内存资源,Greenplum Database将排队并执行最早的排队事务。

用户可以设置服务器配置参数gp_resource_group_bypass来绕过资源组的并行限制。

CPU限制

通过将特定CPU核心分配给组,或通过标识要分配给组的分段CPU资源的百分比,可以配置要为段主机上的资源组保留的CPU资源份额。 Greenplum数据库使用CPUSET和CPU_RATE_LIMIT资源组限制来标识CPU资源分配模式。 配置资源组时,必须仅指定其中一个限制。

用户可以在Greenplum数据库群集中同时使用两种CPU资源分配模式。 用户还可以在运行时更改资源组的CPU资源分配模式。

gp_resource_group_cpu_limit服务器配置参数标识要分配给每个Greenplum数据库段主机上的资源组的系统CPU资源的最大百分比。 无论为组配置的CPU分配模式如何,此限制都将控制段主机上所有资源组的最大CPU使用率。 剩余的未预留CPU资源用于OS内核和Greenplum数据库辅助守护进程。 默认的gp_resource_group_cpu_limit值为.9(90%)。

Note: 如果用户在Greenplum数据库群集节点上运行其他工作负载,则默认的gp_resource_group_cpu_limit值可能不会留下足够的CPU资源,因此请务必相应地调整此服务器配置参数。

Warning: 避免将gp_resource_group_cpu_limit设置为高于.9的值。 这样做可能会导致高工作负载查询接近所有CPU资源,可能使Greenplum数据库辅助进程匮乏。

按核心数分配CPU资源

用户可以使用CPUSET属性标识要为资源组保留的CPU核心。 用户指定的CPU核心必须在系统中可用,并且不能与为其他资源组保留的任何CPU核心重叠。 (尽管Greenplum数据库使用用户专门为该组分配给资源组的核心,但请注意,系统中的非Greenplum进程也可以使用这些CPU核心。)

配置CPUSET时,请指定以逗号分隔的单核数字或数字间隔列表。必须将核心数字/间隔用单引号括起来,例如“1,3-4”。

将CPU核心分配给CPUSET组时,请考虑以下事项:

  • 使用CPUSET创建的资源组仅使用指定的核心。如果组中没有正在运行的查询,则保留的核心处于空闲状态,并且其他资源组中的查询无法使用这些核心。 请考虑最小化CPUSET组的数量以避免浪费系统CPU资源。
  • CPU核心0未分配:在以下情况下,CPU核心0用作回退机制:
    • admin_group和default_group至少需要一个CPU核心。 保留所有CPU内核后,Greenplum Database会将CPU内核0分配给这些默认组。 在这种情况下,用户为其分配CPU核心0的资源组与admin_group和default_group共享核心。
    • 如果通过一个节点替换重新启动Greenplum数据库集群,并且节点没有足够的内核来为所有CPUSET资源组提供服务,则会自动为这些组分配CPU核心0以避免系统启动失败。
  • 将核心分配给资源组时,请使用尽可能少的核心编号。 如果替换Greenplum数据库节点并且新节点的CPU核心数少于原始节点,或者备份数据库并希望在具有较少CPU核心的节点的群集上还原它,则操作可能会失败。 例如,如果用户的Greenplum数据库群集有16个核心,则分配核心1-7是最佳选择。 如果创建资源组并将CPU核心9分配给该组,则数据库还原到8核心节点将失败。

使用CPUSET配置的资源组在CPU资源上具有更高的优先级。 在段主机上配置了CPUSET的所有资源组的最大CPU资源使用百分比是保留的CPU核心数除以所有CPU核心数乘以100。

为资源组配置CPUSET时,Greenplum数据库会禁用组的CPU_RATE_LIMIT并将值设置为-1。

Note: 在为Greenplum数据库群集启用基于资源组的资源管理,必须为资源组配置CPUSET。

按百分比分配CPU资源

Greenplum数据库节点CPU百分比在Greenplum节点上的每个段之间平均分配。 使用CPU_RATE_LIMIT配置的每个资源组都保留用于资源管理的段CPU的指定百分比。

用户可以为资源组指定的最小CPU_RATE_LIMIT百分比为1,最大值为100。

在Greenplum数据库群集中定义的所有资源组指定的CPU_RATE_LIMIT的总和不得超过100。

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信db_bao,谢谢!
Greenplum中的资源组后续精彩内容已被小麦苗无情隐藏,请输入验证码解锁本站所有文章!
验证码:
请先关注本站微信公众号,然后回复“验证码”,获取验证码。在微信里搜索“DB宝”或者“www_xmmup_com”或者微信扫描右侧二维码都可以关注本站微信公众号。

标签:

Avatar photo

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复

嘿,我是小麦,需要帮助随时找我哦。
  • 18509239930
  • 个人微信

  • DB宝
  • 个人邮箱
  • 点击加入QQ群
  • 个人微店

  • 回到顶部