dotnet / runtime

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

[Perf] Linux/x64: 5 Regressions on 1/11/2024 10:37:40 PM #97042

Open performanceautofiler[bot] opened 9 months ago

performanceautofiler[bot] commented 9 months ago

Run Information

Name Value
Architecture x64
OS ubuntu 22.04
Queue TigerUbuntu
Baseline 8f79b66e76081559f71969988037790d3e53367e
Compare 22ba7d607bb1d9caa0db9afcdc47eb5cef641fcb
Diff Diff
Configs CompilationMode:tiered, RunKind:micro

Regressions in Benchstone.BenchI.BenchE

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio
270.53 ms 373.51 ms 1.38 0.01 False

graph 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
python3 .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'Benchstone.BenchI.BenchE*'
### Payloads [Baseline]() [Compare]() ### Benchstone.BenchI.BenchE.Test #### 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 ubuntu 22.04
Queue TigerUbuntu
Baseline 8f79b66e76081559f71969988037790d3e53367e
Compare 22ba7d607bb1d9caa0db9afcdc47eb5cef641fcb
Diff Diff
Configs CompilationMode:tiered, RunKind:micro

Regressions in System.Text.RegularExpressions.Tests.Perf_Regex_Industry_RustLang_Sherlock

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio
54.28 ΞΌs 62.46 ΞΌs 1.15 0.02 True
51.16 ΞΌs 65.63 ΞΌs 1.28 0.35 False

graph graph 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
python3 .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Text.RegularExpressions.Tests.Perf_Regex_Industry_RustLang_Sherlock*'
### Payloads [Baseline]() [Compare]() ### System.Text.RegularExpressions.Tests.Perf_Regex_Industry_RustLang_Sherlock.Count(Pattern: "(?i)Sherlock Holmes", Options: Compiled) #### ETL Files #### Histogram #### JIT Disasms ### System.Text.RegularExpressions.Tests.Perf_Regex_Industry_RustLang_Sherlock.Count(Pattern: "Sherlock Holmes", Options: None) #### 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 ubuntu 22.04
Queue TigerUbuntu
Baseline 8f79b66e76081559f71969988037790d3e53367e
Compare 22ba7d607bb1d9caa0db9afcdc47eb5cef641fcb
Diff Diff
Configs CompilationMode:tiered, RunKind:micro

Regressions in System.Text.RegularExpressions.Tests.Perf_Regex_Common

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio
770.84 ns 863.70 ns 1.12 0.03 False

graph 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
python3 .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Text.RegularExpressions.Tests.Perf_Regex_Common*'
### Payloads [Baseline]() [Compare]() ### System.Text.RegularExpressions.Tests.Perf_Regex_Common.MatchesWord(Options: IgnoreCase, Compiled) #### 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 ubuntu 22.04
Queue TigerUbuntu
Baseline 8f79b66e76081559f71969988037790d3e53367e
Compare 22ba7d607bb1d9caa0db9afcdc47eb5cef641fcb
Diff Diff
Configs CompilationMode:tiered, RunKind:micro

Regressions in BenchmarksGame.FannkuchRedux_2

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio
124.26 ms 147.94 ms 1.19 0.00 True

graph 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
python3 .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'BenchmarksGame.FannkuchRedux_2*'
### Payloads [Baseline]() [Compare]() ### BenchmarksGame.FannkuchRedux_2.RunBench(n: 10, expectedSum: 73196) #### 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)
DrewScoggins commented 9 months ago

Range for the change is here https://github.com/dotnet/runtime/compare/4f64a8abc1e905295f230a7a62b0816154b757a8...e458d68a3879d968faa1da9de38876e23935c166

Could be https://github.com/dotnet/runtime/pull/96753, but not sure..

ghost commented 9 months ago

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

Issue Details
### Run Information Name | Value -- | -- Architecture | x64 OS | ubuntu 22.04 Queue | TigerUbuntu Baseline | [8f79b66e76081559f71969988037790d3e53367e](https://github.com/dotnet/runtime/commit/8f79b66e76081559f71969988037790d3e53367e) Compare | [22ba7d607bb1d9caa0db9afcdc47eb5cef641fcb](https://github.com/dotnet/runtime/commit/22ba7d607bb1d9caa0db9afcdc47eb5cef641fcb) Diff | [Diff](https://github.com/dotnet/runtime/compare/8f79b66e76081559f71969988037790d3e53367e...22ba7d607bb1d9caa0db9afcdc47eb5cef641fcb) Configs | CompilationMode:tiered, RunKind:micro ### Regressions in Benchstone.BenchI.BenchE Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio -- | -- | -- | -- | -- | -- | -- | -- | -- |
  • [Test - Duration of single invocation]()
  • πŸ“ - [Benchmark Source]()
  • [πŸ“ˆ - ADX Test Multi Config Graph]()
| 270.53 ms | 373.51 ms | 1.38 | 0.01 | False | | | ![graph]() [Test Report]() ### Repro General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md ```cmd git clone https://github.com/dotnet/performance.git python3 .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'Benchstone.BenchI.BenchE*' ```
### Payloads [Baseline]() [Compare]() ### Benchstone.BenchI.BenchE.Test #### 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 | ubuntu 22.04 Queue | TigerUbuntu Baseline | [8f79b66e76081559f71969988037790d3e53367e](https://github.com/dotnet/runtime/commit/8f79b66e76081559f71969988037790d3e53367e) Compare | [22ba7d607bb1d9caa0db9afcdc47eb5cef641fcb](https://github.com/dotnet/runtime/commit/22ba7d607bb1d9caa0db9afcdc47eb5cef641fcb) Diff | [Diff](https://github.com/dotnet/runtime/compare/8f79b66e76081559f71969988037790d3e53367e...22ba7d607bb1d9caa0db9afcdc47eb5cef641fcb) Configs | CompilationMode:tiered, RunKind:micro ### Regressions in System.Text.RegularExpressions.Tests.Perf_Regex_Industry_RustLang_Sherlock Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio -- | -- | -- | -- | -- | -- | -- | -- | -- |
  • [Count - Duration of single invocation]()
  • πŸ“ - [Benchmark Source]()
  • [πŸ“ˆ - ADX Test Multi Config Graph]()
