Greenplum 5.2增加了一个全新的资源管理特性 — 资源组 (resource group)。 这一特性提高了Greenplum的稳定性和可管理性,提供了一个更好的资源隔离方式以支撑多租户和混合负载的复杂业务场景。
https://greenplum.cn/wp-content/uploads/2019/04/gp_resource_group_zhs.mp4
它管理着整个集群的CPU、内存资源,将这些资源分配到不同的资源组,确保每个组可以获得预期的资源。
资源组的CPU特性基于Linux内核的cgroups,具备良好的CPU资源隔离能力,也允许一个组中的查询可以超额使用其他组没有使用的空闲CPU资源。
每个组分配的内存资源是一个严格限制,包含固定和共享两部分,确保组内运行的每个查询都至少获得固定的内存部分。如果还需要更多内存,将自动申请使用可用的共享部分。
资源组提供了事务级别的并发度管理,这与原有的资源队列(resource queue)提供的语句级别的并发度管理完全不同,可以避免多个事务因为相互等待并发许可槽位与数据库对象而导致不必要的死锁。
这张图显示了两个资源组的CPU使用情况,在下方的资源组没有查询时,上方的资源组可以自动使用更多的CPU资源,而当下方的资源组有查询运行时,上方的资源组将自动减少CPU使用。
这张图显示了短查询在不同系统负载情况下的延迟,可以看到,借助资源组,即使在系统CPU使用率和其他组CPU占用率很高的情况下,短查询的延迟依然保持相对稳定。
在5.2之后的版本,又持续增加了多个新功能,例如按CPU核分配的cpuset和全局共享内存,更多信息,请参考Greenplum官方文档http://gpdb.docs.pivotal.io/,搜索resource group