[Dynamic Instrumentation] DEBUG-4089 Support file-based debugger probes#7833
Conversation
This comment has been minimized.
This comment has been minimized.
Execution-Time Benchmarks Report ⏱️Execution-time results for samples comparing This PR (7833) and master. ✅ No regressions detected - check the details below Full Metrics ComparisonFakeDbCommand
HttpMessageHandler
Comparison explanationExecution-time benchmarks measure the whole time it takes to execute a program, and are intended to measure the one-off costs. Cases where the execution time results for the PR are worse than latest master results are highlighted in **red**. The following thresholds were used for comparing the execution times:
Note that these results are based on a single point-in-time result for each branch. For full results, see the dashboard. Graphs show the p99 interval based on the mean and StdDev of the test run, as well as the mean value of the run (shown as a diamond below the graph). Duration chartsFakeDbCommand (.NET Framework 4.8)gantt
title Execution time (ms) FakeDbCommand (.NET Framework 4.8)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (7833) - mean (73ms) : 70, 76
master - mean (73ms) : 69, 78
section Bailout
This PR (7833) - mean (77ms) : 75, 79
master - mean (77ms) : 75, 80
section CallTarget+Inlining+NGEN
This PR (7833) - mean (1,128ms) : 1075, 1181
master - mean (1,124ms) : 1074, 1174
FakeDbCommand (.NET Core 3.1)gantt
title Execution time (ms) FakeDbCommand (.NET Core 3.1)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (7833) - mean (114ms) : 110, 118
master - mean (114ms) : 109, 118
section Bailout
This PR (7833) - mean (118ms) : 112, 124
master - mean (119ms) : 112, 127
section CallTarget+Inlining+NGEN
This PR (7833) - mean (815ms) : 784, 847
master - mean (805ms) : 780, 831
FakeDbCommand (.NET 6)gantt
title Execution time (ms) FakeDbCommand (.NET 6)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (7833) - mean (105ms) : 99, 111
master - mean (104ms) : 97, 111
section Bailout
This PR (7833) - mean (104ms) : 98, 110
master - mean (103ms) : 98, 108
section CallTarget+Inlining+NGEN
This PR (7833) - mean (944ms) : 902, 985
master - mean (942ms) : 899, 985
FakeDbCommand (.NET 8)gantt
title Execution time (ms) FakeDbCommand (.NET 8)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (7833) - mean (100ms) : 97, 104
master - mean (100ms) : 96, 103
section Bailout
This PR (7833) - mean (105ms) : 99, 112
master - mean (105ms) : 98, 111
section CallTarget+Inlining+NGEN
This PR (7833) - mean (830ms) : 785, 876
master - mean (840ms) : 766, 914
HttpMessageHandler (.NET Framework 4.8)gantt
title Execution time (ms) HttpMessageHandler (.NET Framework 4.8)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (7833) - mean (201ms) : 194, 207
master - mean (202ms) : 192, 212
section Bailout
This PR (7833) - mean (204ms) : 199, 210
master - mean (206ms) : 197, 215
section CallTarget+Inlining+NGEN
This PR (7833) - mean (1,231ms) : 1195, 1267
master - mean (1,243ms) : 1191, 1294
HttpMessageHandler (.NET Core 3.1)gantt
title Execution time (ms) HttpMessageHandler (.NET Core 3.1)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (7833) - mean (288ms) : 278, 297
master - mean (292ms) : 279, 305
section Bailout
This PR (7833) - mean (287ms) : 279, 294
master - mean (292ms) : 281, 303
section CallTarget+Inlining+NGEN
This PR (7833) - mean (982ms) : 954, 1009
master - mean (985ms) : 958, 1011
HttpMessageHandler (.NET 6)gantt
title Execution time (ms) HttpMessageHandler (.NET 6)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (7833) - mean (280ms) : 271, 289
master - mean (285ms) : 274, 297
section Bailout
This PR (7833) - mean (281ms) : 273, 290
master - mean (284ms) : 275, 293
section CallTarget+Inlining+NGEN
This PR (7833) - mean (1,154ms) : 1115, 1194
master - mean (1,162ms) : 1124, 1200
HttpMessageHandler (.NET 8)gantt
title Execution time (ms) HttpMessageHandler (.NET 8)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (7833) - mean (280ms) : 272, 287
master - mean (283ms) : 273, 294
section Bailout
This PR (7833) - mean (280ms) : 271, 288
master - mean (285ms) : 274, 297
section CallTarget+Inlining+NGEN
This PR (7833) - mean (1,044ms) : 998, 1090
master - mean (1,045ms) : 992, 1099
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1004977 to
438cd74
Compare
BenchmarksBenchmark execution time: 2026-04-29 23:51:12 Comparing candidate commit 739a50f in PR branch Found 0 performance improvements and 0 performance regressions! Performance is the same for 27 metrics, 0 unstable metrics, 60 known flaky benchmarks, 27 flaky benchmarks without significant changes.
|
andrewlock
left a comment
There was a problem hiding this comment.
Approving for the tracer side - I glanced over some of the debugger stuff, mostly just to point out a few opportunities for perf improvements. One general comment is that I think most of the "helper" classes should all have their own dedicated unit tests for their behaviour, so we can cover all the edge cases, without going through the "full" dynamic instrumentation initialization code
Apply file-loaded probes through the owning DynamicInstrumentation instance instead of the global manager lookup, and only start the DI runtime for file probes that survive configuration filters. Add focused tests for actual file probe application and filtered-out file probes.
438cd74 to
dca07cf
Compare
Summary of changes
Added support to load log/metric/span/span‑decoration probes from a JSON file (DebuggerSettings.ProbeFile)
Reason for change
Dynamic Instrumentation only worked with RCM‑delivered probes. There was no support for loading probes from a local file, and the internal configuration state wasn’t designed for combining file and RCM probes or handling file‑only
Implementation details
Test coverage
Updated DynamicInstrumentationTests to cover file probe loading (multiple probe types, invalid/missing/empty files, no file configured, partially valid file entries, and duplicate IDs within a file) and merge semantics between file and RCM probes.