-
Notifications
You must be signed in to change notification settings - Fork 25
Open
Labels
enhancementNew feature or requestNew feature or request
Description
Is your feature request related to a problem? Please describe.
Firewood (Rust) is consumed by AvalancheGo (Go) through CGO. Current profiling tools only see one side:
- Go pprof: shows
C.fwd_propose_on_dbas a black box - Rust profilers: no visibility into which Go code triggered the call
We cannot trace a hot path across the boundary. Performance work requires guessing or correlating two separate profiles manually.
Describe the solution you'd like
Unified profiling that shows Go -> CGO -> Rust in one call stack.
Describe alternatives you've considered
- Rust-side metrics: timing only, no call stacks
- Separate profiles: manual correlation, error-prone
Additional context
Prototype working on macOS with Instruments. Requirements:
- Rust FFI with frame pointers (
-C force-frame-pointers=yes) - Go binary with debug symbols (
-gcflags="all=-N -l") - Local FFI via go.mod replace (module cache lacks debug info)
Linux (perf) workflow needs validation.
Progress (review in order)
- feat(vm_reexecute): add pprof profiling support avalanchego#4790 - runs reexecution with optional pprof flag
- Es/cross stack profiling #1583 - builds Firewood with debug symbols enabling profiling visibility
- feat(reexecution): add optional profiling support to benchmarking script avalanchego#4791 - Connects Es/cross stack profiling #1583 to reexecution preserving Rust debug info
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request