GaussDB-内置perf工具

GaussDB-内置perf工具

可获得性

本特性自505.0.0版本开始引入。

特性简介

perf工具是在一定时间范围内,采集数据库中各线程的调用栈及其时间占比的工具,用于辅助数据库运维人员定位性能问题。该工具分为自动采集和手动采集两个功能。

自动采集堆栈功能,会定时采集数据库运行时活跃线程的函数调用栈及时间占比,并生成图形化火焰图报告。火焰图报告存储在$GAUSSLOG/gs_flamegraph/{datanode}路径下,下载该路径中的echarts.min.js文件和.html文件到同一目录下,用浏览器打开.html文件,即可展示采集到的堆栈调用火焰图。采集一次堆栈并生成火焰图的时间间隔通过GUC参数gs_perf_interval控制,范围为0或5-60,单位为min,默认为5min。自动采集堆栈功能功能默认开启,可以通过设置GUC参数gs_perf_interval=0关闭该功能。火焰图报告的保留时长由GUC参数gs_perf_retention_days控制,范围为1~8,单位为天,默认为3天。在gs_perf_interval不为0时,超过gs_perf_retention_days保存天数之外的火焰图文件会被回收。

手动采集堆栈功能,需要执行gs_perf_start()函数,采集一段时间内的堆栈调用情况,之后执行gs_perf_query()函数查询文字版堆栈调用信息。如需生成图形化火焰图报告,请执行gs_perf_report()函数。

堆栈调用火焰图是一种用于可视化性能分析的工具,它能够帮助开发者快速地识别程序中的性能瓶颈。堆栈调用火焰图y轴表示调用栈,每一层都是一个函数,顶部是当前正在执行的函数,下方是它的父函数,火焰的高度代表调用栈的深度;x轴表示采样执行时间占比,函数在x轴上的宽度越宽,表示它被采样的次数越多,即执行时间越长。火焰图展示的”平顶”,即占据宽度较大的函数,往往被用来定位数据库运行时的性能问题。

图1 火焰图样例

客户价值

提供函数级别的调用栈信息,提供视图支持查询当前节点下所有活跃线程的函数调用栈及时间占比,提供生成火焰图文件的能力,提升数据库内核运维人员分析、定位性能问题的效率。

特性描述

可以通过gs_perf_start(),gs_perf_query()、gs_perf_clean()分别采集,查询和删除堆栈数据。通过dbe_perf.perf_query视图查询堆栈数据。

  1. gs_perf_start()函数详见《开发者指南》中的“SQL参考 > 函数和操作符 > 统计信息函数”章节。
  2. gs_perf_query()函数详见《开发者指南》中的“SQL参考 > 函数和操作符 > 统计信息函数”章节。
  3. gs_perf_report()函数详见《开发者指南》中的“SQL参考 > 函数和操作符 > 统计信息函数”章节。
  4. gs_perf_clean()函数详见《开发者指南》中的“SQL参考 > 函数和操作符 > 统计信息函数”章节。
  5. dbe_perf.perf_query视图详见《开发者指南》中的“Schema > DBE_PERF Schema > OS > PERF_QUERY”章节。

特性增强

无。

特性约束

  1. 执行性能采集时,需要数据库在normal、degrade状态,unavailable状态不支持。在degrade状态,异常cn/dn不支持采集。
  2. 仅支持CN、DN、DN备、不支持logger节点,不支持cm_server、cm_agent、gtm、UDF等组件。
  3. 仅支持on cpu采集,不支持off cpu采集。
  4. 手动采集支持的采集时间范围为1s-60s。
  5. 手动采集支持的采集频率为10HZ-1000HZ。
  6. 自动采集堆栈功能一次采集5s,采集频率为99HZ。
  7. 手动采集结果不落盘,存储在内存中。如果执行gs_perf_start后重启进程,则采集结果丢失。
  8. 不支持并发采集。同一进程,同一时间,最多有一个session可以执行gs_perf_start操作。且同一进程内,在执行gs_perf_start操作期间,不支持执行gs_perf_query、gs_perf_report或gs_perf_clean操作。在自动采集堆栈期间,若手动执行采集堆栈函数gs_perf_start,会打断自动采集堆栈进程。
  9. 自动或手动采集堆栈期间,不支持使用Linux perf工具操作同一进程。
  10. 该特性依赖操作系统内核参数/proc/sys/kernel/perf_event_mlock_kb,该参数用来配置内置perf工具允许使用的最大内存值,操作系统中该参数的默认值为516KB。当操作系统中/proc/sys/kernel/perf_event_mlock_kb参数可修改时,在集群安装或升级的预安装阶段,默认将该参数调整为100MB。若该参数过小可能会导致手动和自动采集失败。

依赖关系

无。

 
posted @ 2024-10-30 09:07  jerrywang1983  阅读(16)  评论(0)    收藏  举报