Skip to main content

Module trace

Module trace 

Source
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§

TraceEvent
一条执行 span。时间均相对图 epoch,单位微秒。
TraceRing
有界 trace 事件环(FIFO,满了丢最旧)。

Enums§

TracePhase
算子回调阶段。

Functions§

to_chrome_trace_json
把 span 导出成 Chrome Trace Event Format(chrome://tracing / perfetto 可直接打开)。