Skip to content

[Perf] Windows/x64: 5 Regressions on 2/3/2024 12:19:35 AM #98044

Open

Description

@performanceautofiler

Run Information

Name Value
Architecture x64
OS Windows 10.0.18362
Queue TigerWindows
Baseline 1a2f095fb212dcbf394f01122b9f317b7cc70fdb
Compare 2361c00717a54a5dd9b0cf727102d64f783855b9
Diff Diff
Configs CompilationMode:tiered, RunKind:micro

Regressions in System.Globalization.Tests.StringEquality

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio
761.52 ns 973.83 ns 1.28 0.00 True
1.19 μs 1.28 μs 1.08 0.01 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
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'System.Globalization.Tests.StringEquality*'
Details

Payloads

Baseline
Compare

System.Globalization.Tests.StringEquality.Compare_Same(Count: 1024, Options: (en-US, OrdinalIgnoreCase))

ETL Files

Histogram

JIT Disasms

System.Globalization.Tests.StringEquality.Compare_Same_Upper(Count: 1024, Options: (en-US, OrdinalIgnoreCase))

ETL Files

Histogram

JIT Disasms

Docs

Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository


Run Information

Name Value
Architecture x64
OS Windows 10.0.18362
Queue TigerWindows
Baseline 1a2f095fb212dcbf394f01122b9f317b7cc70fdb
Compare 2361c00717a54a5dd9b0cf727102d64f783855b9
Diff Diff
Configs CompilationMode:tiered, RunKind:micro

Regressions in Benchmark.GetChildKeysTests

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio
14.99 ms 16.20 ms 1.08 0.02 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
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'Benchmark.GetChildKeysTests*'
Details

Payloads

Baseline
Compare

Benchmark.GetChildKeysTests.AddChainedConfigurationEmpty

ETL Files

Histogram

JIT Disasms

Docs

Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository


Run Information

Name Value
Architecture x64
OS Windows 10.0.18362
Queue TigerWindows
Baseline 1a2f095fb212dcbf394f01122b9f317b7cc70fdb
Compare 2361c00717a54a5dd9b0cf727102d64f783855b9
Diff Diff
Configs CompilationMode:tiered, RunKind:micro

Regressions in Span.Sorting

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio
8.54 μs 16.21 μs 1.90 0.45 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
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'Span.Sorting*'
Details

Payloads

Baseline
Compare

Span.Sorting.QuickSortArray(Size: 512)

ETL Files

Histogram

JIT Disasms

Docs

Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository


Run Information

Name Value
Architecture x64
OS Windows 10.0.18362
Queue TigerWindows
Baseline 1a2f095fb212dcbf394f01122b9f317b7cc70fdb
Compare 2361c00717a54a5dd9b0cf727102d64f783855b9
Diff Diff
Configs CompilationMode:tiered, RunKind:micro

Regressions in Benchstone.BenchI.EightQueens

Benchmark Baseline Test Test/Base Test Quality Edge Detector Baseline IR Compare IR IR Ratio
1.80 μs 2.04 μs 1.13 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
py .\performance\scripts\benchmarks_ci.py -f net8.0 --filter 'Benchstone.BenchI.EightQueens*'
Details

Payloads

Baseline
Compare

Benchstone.BenchI.EightQueens.Test

ETL Files

Histogram

JIT Disasms

Docs

Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository

Activity

  1. removed
    untriagedNew issue has not been triaged by the area owner
    on Feb 6, 2024
  2. ghost added
    needs-area-labelAn area label is needed to ensure this gets routed to the appropriate area owners
    on Feb 6, 2024
  3. ghost added
    untriagedNew issue has not been triaged by the area owner
    on Feb 6, 2024
  4. DrewScoggins commented on Feb 6, 2024

    @DrewScoggins
    Member

    Diff here: 207e1fb...df0778d

    Nothing is jumping out as the culprit, but there were a few JIT changes.

  5. DrewScoggins commented on Feb 6, 2024

    @DrewScoggins
    Member

    Linux related regressions: dotnet/perf-autofiling-issues#28564

  6. added
    area-CodeGen-coreclrCLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI
    on Feb 7, 2024
  7. removed
    needs-area-labelAn area label is needed to ensure this gets routed to the appropriate area owners
    on Feb 13, 2024
  8. BruceForstall commented on Feb 13, 2024

    @BruceForstall
    Contributor

    Maybe #97722?

  9. 1 remaining item

  10. ghost removed
    untriagedNew issue has not been triaged by the area owner
    on Feb 13, 2024
  11. added
    Priority:2Work that is important, but not critical for the release
    on May 8, 2024
  12. AndyAyersMS commented on Jul 22, 2024

    @AndyAyersMS
    Member

    EightQueens seems to be an intel-only regression, and then only on some cases, and two other regressions since.

    image

    Most all the time is in TryMe.

    Codegen from baseline to latest shows RBO did one jump thread (from #97722), different layout, and an IV widening.

    There are a lot of spilled CSEs here in both baseline and latest codegen, but more spill occurrences in latest. Possibly the one extra jump thread by RBO has created more critical edges and so made life more difficult for LSRA.

    Final flow graphs. You can clearly see the impact of RPO layout at least...

    MAIN BASELINE
  13. AndyAyersMS commented on Aug 6, 2024

    @AndyAyersMS
    Member

    Span.Sorting.QuickSortArray(Size: 512)

    Regressions here were fixed by RPO layout:

    image

  14. AndyAyersMS commented on Aug 6, 2024

    @AndyAyersMS
    Member

    System.Globalization.Tests.StringEquality.Compare_Same(Count: 1024, Options: (en-US, OrdinalIgnoreCase))

    Ditto for this benchmark

    image

  15. AndyAyersMS commented on Aug 6, 2024

    @AndyAyersMS
    Member

    System.Globalization.Tests.StringEquality.Compare_Same_Upper(Count: 1024, Options: (en-US, OrdinalIgnoreCase))

    image

    Same as the two above, recovers with later changes.

  16. AndyAyersMS commented on Aug 6, 2024

    @AndyAyersMS
    Member

    Benchmark.GetChildKeysTests.AddChainedConfigurationEmpty

    Ditto like the above

    image

  17. AndyAyersMS commented on Aug 6, 2024

    @AndyAyersMS
    Member

    So the only persisted regression is in 8 queens, and that one seems to be the increase in resolution moves by the allocator.

    Going to move this to .NET 10 as there's no simple fix available now.

  18. modified the milestones: 9.0.0, 10.0.0 on Aug 6, 2024
  19. removed
    Priority:2Work that is important, but not critical for the release
    on Aug 6, 2024
  20. AndyAyersMS commented on Feb 25, 2025

    @AndyAyersMS
    Member

    Likely won't get to this in .NET 10 either

  21. modified the milestones: 10.0.0, Future on Feb 25, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions