Data Model
Trace layers separate source normalization from runtime lookup and rendering. That split keeps Chrome Trace, Perfetto, custom warehouse rows, and live streams from leaking format-specific rules into deck.gl layers.
The shared pipeline
- Parse a source format.
- Normalize processes, threads, spans, dependencies, instants, counters, and events.
- Cross the ingestion boundary through
JSONTrace,TraceGraphData, orTraceChunkData. - Construct a
TraceGraphfor ref lookup, filtering, search, and visible graph projection. - Build a
TraceLayoutfor rows, geometry, and bounds. - Render with
DeckTraceGraphor the low-level deck.gl helpers.
The important nouns
TraceProcessis the top-level visible row group. It may represent an OS process, rank, host, or another execution partition.TraceThreadis a child stream inside a process. It may represent a thread, queue, CUDA stream, or logical lane.TraceSpanis the main duration-bearing timeline object.TraceInstantandTraceCounterare point and sampled timeline objects.TraceLocalDependencyandTraceCrossProcessDependencyconnect spans.TraceGraphis the runtime wrapper around loaded Arrow-backed tables.TraceLayoutis render-ready row structure, geometry, and bounds.
IDs versus refs
Source IDs such as TraceSpanId survive ingestion and serialization. Runtime refs such as
SpanRef, ProcessRef, and ThreadRef identify exact loaded rows and are the preferred selection,
layout, and dependency keys while a graph is mounted.
Persist source IDs at URL or workspace boundaries. Resolve them back to refs before asking runtime code for geometry, selection, or dependency traversal.
Objects do not carry geometry
Normalized trace objects describe what happened. TraceLayout describes where those objects draw.
Do not attach span rectangles, dependency polylines, lane positions, or viewport bounds during
ingestion.
Which ingestion contract to use
- Use
JSONTracefor a JSON-safe normalized document or simple file/application builders. - Use
TraceGraphDatawhen you already have Arrow-backed tables and want the compact runtime form. - Use
TraceChunkDatawhen a source returns bounded chunks that aTraceChunkStorewill retain and materialize into visible windows.
See JSONTrace, TraceGraphData, TraceChunkData, and TraceGraph.