| 54.28 ΞΌs | 62.46 ΞΌs | 1.15 | 0.02 | True | | | |
  • [Count - Duration of single invocation]()
  • πŸ“ - [Benchmark Source]()
  • [πŸ“ˆ - ADX Test Multi Config Graph]()
| 51.16 ΞΌs | 65.63 ΞΌs | 1.28 | 0.35 | False | | | ![graph]() ![graph]() [Test Report]() ### Repro General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md ```cmd git clone https://github.com/dotnet/performance.git python3 .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Text.RegularExpressions.Tests.Perf_Regex_Industry_RustLang_Sherlock*' ```
### Payloads [Baseline]() [Compare]() ### System.Text.RegularExpressions.Tests.Perf_Regex_Industry_RustLang_Sherlock.Count(Pattern: "(?i)Sherlock Holmes", Options: Compiled) #### ETL Files #### Histogram #### JIT Disasms ### System.Text.RegularExpressions.Tests.Perf_Regex_Industry_RustLang_Sherlock.Count(Pattern: "Sherlock Holmes", Options: None) #### 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 | ubuntu 22.04 Queue | TigerUbuntu Baseline | [8f79b66e76081559f71969988037790d3e53367e](https://github.com/dotnet/runtime/commit/8f79b66e76081559f71969988037790d3e53367e) Compare | [22ba7d607bb1d9caa0db9afcdc47eb5cef641fcb](https://github.com/dotnet/runtime/commit/22ba7d607bb1d9caa0db9afcdc47eb5cef641fcb) Diff | [Diff](https://github.com/dotnet/runtime/compare/8f79b66e76081559f71969988037790d3e53367e...22ba7d607bb1d9caa0db9afcdc47eb5cef641fcb) Configs | CompilationMode:tiered, RunKind:micro ### Regressions in System.Text.RegularExpressions.Tests.Perf_Regex_Common Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio -- | -- | -- | -- | -- | -- | -- | -- | -- |
  • [MatchesWord - Duration of single invocation]()
  • πŸ“ - [Benchmark Source]()
  • [πŸ“ˆ - ADX Test Multi Config Graph]()
| 770.84 ns | 863.70 ns | 1.12 | 0.03 | False | | | ![graph]() [Test Report]() ### Repro General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md ```cmd git clone https://github.com/dotnet/performance.git python3 .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Text.RegularExpressions.Tests.Perf_Regex_Common*' ```
### Payloads [Baseline]() [Compare]() ### System.Text.RegularExpressions.Tests.Perf_Regex_Common.MatchesWord(Options: IgnoreCase, Compiled) #### 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 | ubuntu 22.04 Queue | TigerUbuntu Baseline | [8f79b66e76081559f71969988037790d3e53367e](https://github.com/dotnet/runtime/commit/8f79b66e76081559f71969988037790d3e53367e) Compare | [22ba7d607bb1d9caa0db9afcdc47eb5cef641fcb](https://github.com/dotnet/runtime/commit/22ba7d607bb1d9caa0db9afcdc47eb5cef641fcb) Diff | [Diff](https://github.com/dotnet/runtime/compare/8f79b66e76081559f71969988037790d3e53367e...22ba7d607bb1d9caa0db9afcdc47eb5cef641fcb) Configs | CompilationMode:tiered, RunKind:micro ### Regressions in BenchmarksGame.FannkuchRedux_2 Benchmark | Baseline | Test | Test/Base | Test Quality | Edge Detector | Baseline IR | Compare IR | IR Ratio -- | -- | -- | -- | -- | -- | -- | -- | -- |
  • [RunBench - Duration of single invocation]()
  • πŸ“ - [Benchmark Source]()
  • [πŸ“ˆ - ADX Test Multi Config Graph]()
| 124.26 ms | 147.94 ms | 1.19 | 0.00 | True | | | ![graph]() [Test Report]() ### Repro General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md ```cmd git clone https://github.com/dotnet/performance.git python3 .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'BenchmarksGame.FannkuchRedux_2*' ```
### Payloads [Baseline]() [Compare]() ### BenchmarksGame.FannkuchRedux_2.RunBench(n: 10, expectedSum: 73196) #### 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)
Author: performanceautofiler[bot]
Assignees: -
Labels: `os-linux`, `arch-x64`, `area-CodeGen-coreclr`, `untriaged`, `runtime-coreclr`, `needs-area-label`
Milestone: -
jakobbotsch commented 2 months ago

All benchmarks returned to their old or better levels after the dates for this regression except for BenchmarksGame.FannkuchRedux_2, so that one I should look at.

jakobbotsch commented 2 months ago

Looks like we now try to hoist an array length expression out of a loop, but CSE does not pick up the hoist. So this is essentially an example of #92170. Seems like the best way to address this in 10.0 would be by improving the hoisting pass to take care of the rewrites itself.