Greenplum-内存配置概述

注:本文翻译自https://docs.vmware.com/en/VMware-Greenplum/7/greenplum-database/admin_guide-wlmgmt_intro.html

内存是Greenplum数据库系统的关键资源,如果使用得当,可以确保高性能和吞吐量。介绍段主机内存如何在段之间分配,以及管理员配置内存的选项。

一个Greenplum数据库段主机运行多个PostgreSQL实例,所有实例共享主机的内存。这些段具有相同的配置,并且在并行处理查询时同时消耗相似数量的内存、CPU和磁盘IO。

为了获得最佳查询吞吐量,应该仔细管理内存配置。在Greenplum Database的每个级别上都有内存配置选项,从操作系统参数到使用资源队列和资源组管理资源,再到设置分配给单个查询的内存量。

Segment主机内存概述

在Greenplum数据库段主机上,可用的主机内存在计算机上运行的所有进程之间共享,包括操作系统、Greenplum数据库段实例和其他应用程序进程。管理员必须确定哪些Greenplum Database进程和非Greenplum Database进程共享主机的内存,并配置系统以有效地使用内存。定期监视内存使用情况以检测Greenplum Database或其他进程使用主机内存的方式的任何变化也同样重要。

下图说明了当基于资源队列的资源管理处于活动状态时,如何在Greenplum Database段主机上消耗内存。
在这里插入图片描述

从图的底部开始,标记为A的线表示主机总内存。直线A上方的一行显示了主机总内存包括物理RAM和交换空间。

标记为B的行显示了可用的总内存必须由Greenplum Database和主机上的所有其他进程共享。非greenplum Database进程包括操作系统和任何其他应用程序,例如系统监视代理。有些应用程序可能会使用大量内存,因此,您可能必须调整每个Greenplum数据库主机的段数量或每个段的内存量。

标记为C的行上的每个段获得Greenplum数据库内存的相等份额。

在一个段中,当前活动的资源管理方案(资源队列或资源组)管理如何分配内存以运行SQL语句。这些构造允许您将业务需求转换为Greenplum数据库系统中的执行策略,并防止可能降低性能的查询。有关资源组和资源队列的概述,请参见管理资源。

配置Segment主机内存

主机内存是段主机上所有应用程序共享的总内存。您可以通过以下方式配置主机内存量:

  • 向节点添加更多RAM以增加物理内存。
  • 分配交换空间以增加虚拟内存的大小。
  • 调整内核参数vm.overcommit_ratio配置操作系统如何处理大内存分配请求。

物理RAM和操作系统配置通常由平台团队和系统管理员管理。请参见《Greenplum数据库安装指南》获取推荐的内核参数以及如何设置/etc/sysctl.conf文件参数。

为操作系统和其他进程保留的内存量取决于工作负载。操作系统内存的最小推荐值是32GB,但是如果在Greenplum Database中有很多并发性,则可能需要将预留内存增加到64GB。操作系统内存的最大用户是SLAB,它随着Greenplum数据库并发性和使用的套接字数量的增加而增加。

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

vm.overcommit_ratio内核参数设置用于应用程序进程的RAM的百分比,其余部分为操作系统保留。Red Hat的默认值是50(50%)。设置过高可能导致操作系统内存预留不足,导致段主机故障或数据库故障。将默认设置设置为50通常是安全的,但有些保守。将该值设置得过低,会减少Greenplum Database可用的内存量,从而降低可以同时运行的查询的并发量和复杂性。增加虚拟机时。Overcommit_ratio,重要的是要记住始终为操作系统活动保留一些内存。

计算vm.overcommit_ratio的安全值,首先确定Greenplum数据库进程可用的总内存gp_vmem。
如果总系统内存<256GB:

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

如果总系统内存>=256GB:

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

其中“SWAP”为主机的交换空间,单位为GB;“RAM”为主机安装的内存的GB数。

使用gp_vmem计算虚拟机。Overcommit_ratio值:

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

配置数据库内存

Greenplum Database Memory是所有Greenplum数据库段实例可用的内存量。

在设置Greenplum Database集群时,需要确定每台主机上运行的主段数量以及为每个段分配的内存量。根据CPU内核、物理RAM数量和工作负载特征,段的数量通常在4到8之间。启用段镜像后,在故障期间为主机上运行的主段的最大数量分配内存是很重要的。例如,如果使用默认的分组镜像配置,则段主机故障会使具有故障主机镜像的主机上的主节点数量增加一倍。将每个主机的镜像分散到多个其他主机上的镜像配置可以降低最大值,从而允许为每个段分配更多内存。例如,如果使用块镜像配置,每个块有4个主机,每个主机有8个主段,则单个主机故障将导致块中的其他主机最多有11个活动主,而默认分组镜像配置为16个。

gp_vmem_protect_limit服务器配置参数值标识要分配给每个段的内存量。这个值是通过计算所有Greenplum Database进程可用的内存并除以故障期间主段的最大数量来估计的。如果gp_vmem_protect_limit设置得太高,查询可能会失败。使用下面的公式计算gp_vmem_protect_limit的安全值,使用前面计算的gp_vmem值。

gp_vmem_protect_limit = gp_vmem / max_acting_primary_segments

其中,max_acting_primary_segments是由于主机或段故障而激活镜像段时,主机上可以运行的主段的最大数量。
资源队列和资源组公开额外的配置参数,使您能够进一步控制和优化为查询分配的内存量。

配置示例

Greenplum数据库系统的资源队列和资源组的内存计算示例,其规格如下:

  • 总内存= 256GB
  • Swap = 64GB
  • 每台主机8个主段和8个镜像段,以4台主机为块
  • 故障期间每个主机的最大主实例数为11

这个示例系统的Overcommit_ratio计算如下:

gp_vmem = ((SWAP + RAM)(7.5GB + 0.05 * RAM)) / 1.7
        = ((64 + 256) - (7.5 + 0.05 * 256)) / 1.7
        = 176
vm.overcommit_ratio = (RAM - (0.026 * gp_vmem)) / RAM
                    = (256 - (0.026 * 176)) / 256
                    = .982

你可以设置vm。示例系统的Overcommit_ratio为98。

gp_vmem_protect_limit的计算如下:

gp_vmem_protect_limit = gp_vmem / maximum_acting_primary_segments
                      = 176 / 11
                      = 16GB
                      = 16384MB

您可以将示例系统上的gp_vmem_protect_limit服务器配置参数设置为16384。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数据源的港湾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值