工程开发
rspack-sftrace avatar

rspack-sftrace

使用 LLVM XRay 追踪 Rspack Rust 函数调用,用于性能分析、故障排除及可视化执行流程。

简介

rspack-sftrace 提供了一套用于剖析 Rspack 打包器 Rust 核心的结构化方法。通过利用 LLVM XRay 插装技术,此工具能获取函数进入与退出点的详细信息,协助开发人员识别性能瓶颈、理解复杂的执行流程,并排除构建过程中的延迟问题。它专为 Rspack 贡献者与在 monorepo 环境中工作的性能工程师而设计。

该工具提供了从二进制文件插装到可视化分析的完整诊断管线。用户可以生成过滤后的日志以隔离特定函数符号,大幅降低大型构建中的干扰信息。工作流程包含将原始日志转换为 Polars Dataframe 以进行统计分析,或转换为 Perfetto 兼容的 protobuf 格式以进行高精度的可视化追踪。这能协助识别热点路径、递归函数开销以及线程特定的执行模式。

  • 通过 LLVM XRay 对 Rust 函数调用进行插装,以获得精确的计时数据。

  • 高级过滤功能,支持使用正则表达式或列表匹配来锁定特定函数符号。

  • 支持将追踪数据导出至 Polars 进行程序化分析,包括按函数 ID 分组及计算执行时间。

  • 将追踪成品转换为 Perfetto protobuf 格式,以集成至 VizTracer 等可视化工具中。

  • 支持线程感知剖析,以捕捉现代高性能构建工具中常见的并发执行模式。

  • 工具预期目标项目需在启用插装的情况下构建 (SFTRACE=1)。

  • 在项目示例目录中执行可获得最佳性能结果。

  • 请注意,过滤功能不会自动保留子层函数调用;若需完整的调用堆栈,请尽量执行无过滤的截取。

  • 确保环境中已安装必要的原生依赖包与二进制工具 (sftrace)。

  • 追踪日志文件可能会非常庞大;请将成品存储在项目目录中,以避免耗尽系统存储空间。

仓库统计

Star 数
12,667
Fork 数
794
Open Issue 数
189
主要语言
Rust
默认分支
main
同步状态
空闲
最近同步时间
2026年5月3日 09:35
在 GitHub 查看