- 总内存= 256GB
-
交换空间(Swap) = 64GB
-
4 个主机,每个主机 8 个主 实例 和 8 个镜像
-
发生故障时每个主机的最大活跃主实例 数量为 11
资源组
当数据库启用了基于资源组的资源管理系统时,一个主机上可用的内存由系统配置的内存和Swap空间,以及vm.overcommit_ratio的系统参数设置决定:
total_node_usable_memory = RAM * (vm.overcommit_ratio / 100) + Swap
= 256GB * (50/100) + 64GB
= 192GB
假设默认的gp_resource_group_memory_limit数值(.7),示例中的数据库分配到的内存大小就是:
total_gp_memory = total_node_usable_memory * gp_resource_group_memory_limit
= 192GB * .7
= 134.4GB
在
数据库的
主机上的一个实例
可用的内存由主机上为
预留的内存和主机上活跃的主实例
数量组成,在集群启动时:
gp_seg_memory = total_gp_memory / number_of_active_primary_segments
= 134.4GB / 8
= 16.8GB
注意,当三个镜像切换为主实例时,每个实例的内存仍然是16.8GB,主机使用的总内存大小预计为:
total_gp_memory_with_primaries = 16.8GB * 11 = 184.8GB
资源队列
在启用了基于资源队列的资源管理系统下的示例数据库中,vm.overcommit_ratio的计算遵循以下方程式:
gp_vmem_rq = ((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_rq)) / RAM
= (256 - (0.026 * 176)) / 256
= .982
在启用了基于资源队列的资源管理系统下的数据库中,gp_vmem_protect_limit
的计算方式如下:
gp_vmem_protect_limit = gp_vmem_rq / maximum_acting_primary_segments
= 176 / 11
= 16GB
= 16384MB
可以将示例系统中的gp_vmem_protect_limit服务器配置参数数值设置为16384。