-
Notifications
You must be signed in to change notification settings - Fork 4.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Regressions in System.Globalization.Tests.StringSearch #91938
Comments
Windows x64 Intel and AMD both are stable-regressed. Transfering. |
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch Issue DetailsRun Information
Regressions in System.Globalization.Tests.StringSearch
ReproGeneral 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.StringSearch*' PayloadsSystem.Globalization.Tests.StringSearch.LastIndexOf_Word_NotFound(Options: (en-US, OrdinalIgnoreCase, False))ETL FilesHistogramDescription of detection logic
JIT DisasmsDocsProfiling workflow for dotnet/runtime repository
|
@AndyAyersMS Can you investigate? |
Commit range is f5881e5...a7d4b4b Seems like a static PGO update lead to this one. |
At least locally this improved and then re-regressed
|
Need to do more digging but certainly looks like a layout issue. Raw sample attribution
Note in particular the heavy sample count at the end of the .NET 9 code -- seems like a hot loop has gotten widely spread out. This is an R2R'd method so went through Tier-1 instr and some some of its callees either will lack PGO or will have static PGO. If we disable R2R we see 9.0 do pretty well.. OutlierMode=DontRemove EnvironmentVariables=DOTNET_ReadyToRun=0 PowerPlanMode=00000000-0000-0000-0000-000000000000
So part of the issue here is lost profile data from Tier-1 instr (in particular we lose dynamic pgo for inlinees). The "fix" for this is to instrument the inlinees as well. |
I don't think there is an easy fix here. Because of our strategy for instrumenting R2R'd code we will miss some important details about behavior of inlinees. #44372 tracks gathering profile data for inlinees when we are profiling and optimizing. |
Run Information
Regressions in System.Globalization.Tests.StringSearch
Test Report
Repro
General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md
Payloads
Baseline
Compare
System.Globalization.Tests.StringSearch.LastIndexOf_Word_NotFound(Options: (en-US, OrdinalIgnoreCase, False))
ETL Files
Histogram
Description of detection logic
JIT Disasms
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
The text was updated successfully, but these errors were encountered: