更新时间:2022-12-19 GMT+08:00

负载管理

功能描述

负载管理主要通过业务的并发控制实现系统计算资源的均衡,避免业务间出现资源争抢,实现作业的和谐共处,达到资源利用最优,同时通过引入cgroup技术实现了cpu的配额管理和限额管理。

技术原理

负载管理分为静态负载管理和动态负载管理,使用参数enable_dynamic_workload控制,同时GaussDB提供优先级控制用于对租户作业优先级进行控制。

  • 静态负载管理

    以CN为单位实现租户的并发控制和资源管控,各CN分别进行内存管控和并发控制,集群实际并发数为各CN并发之和,集群实际使用内存为各CN运行作业所占内存之和。因为各CN分别进行内存管控,因此DN上租户实际使用内存有可能超过租户内存限制。

  • 动态负载管理

    增加CCN用于复杂作业并发控制和内存管控,各CN向CCN请求排队信息,CCN将租户运行作业估算内存累加得到各租户已用内存,租户可用内存不足时触发排队,租户作业运行结束后尝试唤醒本租户正在排队的作业;各租户已用内存之和累加得到集群已用内存,同时CCN定期收集DN上内存使用信息用于更新集群可用内存,可用内存不足以运行作业时触发排队,作业运行需同时满足租户内存限制和集群内存限制。

  • 优先级控制

    基于query_band可以实现多维度的负载识别和队列内优先级控制,一方面提供了更为灵活的负载识别手段,可根据作业类型、应用名称、脚本名称等识别负载队列,使用户根据业务场景可灵活配置query_band识别队列;另一方面实现了队列内作业下发优先级控制,后续将逐步实现队列内资源优先级控制。

效果收益

负载管理可以实现租户间的资源隔离及优先级控制,在保证租户间资源互不影响的情况下保证高优先级租户作业的优先运行,达到资源的有效及最优利用。

了解更多请参见资源管理