库用户指南
性能剖析指南
登录后可跨设备保存划线和私人笔记登录
性能剖析实战指南
本节包含在不同操作系统上对 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
:::note
注意:Firefox 性能分析器无法在 Safari 中打开,请改用 Chrome 或 Firefox。
:::
评论
登录后参与评论
正在加载评论…
KnowForge