-
Notifications
You must be signed in to change notification settings - Fork 4.9k
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
[mono][Perf] Disabled HAS_CUSTOM_BLOCKS causing regressions on MonoAOT, MonoInterpreter arm64 on 8/23/2024 12:30:35 PM #107308
Comments
The range for regression is 779baa6...6177a9f. I suspect that #106764 could be the cause... |
Tagging subscribers to this area: @steveisok, @lambdageek |
AnalysisI took a deeper look at what impact the #106764 had on Mono-related perf measurements. I compared the measurements on the end points of 631778a...6177a9f range, did a little bit of noise filtering and averaging to remove much of the noise and the outcome is: |diff| > 20% (improvements/regressions bigger than 20%) From both tables, it is apparent that x64 MonoJIT is the only clear winner of #106764. However, we didn't have arm64 MonoJIT setup in that time and it would be likely a "winner" as well based on very basic testing done in #107358 (comment). Both AOT and Interpreter took a notable hit in some microbenchmark measurements. Preliminary conclusionsIdeally, we would like to fix #106822 to gain the MonoJIT improvements and revert #106764 to eliminate regressions with other codegens. A quick fix would be to scope #106764 to only affect MonoJIT codegen but I'm unsure we are able to do that at this level. With the RC2 snap approaching, we might have to make a trade-off between MonoJIT improvements and AOT/Interpreter regressions if we are going to revert #106764 instead of fixing #106822. Another approach is to limit the change to x64 platform (#107358). The expected outcome would be:
What do you think? @steveisok @radekdoulik @vitek-karas @jkurdek @EgorBo @lambdageek @BrzVlad Be aware, that #106764 got backported to .NET 9, thus any fix we decide to implement should get backported as well. Note to the analysis
|
Based on my discussion with Matous I lean towards reverting the HAS_CUSTOM_BLOCKS change, basically we would get back to the state where everything except JIT doesn't see an impact, and JIT is slower. |
fix by revert #107558 |
Run Information
Regressions in System.Collections.CopyTo<Int32>
Test Report
Repro
General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md
Repro Steps
Prerequisites (Files either built locally (with build.(sh/cmd) or downloaded from payload above (if same system setup) (in this order))
runtime/artifacts
or build instructions: Libraries README args:-subset libs+libs.tests -rc release -configuration Release -arch $RunArch -framework net8.0
runtime/artifacts/bin/coreclr/$RunOS.$RunArch.Release
, build instructions: CoreCLR README args:-subset clr+libs -rc release -configuration Release -arch $RunArch -framework net8.0
runtime/artifacts/bin/mono/$RunOS.$RunArch.Release
, build instructions: MONO README args:-arch $RunArch -os $RunOS -s mono+libs+host+packs -c Release /p:CrossBuild=false /p:MonoLLVMUseCxx11Abi=false
Linux
Windows
System.Collections.CopyTo<Int32>.ReadOnlyMemory(Size: 2048)
ETL Files
Histogram
JIT Disasms
System.Collections.CopyTo<Int32>.Span(Size: 2048)
ETL Files
Histogram
JIT Disasms
System.Collections.CopyTo<Int32>.Memory(Size: 2048)
ETL Files
Histogram
JIT Disasms
System.Collections.CopyTo<Int32>.ReadOnlySpan(Size: 2048)
ETL Files
Histogram
JIT Disasms
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
Regressions in System.Memory.Span<Char>
Test Report
Repro
General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md
Repro Steps
Prerequisites (Files either built locally (with build.(sh/cmd) or downloaded from payload above (if same system setup) (in this order))
runtime/artifacts
or build instructions: Libraries README args:-subset libs+libs.tests -rc release -configuration Release -arch $RunArch -framework net8.0
runtime/artifacts/bin/coreclr/$RunOS.$RunArch.Release
, build instructions: CoreCLR README args:-subset clr+libs -rc release -configuration Release -arch $RunArch -framework net8.0
runtime/artifacts/bin/mono/$RunOS.$RunArch.Release
, build instructions: MONO README args:-arch $RunArch -os $RunOS -s mono+libs+host+packs -c Release /p:CrossBuild=false /p:MonoLLVMUseCxx11Abi=false
Linux
Windows
System.Memory.Span<Char>.Clear(Size: 512)
ETL Files
Histogram
JIT Disasms
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
Regressions in System.Memory.Span<Byte>
Test Report
Repro
General Docs link: https://github.com/dotnet/performance/blob/main/docs/benchmarking-workflow-dotnet-runtime.md
Repro Steps
Prerequisites (Files either built locally (with build.(sh/cmd) or downloaded from payload above (if same system setup) (in this order))
runtime/artifacts
or build instructions: Libraries README args:-subset libs+libs.tests -rc release -configuration Release -arch $RunArch -framework net8.0
runtime/artifacts/bin/coreclr/$RunOS.$RunArch.Release
, build instructions: CoreCLR README args:-subset clr+libs -rc release -configuration Release -arch $RunArch -framework net8.0
runtime/artifacts/bin/mono/$RunOS.$RunArch.Release
, build instructions: MONO README args:-arch $RunArch -os $RunOS -s mono+libs+host+packs -c Release /p:CrossBuild=false /p:MonoLLVMUseCxx11Abi=false
Linux
Windows
System.Memory.Span<Byte>.Clear(Size: 512)
ETL Files
Histogram
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: