dotnet / runtime

.NET is a cross-platform runtime for cloud, mobile, desktop, and IoT apps.
https://docs.microsoft.com/dotnet/core/
MIT License
15.44k stars 4.76k forks source link

[Perf] Windows/x64: Multiple (13) Regressions on 11/14/2024 12:52:44 AM #109967

Open performanceautofiler[bot] opened 6 days ago

performanceautofiler[bot] commented 6 days ago

Run Information

Name Value
Architecture x64
OS Windows 10.0.22621
Queue TigerWindows
Baseline d3d0fced1d125483d668bef176618e6a805cb2bd
Compare 1e98c05201e3c8df70b0334ce1d4a28cfe2b3c26
Diff Diff
Configs CompilationMode:tiered, RunKind:micro

Regressions in System.Collections.TryGetValueTrue<BigStruct, BigStruct>

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio
471.99 μs 517.46 μs 1.10 0.02 True
483.59 μs 521.79 μs 1.08 0.02 True
475.34 μs 527.66 μs 1.11 0.02 True
464.58 μs 513.10 μs 1.10 0.02 True
483.38 μs 538.79 μs 1.11 0.02 True

Test Report

Repro

General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Collections.TryGetValueTrue&lt;BigStruct, BigStruct&gt;*'
### System.Collections.TryGetValueTrue<BigStruct, BigStruct>.FrozenDictionaryOptimized(Size: 512) #### ETL Files #### Histogram #### JIT Disasms ### System.Collections.TryGetValueTrue<BigStruct, BigStruct>.Dictionary(Size: 512) #### ETL Files #### Histogram #### JIT Disasms ### System.Collections.TryGetValueTrue<BigStruct, BigStruct>.IDictionary(Size: 512) #### ETL Files #### Histogram #### JIT Disasms ### System.Collections.TryGetValueTrue<BigStruct, BigStruct>.ConcurrentDictionary(Size: 512) #### ETL Files #### Histogram #### JIT Disasms ### System.Collections.TryGetValueTrue<BigStruct, BigStruct>.ImmutableDictionary(Size: 512) #### ETL Files #### Histogram #### JIT Disasms ### Docs [Profiling workflow for dotnet/runtime repository](https://github.com/dotnet/performance/blob/master/docs/profiling-workflow-dotnet-runtime.md) [Benchmarking workflow for dotnet/runtime repository](https://github.com/dotnet/performance/blob/master/docs/benchmarking-workflow-dotnet-runtime.md)

Run Information

Name Value
Architecture x64
OS Windows 10.0.22621
Queue TigerWindows
Baseline d3d0fced1d125483d668bef176618e6a805cb2bd
Compare d3f4de1c7ab45eda70f2e084c3b47a38cfca8d74
Diff Diff
Configs CompilationMode:tiered, RunKind:micro

Regressions in System.Reflection.Invoke

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio
42.55 ns 47.16 ns 1.11 0.02 False
41.45 ns 45.79 ns 1.10 0.02 False
38.58 ns 43.33 ns 1.12 0.04 False
39.82 ns 44.31 ns 1.11 0.07 False

Test Report

Repro

General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Reflection.Invoke*'
### System.Reflection.Invoke.Field_Get_int #### ETL Files #### Histogram #### JIT Disasms ### System.Reflection.Invoke.Field_Get_struct #### ETL Files #### Histogram #### JIT Disasms ### System.Reflection.Invoke.Field_GetStatic_struct #### ETL Files #### Histogram #### JIT Disasms ### System.Reflection.Invoke.Field_GetStatic_int #### ETL Files #### Histogram #### JIT Disasms ### Docs [Profiling workflow for dotnet/runtime repository](https://github.com/dotnet/performance/blob/master/docs/profiling-workflow-dotnet-runtime.md) [Benchmarking workflow for dotnet/runtime repository](https://github.com/dotnet/performance/blob/master/docs/benchmarking-workflow-dotnet-runtime.md)

Run Information

Name Value
Architecture x64
OS Windows 10.0.22621
Queue TigerWindows
Baseline d3d0fced1d125483d668bef176618e6a805cb2bd
Compare d3f4de1c7ab45eda70f2e084c3b47a38cfca8d74
Diff Diff
Configs CompilationMode:tiered, RunKind:micro

Regressions in System.Diagnostics.Perf_Process

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio
102.88 ns 109.55 ns 1.06 0.00 False

Test Report

Repro

General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Diagnostics.Perf_Process*'
### System.Diagnostics.Perf_Process.GetCurrentProcess #### ETL Files #### Histogram #### JIT Disasms ### Docs [Profiling workflow for dotnet/runtime repository](https://github.com/dotnet/performance/blob/master/docs/profiling-workflow-dotnet-runtime.md) [Benchmarking workflow for dotnet/runtime repository](https://github.com/dotnet/performance/blob/master/docs/benchmarking-workflow-dotnet-runtime.md)

Run Information

Name Value
Architecture x64
OS Windows 10.0.22621
Queue TigerWindows
Baseline d3d0fced1d125483d668bef176618e6a805cb2bd
Compare d3f4de1c7ab45eda70f2e084c3b47a38cfca8d74
Diff Diff
Configs CompilationMode:tiered, RunKind:micro

Regressions in System.Tests.Perf_Array

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio
1.56 ms 1.77 ms 1.14 0.03 False
1.73 ms 1.95 ms 1.13 0.01 False
1.98 ms 2.24 ms 1.13 0.02 False

Test Report

Repro

General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md

git clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Tests.Perf_Array*'
### System.Tests.Perf_Array.ArrayRetrieve1D #### ETL Files #### Histogram #### JIT Disasms ### System.Tests.Perf_Array.ArrayRetrieve2D #### ETL Files #### Histogram #### JIT Disasms ### System.Tests.Perf_Array.ArrayRetrieve3D #### ETL Files #### Histogram #### JIT Disasms ### Docs [Profiling workflow for dotnet/runtime repository](https://github.com/dotnet/performance/blob/master/docs/profiling-workflow-dotnet-runtime.md) [Benchmarking workflow for dotnet/runtime repository](https://github.com/dotnet/performance/blob/master/docs/benchmarking-workflow-dotnet-runtime.md)
LoopedBard3 commented 6 days ago

Only one commit in the main regression range: https://github.com/dotnet/runtime/pull/104955 FYI @noahfalk. Is there any expectation of impact to microbenchmarks from this change? If not, may have disturbed optimization.

Related Regressions: Linux x64: https://github.com/dotnet/perf-autofiling-issues/issues/45061, https://github.com/dotnet/perf-autofiling-issues/issues/45032, https://github.com/dotnet/perf-autofiling-issues/issues/45060 Windows x64: https://github.com/dotnet/perf-autofiling-issues/issues/45042, https://github.com/dotnet/perf-autofiling-issues/issues/45070

dotnet-policy-service[bot] commented 5 days ago

Tagging subscribers to this area: @tommcdon See info in area-owners.md if you want to be subscribed.