26 资源队列工作负载管理

26  资源队列工作负载管理

使用Greenplum的工作负载管理的优先次序,并根据业务需求分配资源来查询,并防止查询时资源不可用开始。

本节将介绍Greenplum数据引擎的工作负载管理,并说明如何使用资源队列管理资源。使用资源的队列中,可用的存储器和CPU资源可以被分配给不同类型的的Greenplum的系统上执行查询。可以限制并发查询的数量,所使用的内存来执行查询的数量,并专门用于处理查询的CPU的相对量。

主资源管理问题是可以同时执行的查询的数量和存储器分配给每个查询量。在不限制的并发性和存储器的使用情况,它是不可能保证可接受的性能。存储器是最有可能限制该系统的处理能力的资源。因此,我们首先Greenplum数据引擎的内存使用情况的概述。

26.1     在Greenplum的内存使用情况的概述

存储器为Greenplum的系统,并有效地使用时,能够确保高的性能和吞吐量的关键资源。本主题介绍段主内存是如何细分,并提供给管理员配置内存的选项之间进行分配。

一个Greenplum数据段的主机运行多个PostgreSQL的情况下,所有的共享主机的内存。段具有相同的结构和它们消耗的内存,CPU和磁盘IO同时相似量的,在并行查询工作时。

为了获得最佳的查询吞吐量,内存配置必须慎重处理。有在Greenplum数据每一个级别的内存配置选择,从操作系统参数,管理工作负载资源队列,要设置分配给单个查询的内存量。

段主机内存

On a Greenplum segment host, the available hostmemory is shared among all the processes executing on the computer, includingthe operating system, Greenplum segment instances, and other applicationprocesses. Administrators must determine what Greenplum and non-Greenplumprocesses share the hosts' memory and configure the system to use the memoryefficiently. It is equally important to monitor memory usage regularly todetect any changes in the way host memory is consumed by Greenplum or otherprocesses.

The following figure illustrates how memory isconsumed on a Greenplum segment host.

 

在Greenplum的一个段主机上,可用的主机内存被计算机上执行的所有过程,包括操作系统,Greenplum的段的情况下,与其他应用程序进程之间共享。管理员必须确定的Greenplum和非Greenplum的进程共享主机的内存和系统配置,以有效地利用内存。监视内存使用情况定期检测的方式的主机存储器的任何变化由Greenplum的或其它工艺消耗是同样重要的。

下图显示了内存是如何细分Greenplum的主机上的消耗。


在说明的底部开始,线标记为A表示总主机内存。该生产线正上方线A的总主机内存包括物理RAM和交换空间。

标记为B线显示,可用内存总量必须由Greenplum的数据库和主机上的所有其他进程共享。非Greenplum数据过程包括操作系统和任何其他应用程序,例如系统监控代理。某些应用程序可能使用的存储器的显著部分和,作为结果,则可能需要调整每Greenplum的主机或每段内存量段的数量。

该段(C)各获得Greenplum的数据库内存(B)的一个相等的份额。

在一个领域,资源管理队列内存是如何分配给执行SQL语句。资源队列,让你在你的Greenplum系统业务需求转换执行政策并防范可能降低性能的查询。

提交的非管理用户到一个Greenplum的系统中的每个语句与一个资源队列相关联。队列确定是否该语句将被允许执行,并且当资源可用时,允许其执行。该声明可能会被拒绝,立即执行,或者排队时资源可用来执行。

可以创建用于不同类型的查询资源队列和保留段存储器的一个固定部分,用于每个队列。另外,您也可以设置服务器配置参数指定多少内存分配为每个查询,并把没有最大内存限制对资源的队列中。

查询优化器生成一个查询执行计划,包括一系列被称为operators(图中标记为D)的任务的。operators执行诸如表扫描或联接,并通常产生通过处​​理输入的行的一个或多个组中间查询结果。operators收到的资源队列分配给查询内存的份额。如果operators不能履行其所有在分配给它的内存的工作,它在溢出文件磁盘缓存数据。

配置段主机内存选项

主机内存是由段主机上的所有应用程序共享的内存总量。主机存储器的量可以使用以下任何方法来配置:

•添加更多的RAM为节点,以增加物理内存。

•分配的交换空间来增加虚拟内存的大小。

•设置内核参数vm.overcommit_memory和vm.overcommit_ratio配置操作系统如何处理大的内存分配请求。

物理RAM和操作系统配置通常是由平台团队和系统管理员进行管理。参考Greenplum数据引擎安装指南(Greenplum Database Installation Guide)推荐的内核参数设置。

 

