Description
Net 10 goals - single threaded Event Pipe and Diagnostic server
- gc heap dump, counters, CPU sampling
- implement single-threaded DS native code
- single threaded managed
AggregationManager
andEventPipeEventDispatcher
- implement single-threaded sample profiler (interp, AOT, jiterp)
- implement JavaScript API for triggering trace
- implement WebSocket transport for EP
- Documentation [Pre4] Performance profiling for Blazor WebAssembly apps AspNetCore.Docs#35230
- trigger re-build with
<WasmPerfTracing />
change - fix timeouts in
ds-router
for WebSockets [dsrouter] fix web socket startup diagnostics#5121 - WBT and manual tests [browser] EP testing #114232
Net 10 nice to have
- include ds-router in the dev-server, so that the IPC channel is visible on the local machine
- explore how .nettrace output could be used for PGO AOT in Mono
- click thru symbols in the trace to C# code in VS
- optimize sampling profiler
- simplify browser
<WasmProfilers>browser</WasmProfilers>
andconfig.browserProfilerOptions
-
Timing-Allow-Origin
in the devtools
Future goals
- propagate from the WASM client to the server side open telemetry
- integration with VS or VS code
- make multi-threaded event pipe also work
- annotate Mono AOT with event pipe events
-
FRAME_TYPE_IL_STATE
-
- annotate AOT/Interp transitions
- annotate JS interop with event pipe events
- use stats about Interp of runtime libraries to bring more intrinsic methods to Interp
- propagate event pipe events as performance.mark() and performance.measure()
- optional, configurable
- HTTP header Timing-Allow-Origin
- propagate browser events as event pipe events
- Add a way for JavaScript to push events to EventSources.
- VS integration
- Refactor runtime startup to allow the diagnostic server to async pause the browser thread.
Non-goals
- (debugging of) full memory dump - the layout of WASM linear memory is significantly different from other OSs. Also it doesn't capture WASM stack trace, just shadow stack.
- DS/EP and Mono profilers at the same time
- Anything based on
DiagnosticCounter
likeRuntimeEventSource
andCounterGroup
, keepUnsupportedOSPlatform("browser")