库用户指南

性能剖析指南

师成师成· 更新于 2026-09-28· 阅读 8 分钟· 0 次阅读

登录后可跨设备保存划线和私人笔记登录

性能剖析实战指南

本节包含在不同操作系统上对 Apache DataFusion 进行 CPU 性能剖析的示例。

构建火焰图

视频:如何使用火焰图对 DataFusion 进行 CPU 性能剖析

火焰图是对正在运行的函数的一种可视化呈现。你可以通过多种方式生成火焰图;下面的说明针对 cargo-flamegraph,最终可得到类似下图的结果:

火焰图

MacOS

第 1 步:安装火焰图工具

要安装 flamegraph,请运行:

cargo install flamegraph

步骤 2:准备环境

请确保你已进入包含 DataFusion 查询所需数据文件的目录。火焰图工具将针对该数据对你的查询执行情况进行性能分析。

步骤 3:运行火焰图工具

要生成火焰图,你需要使用 -- 分隔符将参数传递给正在分析的二进制程序。对于 datafusion-cli,你需要确保以 sudo 权限运行该命令(尤其是在 macOS 上,DTrace 需要提升权限)。

下面是一个通用示例:

sudo flamegraph -- datafusion-cli -f <path_to_sql_file/sql_file.sql>

示例:为特定查询生成火焰图

以下是使用 28.sql 的一个示例:

sudo flamegraph -- datafusion-cli -f 28.sql

你也可以通过 cargo 调用火焰图工具,以对特定的测试或基准测试进行性能分析。

示例:为特定测试生成火焰图:

CARGO_PROFILE_RELEASE_DEBUG=true cargo flamegraph --root --unit-test datafusion  -- dataframe::tests::test_array_agg

示例:为基准测试生成火焰图

CARGO_PROFILE_RELEASE_DEBUG=true cargo flamegraph --root --bench sql_planner -- --bench

使用 XCode Instruments 进行 CPU 性能分析

视频:如何使用 XCode Instruments 对 DataFusion 进行 CPU 性能分析

使用跨平台性能分析器 Samply 进行分析

可以使用 Samply 在任意平台上生成火焰图、调用树和堆栈图表。

安装 Samply 性能分析器

cargo install --locked samply

更多 Samply 安装选项

运行分析器

samply record --profile profiling ./my-application my-arguments

分析基准测试

如果尚未完成,请先配置基准测试

示例:分析 TPC-H 基准测试中的 Q22 查询。注意:--profile profiling 用于分析带有调试符号的 release 优化产物。

cargo build --profile profiling --bin tpch
samply record ./target/profiling/tpch benchmark datafusion --iterations 5 --path datafusion/benchmarks/data/tpch_sf10 --prefer_hash_join true --format parquet -o datafusion/benchmarks/results/dev2/tpch_sf10.json --query 22

采样完成后,Samply 会启动一个本地服务器并导航到分析器界面。

Local server listening at http://127.0.0.1:3000

img.png

:::note

注意:Firefox 性能分析器无法在 Safari 中打开,请改用 Chrome 或 Firefox。

:::

评论

登录后参与评论

正在加载评论…