保留用于操作系统和其他进程的内存大小和工作量相关度很大。操作系统的最小内存推荐为32GB,但如果有很多并发,保留内存需要提高到64GB。操作系统存储器的最大用户是SLAB,其随着Greenplum并发和使用的socket数量的增长而增长。

vm.overcommit_meniory内核参数应该始终设置为2,对Greenplum数据的唯一安全值。

在VM.overcommit_ratio内核参数设置用于为应用程序进程的RAM的百分比,为操作系统保留剩余部分。红帽默认值是50(50%)。设置此参数过高,可能导致操作系统内存不足,这会导致段主机故障或数据库故障。使用默认的50%设置一般是安全的,但非常保守。设定值太低会降低在同一时间运行的并发量和查询的复杂度。当增加vm.overcommit_ratio记得要始终保留一些存储器操作系统的活动是重要的。

要计算vm.overcommit_ratio一个安全值,首先要确定可用于Greenplum的数据库进程的总内存,叫gp_vmem,利用如下公式计算:

gp_vmem =((SWAP + RAM) - (7.5GB + 0.05 * RAM)) / 1.7

其中SWAP是在主机上的交换空间,单位是GB,RAM是安装在主机上的RAM的大小,单位是GB。使用这个公式来计算vm.overcommit_ratio值:

vm.overcommit_ratio= (RAM - 0.026 * gp_vmem) / RAM

例如,SWAP是32GB,RAM是64GB,则gp_vmem =  ((32 + 64) - (7.5 +0.05 * 64)) / 1.7=50.1764705882353

vm.overcommit_ratio= (RAM - 0.026 * gp_vmem) / RAM =(64 – 0.026*50.1764705882353) /64 =0.979615809

 

 

Configuring Greenplum Database Memory

Greenplum的数据库内存是内存提供给所有Greenplum数据段实例的数量。

当您设置了Greenplum的集群,确定主要的段数为每台主机和内存来分配每个段的量运行。取决于CPU核心,物理RAM量,和工作负荷的特性上,段的数量通常为4到8之间的值。启用段镜像后,确定为一个故障期间在主机上执行的主段的最大数目分配内存是重要的。例如,如果使用默认的分组镜像配置,一个段主机发生故障,会使得其镜像的段主机的活跃主段进程的数量翻倍。采用分散是的段镜像配置,使得一个段主机的镜像段扩散到多个主机上,会大大降低每个段主机上运行的主段,允许更多的内存分配给每个区段。例如,如果你使用块镜像配置,每块4的主机和每个主机上8个段,一台主机故障将导致其他主机块有最多为11个活跃的主段,相比16默认分组镜像配置。

该gp_vmem_protect_limit值是内存来分配每个段的数量。它是通过计算对于所有Greenplum数据过程中可用的内存和一个故障期间由主段的最大数目除以估计。如果gp_vmem_protect_limit设置过高,查询可能会失败。

使用下面的公式来计算gp_vmem_protect_limit一个安全值。

计算gp_vmem,所有Greenplum的数据库进程的可用内存,使用如下公式:

gp_vmem = ((SWAP +RAM) - (7.5GB + 0.05 * RAM)) / 1.7

其中SWAP是在主机上的交换空间,单位是GB,RAM是安装在主机上的RAM的大小,单位是GB。

计算gp_vmem_protect_limit使用这个公式:

gp_vmem_protect_limit = gp_vmem /max_acting_primary_segments

这里max_acting_primary_segments是主链段,可以是最大数量

在主机上运行时,射镜段由于主机或段故障激活。

另一个重要的Greenplum数据库服务器配置参数是statement_mem。此参数设置的最大内存量分配给执行查询。要确定这个值

参数,划分的每段(gp_vmem_protect_limit)内存量,少了10%的安全余量,由您希​​望并发执行查询的最大数量。默认Greenplum数据资源队列最多允许20个并发查询。这里有一个公式来计算statement_mem:

(gp_vmem_protect_limit * 0.9)/ max_expected_concurrent_queries

资源队列可以分配给查询的内存量的控制。请参阅配置工作负载管理的详细信息。

26.2      Overview of Managing Workloads with Resource Queues

资源队列是在Greenplum的系统管理并发度的主要工具。资源队列是你与创建资源队列SQL语句创建数据库对象。您可以使用它们来管理,可能会同时执行活动查询的数量,每种类型的查询被分配的内存量和查询的相对优先级。资源队列,还可以防止将消耗太多资源,并降低系统的整体性能查询。

每个数据库角色与一个单一的资源队列相关联;多个角色可以共享相同的资源队列。角色分配给使用创建角色或ALTER ROLE语句的资源队列短语资源队列。如果未指定资源队列,作用与所述默认资源队列,pg_defau

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值