GaussDB(DWS)资源监控原理简介及视图应用
1. 背景介绍
GaussDB(DWS)运行过程中使用的公共资源包含CPU、内存、IO、网络、存储空间以及数据库共享资源(锁、计数等),作业在运行过程中总是希望获得更多的公共资源,以获得最好的执行性能。但是公共资源的滥用会导致数据库系统的整体吞吐量下降,甚至业务长时间阻塞,影响其他作业的执行性能。因此公共资源的合理有效利用就成了数据库系统长期稳定运行的关键,GaussDB(DWS)提供了多维度的资源监控手段,用于实时资源监控和公共资源异常使用的快速识别。
2. 资源监控原理
1. 作业内存监控
作业运行过程中动态申请的内存会进行记账,作业stream线程与作业主线程使用同一块内存地址进行内存记账,因此作业内存监控时只需要作业主线程上报内存使用即可,stream线程不需要单独上报内存使用。
2. 作业IO监控
GaussDB(DWS)作业IO监控为逻辑IO监控,在IO读写接口打桩,发生IO读写时进行记账,stream线程使用主线程内存地址记账,因此逻辑IO监控也只需要上报主线程逻辑IO使用信息即可。
3. 作业CPU监控
GaussDB(DWS)维护一个全局时钟,用于作业CPU监控控制,全局时钟每5s响应一次,作业运行过程中每个线程维护一个本地时钟,本地时钟与全局时钟不相同时,进行一次CPU资源监控,并使用全局时钟同步本地时钟。作业线程在进行CPU资源监控时,stream线程同样使用主线程内存地址记账,因此CPU监控也只需要上报主线程CPU监控信息即可。
4. 用户资源监控
DN每隔5s获取所有作业资源监控数据,并将资源监控数据上报至所属用户,上报完成后,用户进行资源监控数据汇总统计,统计得到用户资源监控数据。CN每隔5s从DN收集一次用户资源监控数据,并将集群内所有DN用户资源监控数据进行累加得到用户资源监控信息。
5. 资源池资源监控
DN每隔5s将用户资源监控数据汇总至所属资源池,上报完成后,资源池进行资源监控数据汇总统计,统计得到资源池资源监控数据。CN每隔5s从DN收集一次资源池资源监控数据,并将集群内所有DN资源池资源监控数据进行累加得到资源池资源监控信息。
3. 资源监控应用
1. 用户资源监控
得益于架构整改和逻辑优化,目前用户IO、内存和CPU监控全部可以实现对简单作业和复杂作业的监控,同时CPU监控数据也已经修复为用户维度。用户资源监控信息中,DN上显示当前DN资源监控信息,CN上显示的是集群内所有DN资源监控信息的累积和。受限于版本规划,当前暂不支持一个视图查询所有实例上用户资源监控信息以及资源倾斜情况。
用户资源实时监控视图:pg_total_user_resource_info;
用户资源历史监控表:gs_wlm_user_resource_history;
用户资源监控在最新版本修改较少,其他细节参考产品文档,这里不做赘述。
2. 资源池资源监控
多租户管理框架下,用户关联资源池执行查询,用户执行查询占用的资源将汇总至关联资源池上,通过资源池监控视图用户可以直观的查询到所有资源池的实时资源使用情况,同时也可以通过资源池监控历史表查询资源池资源的历史使用情况。
资源池监控数据每5s更新一次,但是因为CN和DN时间差,实际监控数据更新时间可能会大于5s,正常不会超过10s。资源池监控数据每30s持久化一次,资源池监控和用户监控逻辑基本一致,因此共用GUC参数控制持久化和老化,使用GUC参数enable_user_metric_persistent控制是否进行资源池监控数据持久化,使用GUC参数user_metric_retention_time控制资源池监控数据老化。
-
资源池实时运行信息监控视图(单CN):GS_RESPOOL_RUNTIME_INFO;
-
资源池实时运行信息监控视图(所有CN):PGXC_RESPOOL_RUNTIME_INFO;
-
资源池实时资源监控视图(单CN):GS_RESPOOL_RESOURCE_INFO;
-
资源池实时资源监控视图(所有实例):PGXC_RESPOOL_RESOURCE_INFO;
-
资源池历史资源监控表(单CN):GS_RESPOOL_RESOURCE_HISTORY;
-
资源池历史资源监控视图(所有实例):PGXC_RESPOOL_RESOURCE_HISTORY。
- 点赞
- 收藏
- 关注作者
评论(0)