Relax concurrent TagsList stress test#8317
Conversation
BenchmarksBenchmark execution time: 2026-03-17 01:44:52 Comparing candidate commit 25e41b9 in PR branch Found 13 performance improvements and 6 performance regressions! Performance is the same for 158 metrics, 15 unstable metrics. scenario:Benchmarks.Trace.AgentWriterBenchmark.WriteAndFlushEnrichedTraces net6.0
scenario:Benchmarks.Trace.Asm.AppSecBodyBenchmark.AllCycleSimpleBody net6.0
scenario:Benchmarks.Trace.Asm.AppSecBodyBenchmark.AllCycleSimpleBody netcoreapp3.1
scenario:Benchmarks.Trace.Asm.AppSecEncoderBenchmark.EncodeLegacyArgs netcoreapp3.1
scenario:Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark.WriteAndFlushEnrichedTraces netcoreapp3.1
scenario:Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSlice net472
scenario:Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSlice net6.0
scenario:Benchmarks.Trace.CharSliceBenchmark.OriginalCharSlice net6.0
scenario:Benchmarks.Trace.ElasticsearchBenchmark.CallElasticsearchAsync net6.0
scenario:Benchmarks.Trace.ILoggerBenchmark.EnrichedLog net6.0
scenario:Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatAspectBenchmark net6.0
scenario:Benchmarks.Trace.Log4netBenchmark.EnrichedLog netcoreapp3.1
scenario:Benchmarks.Trace.SingleSpanAspNetCoreBenchmark.SingleSpanAspNetCore netcoreapp3.1
scenario:Benchmarks.Trace.SpanBenchmark.StartFinishSpan netcoreapp3.1
scenario:Benchmarks.Trace.SpanBenchmark.StartFinishTwoScopes net6.0
|
Execution-Time Benchmarks Report ⏱️Execution-time results for samples comparing This PR (8317) 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 (8317) - mean (75ms) : 73, 78
master - mean (75ms) : 73, 78
section Bailout
This PR (8317) - mean (81ms) : 79, 84
master - mean (80ms) : 77, 82
section CallTarget+Inlining+NGEN
This PR (8317) - mean (1,109ms) : 1056, 1162
master - mean (1,106ms) : 1061, 1150
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 (8317) - mean (118ms) : 115, 121
master - mean (119ms) : 115, 123
section Bailout
This PR (8317) - mean (119ms) : 116, 123
master - mean (120ms) : 117, 123
section CallTarget+Inlining+NGEN
This PR (8317) - mean (773ms) : 745, 802
master - mean (769ms) : 738, 800
FakeDbCommand (.NET 6)gantt
title Execution time (ms) FakeDbCommand (.NET 6)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8317) - mean (105ms) : 102, 109
master - mean (105ms) : 102, 108
section Bailout
This PR (8317) - mean (107ms) : 103, 110
master - mean (106ms) : 103, 108
section CallTarget+Inlining+NGEN
This PR (8317) - mean (753ms) : 719, 788
master - mean (749ms) : 716, 782
FakeDbCommand (.NET 8)gantt
title Execution time (ms) FakeDbCommand (.NET 8)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8317) - mean (110ms) : 93, 126
master - mean (104ms) : 101, 108
section Bailout
This PR (8317) - mean (106ms) : 103, 108
master - mean (106ms) : 102, 109
section CallTarget+Inlining+NGEN
This PR (8317) - mean (699ms) : 678, 721
master - mean (695ms) : 670, 719
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 (8317) - mean (195ms) : 190, 200
master - mean (194ms) : 191, 198
section Bailout
This PR (8317) - mean (197ms) : 195, 199
master - mean (198ms) : 194, 202
section CallTarget+Inlining+NGEN
This PR (8317) - mean (1,152ms) : 1108, 1197
master - mean (1,152ms) : 1106, 1199
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 (8317) - mean (277ms) : 272, 283
master - mean (279ms) : 275, 283
section Bailout
This PR (8317) - mean (278ms) : 274, 283
master - mean (278ms) : 274, 282
section CallTarget+Inlining+NGEN
This PR (8317) - mean (903ms) : 874, 932
master - mean (907ms) : 877, 937
HttpMessageHandler (.NET 6)gantt
title Execution time (ms) HttpMessageHandler (.NET 6)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8317) - mean (271ms) : 265, 278
master - mean (272ms) : 265, 278
section Bailout
This PR (8317) - mean (270ms) : 266, 275
master - mean (271ms) : 267, 275
section CallTarget+Inlining+NGEN
This PR (8317) - mean (940ms) : 904, 976
master - mean (946ms) : 911, 980
HttpMessageHandler (.NET 8)gantt
title Execution time (ms) HttpMessageHandler (.NET 8)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8317) - mean (271ms) : 265, 276
master - mean (269ms) : 264, 274
section Bailout
This PR (8317) - mean (271ms) : 267, 274
master - mean (269ms) : 264, 274
section CallTarget+Inlining+NGEN
This PR (8317) - mean (838ms) : 813, 864
master - mean (835ms) : 814, 857
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Summary of changes
Marks
SetTagAndSetTags_WhenCalledConcurrently_ShouldKeepSingleEntryPerKeyin TagsListTests as flaky .Reduces the concurrency pressure in the test by lowering the worker count from 8 to 4.
Shortens the amount of work per worker by lowering iterationsPerWorker from 2_000 to 1_000.
Reason for change
The test can time out on saturated CI agents even when the underlying TagsList behavior is correct.
The test should still exercise concurrent updates, but with a lower resource footprint to reduce false negatives.
Implementation details
Applied Flaky attribute and reduced the stress level enough to preserve concurrent execution while avoiding unnecessary thread contention on busy agents.
Test coverage
`Datadog.Trace.Tests.Tagging.TagsListTests.SetTagAndSetTags_WhenCalledConcurrently_ShouldKeepSingleEntryPerKey"