Add PR-level performance quality gates#7967
Conversation
BenchmarksBenchmark execution time: 2025-12-18 19:49:27 Comparing candidate commit c2e8bfa in PR branch Found 4 performance improvements and 11 performance regressions! Performance is the same for 159 metrics, 12 unstable metrics. scenario:Benchmarks.Trace.ActivityBenchmark.StartStopWithChild net6.0
scenario:Benchmarks.Trace.ActivityBenchmark.StartStopWithChild netcoreapp3.1
scenario:Benchmarks.Trace.Asm.AppSecBodyBenchmark.AllCycleMoreComplexBody net6.0
scenario:Benchmarks.Trace.Asm.AppSecBodyBenchmark.AllCycleSimpleBody net6.0
scenario:Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark.WriteAndFlushEnrichedTraces net6.0
scenario:Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark.WriteAndFlushEnrichedTraces netcoreapp3.1
scenario:Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSlice net6.0
scenario:Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSliceWithPool net6.0
scenario:Benchmarks.Trace.CharSliceBenchmark.OriginalCharSlice net6.0
scenario:Benchmarks.Trace.Log4netBenchmark.EnrichedLog netcoreapp3.1
|
60efcd1 to
6a8de05
Compare
Execution-Time Benchmarks Report ⏱️Execution-time results for samples comparing This PR (7967) 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 (7967) - mean (68ms) : 67, 70
master - mean (68ms) : 67, 70
section Bailout
This PR (7967) - mean (72ms) : 71, 73
master - mean (72ms) : 71, 73
section CallTarget+Inlining+NGEN
This PR (7967) - mean (1,010ms) : 960, 1059
master - mean (1,007ms) : 962, 1051
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 (7967) - mean (106ms) : 103, 108
master - mean (106ms) : 103, 108
section Bailout
This PR (7967) - mean (107ms) : 105, 108
master - mean (106ms) : 105, 108
section CallTarget+Inlining+NGEN
This PR (7967) - mean (711ms) : 687, 736
master - mean (708ms) : 680, 736
FakeDbCommand (.NET 6)gantt
title Execution time (ms) FakeDbCommand (.NET 6)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (7967) - mean (93ms) : 91, 96
master - mean (93ms) : 91, 95
section Bailout
This PR (7967) - mean (94ms) : 93, 95
master - mean (94ms) : 93, 95
section CallTarget+Inlining+NGEN
This PR (7967) - mean (666ms) : 647, 685
master - mean (666ms) : 648, 685
FakeDbCommand (.NET 8)gantt
title Execution time (ms) FakeDbCommand (.NET 8)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (7967) - mean (92ms) : 89, 95
master - mean (92ms) : 90, 95
section Bailout
This PR (7967) - mean (93ms) : 92, 94
master - mean (93ms) : 92, 94
section CallTarget+Inlining+NGEN
This PR (7967) - mean (630ms) : 615, 644
master - mean (628ms) : 615, 641
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 (7967) - mean (194ms) : 191, 198
master - mean (194ms) : 191, 198
section Bailout
This PR (7967) - mean (197ms) : 194, 201
master - mean (197ms) : 195, 200
section CallTarget+Inlining+NGEN
This PR (7967) - mean (1,125ms) : 1049, 1201
master - mean (1,117ms) : 1062, 1171
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 (7967) - mean (278ms) : 271, 284
master - mean (279ms) : 271, 287
section Bailout
This PR (7967) - mean (278ms) : 273, 282
master - mean (279ms) : 274, 283
section CallTarget+Inlining+NGEN
This PR (7967) - mean (907ms) : 864, 950
master - mean (910ms) : 856, 964
HttpMessageHandler (.NET 6)gantt
title Execution time (ms) HttpMessageHandler (.NET 6)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (7967) - mean (270ms) : 265, 275
master - mean (271ms) : 265, 276
section Bailout
This PR (7967) - mean (271ms) : 267, 274
master - mean (271ms) : 267, 275
section CallTarget+Inlining+NGEN
This PR (7967) - mean (890ms) : 845, 934
master - mean (899ms) : 853, 946
HttpMessageHandler (.NET 8)gantt
title Execution time (ms) HttpMessageHandler (.NET 8)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (7967) - mean (270ms) : 264, 275
master - mean (275ms) : 267, 283
section Bailout
This PR (7967) - mean (270ms) : 265, 274
master - mean (273ms) : 267, 280
section CallTarget+Inlining+NGEN
This PR (7967) - mean (829ms) : 810, 849
master - mean (835ms) : 810, 859
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
740c6d1 to
0aeab66
Compare
|
✅ Tests 🎉 All green!❄️ No new flaky tests detected 🔗 Commit SHA: c2e8bfa | Docs | Datadog PR Page | Was this helpful? Give us feedback! |
Since they impact the main CI regardless of the parent's allow_failure
Summary of changes
check-big-regressions-no-ignored-benchmarksCI job that won't block merges (sinceallow-failureis set to true)..gitlab-ci.yml'smicrobenchmarks:strategy: dependsto havemicrobenchmarksfail ifcheck-big-regressions(the PR gate) fails.allow_failure: falseto havemicrobenchmarksfailures prevent PRs from being merged.Reason for change
https://datadoghq.atlassian.net/browse/APMSP-2292
Implementation details
Test coverage
Other details
run-benchmarkshas a known issue @NachoEchevarria recently mentioned of jobs failing when AWS allocates a machine with a CPU different than the one we use for benchmarking.This happens rarely, but it might lead to some frustration when attempting merges, because it would require manual retries.
An automatic retry strategy would require changes to
bp-infraI'm planning to do. But I think that we can get this PR merged as is, especially considering that there are other jobs on dd-trace-dotnet's CI that require manual retries sometimes.If failures prove to be too disruptive, we can always set
allow_failuretotrueand disable PR gates momentarily.