[Dynamic Instrumentation] DEBUG-4689 Remove the 100-probe limit for Dynamic Instrumentation#7848
Conversation
Execution-Time Benchmarks Report ⏱️Execution-time results for samples comparing This PR (7848) 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 (7848) - mean (69ms) : 67, 71
master - mean (69ms) : 67, 71
section Bailout
This PR (7848) - mean (73ms) : 72, 75
master - mean (73ms) : 71, 74
section CallTarget+Inlining+NGEN
This PR (7848) - mean (1,039ms) : 999, 1080
master - mean (1,039ms) : 997, 1080
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 (7848) - mean (116ms) : 113, 119
master - mean (116ms) : 112, 119
section Bailout
This PR (7848) - mean (116ms) : 115, 117
master - mean (116ms) : 114, 119
section CallTarget+Inlining+NGEN
This PR (7848) - mean (776ms) : 722, 829
master - mean (781ms) : 730, 833
FakeDbCommand (.NET 6)gantt
title Execution time (ms) FakeDbCommand (.NET 6)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (7848) - mean (102ms) : 99, 105
master - mean (102ms) : 98, 105
section Bailout
This PR (7848) - mean (103ms) : 100, 105
master - mean (103ms) : 101, 104
section CallTarget+Inlining+NGEN
This PR (7848) - mean (755ms) : 736, 775
master - mean (759ms) : 732, 787
FakeDbCommand (.NET 8)gantt
title Execution time (ms) FakeDbCommand (.NET 8)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (7848) - mean (94ms) : 91, 96
master - mean (94ms) : 91, 96
section Bailout
This PR (7848) - mean (95ms) : 93, 97
master - mean (95ms) : 92, 97
section CallTarget+Inlining+NGEN
This PR (7848) - mean (636ms) : 624, 648
master - mean (633ms) : 620, 647
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 (7848) - mean (197ms) : 192, 202
master - mean (199ms) : 192, 206
section Bailout
This PR (7848) - mean (203ms) : 196, 210
master - mean (213ms) : 185, 241
section CallTarget+Inlining+NGEN
This PR (7848) - mean (1,172ms) : 1105, 1238
master - mean (1,165ms) : 1109, 1220
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 (7848) - mean (298ms) : 284, 312
master - mean (302ms) : 289, 316
section Bailout
This PR (7848) - mean (300ms) : 289, 311
master - mean (302ms) : 293, 310
section CallTarget+Inlining+NGEN
This PR (7848) - mean (991ms) : 932, 1050
master - mean (994ms) : 951, 1038
HttpMessageHandler (.NET 6)gantt
title Execution time (ms) HttpMessageHandler (.NET 6)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (7848) - mean (279ms) : 269, 289
master - mean (283ms) : 271, 294
section Bailout
This PR (7848) - mean (280ms) : 270, 290
master - mean (282ms) : 273, 291
section CallTarget+Inlining+NGEN
This PR (7848) - mean (947ms) : 908, 985
master - mean (951ms) : 897, 1006
HttpMessageHandler (.NET 8)gantt
title Execution time (ms) HttpMessageHandler (.NET 8)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (7848) - mean (290ms) : 277, 303
master - mean (292ms) : 281, 302
section Bailout
This PR (7848) - mean (289ms) : 277, 300
master - mean (290ms) : 279, 300
section CallTarget+Inlining+NGEN
This PR (7848) - mean (892ms) : 825, 958
master - mean (895ms) : 822, 967
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
db67d1d to
7e5de48
Compare
andrewlock
left a comment
There was a problem hiding this comment.
I think the config key description are switched up (the existing key shouldn't change I think?).
You'll also need to add the new key to the config_norm.json files, and make an equivelent PR to dd-go to ensure it's added to the allow list 🙂
Otherwise, LGTM
tracer/src/Datadog.Trace/Configuration/supported-configurations-docs.yaml
Outdated
Show resolved
Hide resolved
BenchmarksBenchmark execution time: 2026-02-13 17:38:48 Comparing candidate commit 54ef6b1 in PR branch Found 10 performance improvements and 8 performance regressions! Performance is the same for 166 metrics, 8 unstable metrics. scenario:Benchmarks.Trace.AgentWriterBenchmark.WriteAndFlushEnrichedTraces net472
scenario:Benchmarks.Trace.Asm.AppSecBodyBenchmark.AllCycleSimpleBody net6.0
scenario:Benchmarks.Trace.Asm.AppSecEncoderBenchmark.EncodeLegacyArgs net6.0
scenario:Benchmarks.Trace.Asm.AppSecEncoderBenchmark.EncodeLegacyArgs netcoreapp3.1
scenario:Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark.WriteAndFlushEnrichedTraces net472
scenario:Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSlice net6.0
scenario:Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSliceWithPool net6.0
scenario:Benchmarks.Trace.ElasticsearchBenchmark.CallElasticsearch net472
scenario:Benchmarks.Trace.GraphQLBenchmark.ExecuteAsync net472
scenario:Benchmarks.Trace.ILoggerBenchmark.EnrichedLog netcoreapp3.1
scenario:Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatBenchmark net6.0
scenario:Benchmarks.Trace.Log4netBenchmark.EnrichedLog netcoreapp3.1
scenario:Benchmarks.Trace.SerilogBenchmark.EnrichedLog net6.0
scenario:Benchmarks.Trace.SingleSpanAspNetCoreBenchmark.SingleSpanAspNetCore net472
scenario:Benchmarks.Trace.SpanBenchmark.StartFinishSpan net6.0
|
7e5de48 to
3f7bf63
Compare
84845dd to
54ef6b1
Compare
Summary of changes
Remove the hard-coded 100-probe limit per ptobe type for Dynamic Instrumentation and replace it with an internal, configurable per-type limit that defaults to “no limit”.
Reason for change
The MCP server and agentic debugging use cases are becoming increasingly popular. This growth is expected to lead to hitting the 100 probe limit in services more frequently.