
magic-trace 是 Jane Street 开源的高分辨率 tracing 工具,用来收集和展示一个进程到底在做什么。它不像传统 perf 工作流那样主要依赖采样,而是利用 Intel Processor Trace 记录控制流,再在浏览器里的时间线 UI 中还原调用栈。
看的是每一次函数调用,而不是抽样片段
README 里给出的几个数字很有代表性:2%-10% overhead、约 40ns resolution、可以追踪 every function call,并渲染一个回看约 10ms 的调用栈时间线。对于“线上偶尔慢一下”“崩溃前到底发生了什么”“某个 70ns 函数内部又调用了什么”这类问题,它提供的是另一种观察角度。
像 perf 一样 attach,但输出更适合探索
使用方式很接近 perf:把 magic-trace 指向一个进程,或者 attach 到正在运行的程序,再在需要的时候触发 snapshot。结果会生成 trace.fxt.gz,随后可以在 magic-trace.org 打开并缩放查看调用栈时间线。
触发点可以放在真正关心的异常路径上
除了 Ctrl+C 结束时抓取,也可以通过 -trigger 在应用调用某个函数时抓取快照。官方建议的场景包括异步 runtime 的 scheduler cycle 过慢、服务请求耗时异常、GC 之后想看它打断了什么、编译器 pass 结束后想观察行为等。
使用边界也很明确
magic-trace 依赖 Intel PT,因此平台约束比较硬:主要面向 Linux、Intel Skylake 或更新平台,VM 支持也有限。它更适合底层性能分析、生产问题定位和系统级调试,而不是通用浏览器性能面板的替代品。
传送门
https://github.com/janestreet/magic-trace
原创文章,如若转载,请注明出处:https://wefound.cc/p/3461.html