Offline Cross Profiler -
"timestamp_ns": 1732145678123456789, "core_id": 3, "pid_tid": "1337/1402", "domain": "CPU", "metric": "cycles_stalled_backend", "value": 42000, "stack_id": "0x7fffdeadbeef"
type Event struct Ts uint64 PID uint32 Domain string // "cpu", "mem", "io" Key string // "cycles", "page_fault", "write_bytes" Value uint64 Stack []uintptr offline cross profiler
package offlineprofiler import ( "os" "sync/atomic" "time" "github.com/segmentio/kafka-go/snappy" ) Consider a real-world bug: High latency in a database
type RingRecorder struct buffer []Event head atomic.Uint64 fd *os.File compressor *snappy.Writer "io" Key string // "cycles"
Running on a developer’s workstation (not the target), the analyzer loads the 10GB trace file, builds indexes on timestamp_ns and stack_id , and executes cross-domain queries. 3. The "Cross" Advantage: Correlating Domains The magic of the offline cross-profiler is not in a single flame graph, but in the intersection of graphs. Consider a real-world bug: High latency in a database.
"CPU usage is 50%. I don't see the problem."