欢迎光临散文网 会员登陆 & 注册

Databend 性能剖析方法与工具

2022-07-22 14:11 作者:Databend  | 我要投稿

Databend 整合了一些性能剖析工具,可以方便进行深入分析。本文将会介绍如何进行 CPU / Memory Profiling。CPU Profiling

CPU Profiling

CPU 分析,按照一定的频率采集所监听的应用程序 CPU(含寄存器)的使用情况,可确定应用程序在主动消耗 CPU 周期时花费时间的位置。

pprof 是 Google 开源的代码性能分析工具,可以直接生成代码分析报告,不仅支持通过命令式交互查看,也便于可视化展示。Databend 使用 pprof-rs[1] 完成对 pprof 工具的支持。

必备工作:

CPU 分析属于 Databend 的内置能力,部署一个 Databend 实例即可开始使用。

命令行交互:

若 http 端口为 8080 ,采样时间为 20 秒,结果示例如下:


可视化:

执行下述命令可以进行可视化:

例如,执行下述语句可以在 8088 端口开启 WEB UI 。

访问 http://0.0.0.0:8088/ui/flamegraph 即可得到火焰图。


注意事项:

Databend 暂时不支持在 musl 平台上运行 pprof 。

Memory Profiling

内存分析,在应用程序进行堆分配时记录堆栈追踪,用于监视当前和历史内存使用情况,以及检查内存泄漏。通过与 jemalloc 的集成,Databend 得以整合多种内存分析能力。这里使用 jeprof 进行内存分析。

必备工作:

  • 安装 Jemalloc,并启用其剖析能力 ./configure --enable-prof

  • 在构建二进制文件时启用 memory-profiling 特性:cargo build --features memory-profiling

  • 在创建 Databend 实例时,设置环境变量 MALLOC_CONF=prof:true 以启用内存分析。示例:

堆快照转储:

下面的例子选用 debug 模式下编译的 databend-query 作为 target,端口为 8080,结果如下所示:


生成内存分配调用图:

常见的用例之一是查找内存泄漏,通过比较间隔前后的内存画像即可完成这一工作。在下面的命令行中,以 10 s 为间隔,获取前后两个时间节点的内存画像。


接着,可以利用这两份内存画像来生成 pdf 格式的内存分配调用图。

同样选用 debug 模式下编译的 databend-query 作为 target,端口为 8080,结果如图所示:

目前无法在 Mac 上进行内存分析,不管是 x86_64 还是 aarch64 平台。引用链接

引用链接

[1] pprof-rs: https://crates.io/crates/pprof

关于 Databend

Databend 是一款开源、弹性、低成本,基于对象存储也可以做实时分析的新式数仓。期待您的关注,一起探索云原生数仓解决方案,打造新一代开源 Data Cloud。

  • Databend 文档:https://databend.rs/

  • Twitter:https://twitter.com/Datafuse_Labs

  • Slack:https://datafusecloud.slack.com/

  • Wechat:Databend

  • GitHub :https://github.com/datafuselabs/databend

文章首发于公众号:Databend


Databend 性能剖析方法与工具的评论 (共 条)

分享到微博请遵守国家法律