Repository navigation
Regressions in System.Collections.CreateAddAndClear<Int32> #84029
Copy link
Copy link
Closed
Labels
Priority:2Work that is important, but not critical for the releaseWork that is important, but not critical for the releasearea-CodeGen-coreclrCLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMICLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI
Milestone
Description
Run Information
| Name | Value |
|---|---|
| Architecture | x64 |
| OS | alpine 3.15 |
| Queue | TigerAlpine |
| Baseline | 5318a311298226b3ec17c9b971551811a9374ce6 |
| Compare | 2d2528bbda1e618324a4bc5a2507747941c4bc88 |
| Diff | Diff |
| Configs | CompilationMode:tiered, RunKind:micro |
Regressions in System.Collections.CreateAddAndClear<Int32>
| Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio | Baseline ETL | Compare ETL |
|---|---|---|---|---|---|---|---|---|---|---|
| ConcurrentQueue - Duration of single invocation | 5.31 μs | 5.64 μs | 1.06 | 0.00 | True |
Repro
General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md
Payloads
git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Collections.CreateAddAndClear<Int32>*'Details
Payloads
Histogram
System.Collections.CreateAddAndClear<Int32>.ConcurrentQueue(Size: 512)
Description of detection logic
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsRegressionBase: Marked as regression because the compare was 5% greater than the baseline, and the value was not too small.
IsRegressionChecked: Marked as regression because the three check build points were 0.05 greater than the baseline.
IsRegressionWindowed: Marked as regression because 5.6422303047176205 > 5.57128995349662.
IsChangePoint: Marked as a change because one of 3/25/2023 10:49:06 AM, 3/28/2023 8:13:28 AM falls between 3/19/2023 2:30:51 PM and 3/28/2023 8:13:28 AM.
IsRegressionStdDev: Marked as regression because -138.62417101607124 (T) = (0 -5644.476112489088) / Math.Sqrt((80.97032060077886 / (42)) + (62.59883328608294 / (16))) is less than -2.0032407188469383 = MathNet.Numerics.Distributions.StudentT.InvCDF(0, 1, (42) + (16) - 2, .025) and -0.06309650261350963 = (5309.4672954080315 - 5644.476112489088) / 5309.4672954080315 is less than -0.05.
IsImprovementBase: Marked as not an improvement because the compare was not 5% less than the baseline, or the value was too small.
IsChangeEdgeDetector: Marked as regression because Edge Detector said so.
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
Priority:2Work that is important, but not critical for the releaseWork that is important, but not critical for the releasearea-CodeGen-coreclrCLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMICLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI
_1.png)
Activity
[-][Perf] Alpine/x64: 1 Regression on 3/25/2023 2:21:39 PM[/-][+]Regressions in System.Collections.CreateAddAndClear<Int32>[/+]EgorBo commentedon Mar 28, 2023
cc @jakobbotsch it seems to be #83814
EgorBo commentedon Mar 28, 2023
Same here dotnet/perf-autofiling-issues#14496
jakobbotsch commentedon Mar 28, 2023
So seems this is from 65889d1 but that one should be arm64 only, so that's odd.
jakobbotsch commentedon Jul 5, 2023
I do see a diff that looks related to #83814:
System.Collections.CreateAddAndClear<Int32>.ConcurrentQueue(Size: 512)Hot functions:
System.Collections.Concurrent.ConcurrentQueueSegment`1.TryEnqueue(Tier-1)System.Collections.Concurrent.ConcurrentQueueSegment`1..ctor(Tier-1)System.Collections.CreateAddAndClear`1.ConcurrentQueue(Tier-1)System.Collections.Concurrent.ConcurrentQueue`1.EnqueueSlow(Tier-1)Diffs
[System.Private.CoreLib]System.Collections.Concurrent.ConcurrentQueueSegment`1[System.Int32].TryEnqueue(!0)This is win-x64 codegen though, am trying to collect linux-x64 codegen now. Not sure why alpine x64 would be the only impacted config either, I see no similar regression in Ubuntu 18.04 x64.
jakobbotsch commentedon Jul 5, 2023
The linux-x64 codegen looks the same as the above, with slightly different registers.
Since this is a minor regression and we don't observe it on other x64 perf lab runs I don't think there is anything actionable to do here... certainly adjusting CSE heuristics at this point does not seem desirable. So will close this.