Expand description
逐次调用的执行 trace:有界事件环 + Chrome Trace 导出。
默认关闭(config.trace_capacity == 0)。开启时,每次算子回调(Open/Process/Close)记
一条 span 进有界环 —— 环满丢最旧,故内存有界。可经 to_chrome_trace_json 导出成
chrome://tracing / perfetto 可读的 “Trace Event Format”(complete "X" 事件:含 ts +
dur),从而看到「哪个节点在什么时刻、在哪个线程上跑了多久」的时间线 —— 这是聚合统计
(总时长/最大/百分位)回答不了的。
并发:多个 worker 线程并发记录,整个环用一把 Mutex 保护。trace 是调试/剖析模式,这点
争用可接受,换来的是显然正确、tsan 干净。关闭时热路径零开销 —— GraphShared::trace
为 None 时,scheduler 连时钟都不读(见 call_kernel)。
Structs§
- Trace
Event - 一条执行 span。时间均相对图 epoch,单位微秒。
- Trace
Ring - 有界 trace 事件环(FIFO,满了丢最旧)。
Enums§
- Trace
Phase - 算子回调阶段。
Functions§
- to_
chrome_ trace_ json - 把 span 导出成 Chrome Trace Event Format(chrome://tracing / perfetto 可直接打开)。