Repolode
janestreet

janestreet/magic-trace

基于 Intel Processor Trace 的 Linux 性能追踪工具,可记录进程的每一次函数调用并以时间线展示。

Star
6,347
Fork
223
未关闭 Issue
73
最近提交
19天前

这是什么?

magic-trace 用于采集并展示进程运行过程的高精度追踪数据。它不像 perf 那样按时间间隔采样调用栈,而是借助 Intel Processor Trace 记录全部控制流,保存在环形缓冲区中,并在选定时刻截取快照,重建出约 10 毫秒内的调用栈时间线,函数调用分辨率约为 40 纳秒。

可以对运行中的进程使用 attach 命令,按 Ctrl+C 结束时输出快照;也可以通过 -trigger 参数指定函数,每当程序调用该函数时自动截取快照。生成的 trace.fxt.gz 文件可在 magic-trace.org 网页中打开查看,该页面基于 Perfetto 修改,完全在浏览器中运行。无需修改应用代码,开销约为 2%-10%。

运行环境要求为 Intel Skylake 或更新的 CPU,仅支持 Linux,多数虚拟机不受支持。

核心功能

  • 01以约 40 纳秒的分辨率记录进程中的每一次函数调用。
  • 02利用 Intel Processor Trace 截取控制流环形缓冲区快照,而非采样。
  • 03无需修改应用代码,即可挂载到正在运行的进程上。
  • 04支持在指定函数被调用时或退出时触发快照。
  • 05追踪文件在浏览器中查看,不会上传到外部服务器。

适用场景

  • 排查生产环境中少数请求变慢的原因。
  • 确认热点路径上代码实际执行的情况,而非凭经验猜测。
  • 回溯程序崩溃前的一系列函数调用。
  • 分析长时间运行程序中某个调度周期或垃圾回收过程的具体行为。

快速上手

  1. 1

    从最新发布页面下载发布版二进制文件或安装包

  2. 2

    为预编译二进制文件添加可执行权限

    chmod +x magic-trace
  3. 3

    安装下载的 .deb 安装包

    sudo dpkg -i magic-trace*.deb
  4. 4

    运行帮助命令检查安装是否成功

    magic-trace -help

使用前须知

  • 仅支持 Linux,且需要 Intel CPU(Skylake 或更新型号)。
  • 大多数虚拟机不受支持。

收录于专题

标签

#performance-tools#profiling#tracing#intel-pt#linux#debugging#observability#intel#introspection#profile

常见问题

magic-trace 是什么?
基于 Intel Processor Trace 的 Linux 性能追踪工具,可记录进程的每一次函数调用并以时间线展示。 magic-trace 用于采集并展示进程运行过程的高精度追踪数据。它不像 perf 那样按时间间隔采样调用栈,而是借助 Intel Processor Trace 记录全部控制流,保存在环形缓冲区中,并在选定时刻截取快照,重建出约 10 毫秒内的调用栈时间线,函数调用分辨率约为 40 纳秒。
magic-trace 可以免费使用吗?用的什么许可证?
magic-trace 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
magic-trace 还在维护吗?
活跃维护中。magic-trace 最近一次提交是在 2026年10月19日。
magic-trace 适合用来做什么?
排查生产环境中少数请求变慢的原因。 确认热点路径上代码实际执行的情况,而非凭经验猜测。 回溯程序崩溃前的一系列函数调用。 分析长时间运行程序中某个调度周期或垃圾回收过程的具体行为。
magic-trace 怎么安装和运行?
从最新发布页面下载发布版二进制文件或安装包 为预编译二进制文件添加可执行权限: chmod +x magic-trace 安装下载的 .deb 安装包: sudo dpkg -i magic-trace*.deb 运行帮助命令检查安装是否成功: magic-trace -help
在哪里获取 magic-trace?
源代码和安装说明在 GitHub 上:https://github.com/janestreet/magic-trace

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目