-
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
Several Arm64 regressions (benchmarks turned bimodal) #70024
Comments
Seems these benchmarks were stable since March and again came back to the bimodal behavior. |
Tagging subscribers to this area: @JulieLeeMSFT Issue DetailsRun Information
Regressions in System.Threading.Tests.Perf_Interlocked
Reprogit clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'System.Threading.Tests.Perf_Interlocked*' PayloadsHistogramSystem.Threading.Tests.Perf_Interlocked.CompareExchange_object_NoMatch
Description of detection logic
Description of detection logic
DocsProfiling workflow for dotnet/runtime repository
Regressions in System.Tests.Perf_String
Reprogit clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'System.Tests.Perf_String*' PayloadsHistogramSystem.Tests.Perf_String.TrimEnd(s: "Test")
Description of detection logic
Description of detection logic
Description of detection logic
Description of detection logic
Description of detection logic
Description of detection logic
Description of detection logic
Description of detection logic
Description of detection logic
Description of detection logic
DocsProfiling workflow for dotnet/runtime repository Run Information
Regressions in System.Collections.Tests.Perf_BitArray
Reprogit clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'System.Collections.Tests.Perf_BitArray*' PayloadsHistogramSystem.Collections.Tests.Perf_BitArray.BitArrayAnd(Size: 4)
Description of detection logic
Description of detection logic
Description of detection logic
Description of detection logic
DocsProfiling workflow for dotnet/runtime repository Run Information
Regressions in System.Tests.Perf_Byte
Reprogit clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'System.Tests.Perf_Byte*' PayloadsHistogramSystem.Tests.Perf_Byte.ToString(value: 0)
Description of detection logic
DocsProfiling workflow for dotnet/runtime repository Run Information
Regressions in System.Tests.Perf_UInt16
Reprogit clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'System.Tests.Perf_UInt16*' PayloadsHistogramSystem.Tests.Perf_UInt16.ToString(value: 0)
Description of detection logic
DocsProfiling workflow for dotnet/runtime repository Run Information
Regressions in XmlDocumentTests.XmlDocumentTests.Perf_XmlDocument
Reprogit clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'XmlDocumentTests.XmlDocumentTests.Perf_XmlDocument*' PayloadsHistogramXmlDocumentTests.XmlDocumentTests.Perf_XmlDocument.GetDocumentElement
Description of detection logic
DocsProfiling workflow for dotnet/runtime repository Run Information
Regressions in System.Tests.Perf_Int16
Reprogit clone https://github.com/dotnet/performance.git
py .\performance\scripts\benchmarks_ci.py -f net6.0 --filter 'System.Tests.Perf_Int16*' PayloadsHistogramSystem.Tests.Perf_Int16.ToString(value: 0)
Description of detection logic
DocsProfiling workflow for dotnet/runtime repository
|
Looking at the e86511e...fd4bff9, the only suspect I can think of is #69672 |
I've investigated these issues. The codegen with and without W^X enabled is identical in both the benchmarks and the method that calls the benchmarks in a loop. But I've noticed that at least some of the tests were returning managed references and the generated calling loop was calling a GC write barrier for the returned value. So I've tried to temporarily disable the part of the W^X changes to use a copy of write barriers in a block of allocated memory instead of modifying protection of the executable image of coreclr.dll. Interestingly, that completely fixed the regressions. So I have thought that maybe we end up allocating the memory for the barrier code too far from the jitted code and the write barrier call would need to use a less effective way of calling. However, I have found it was not the case, so the only thing I can think of is that the slightly different location of the barriers or the fact that they are now in shared memory is causing the differences. |
Run Information
Regressions in System.Threading.Tests.Perf_Interlocked
Test Report
Repro
Payloads
Baseline
Compare
Histogram
System.Threading.Tests.Perf_Interlocked.CompareExchange_object_NoMatch
Description of detection logic
Description of detection logic
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Regressions in System.Tests.Perf_String
Test Report
Repro
Payloads
Baseline
Compare
Histogram
System.Tests.Perf_String.TrimEnd(s: "Test")
Description of detection logic
Description of detection logic
Description of detection logic
Description of detection logic
Description of detection logic
Description of detection logic
Description of detection logic
Description of detection logic
Description of detection logic
Description of detection logic
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
Regressions in System.Collections.Tests.Perf_BitArray
Test Report
Repro
Payloads
Baseline
Compare
Histogram
System.Collections.Tests.Perf_BitArray.BitArrayAnd(Size: 4)
Description of detection logic
Description of detection logic
Description of detection logic
Description of detection logic
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
Regressions in System.Tests.Perf_Byte
Test Report
Repro
Payloads
Baseline
Compare
Histogram
System.Tests.Perf_Byte.ToString(value: 0)
Description of detection logic
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
Regressions in System.Tests.Perf_UInt16
Test Report
Repro
Payloads
Baseline
Compare
Histogram
System.Tests.Perf_UInt16.ToString(value: 0)
Description of detection logic
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
Regressions in XmlDocumentTests.XmlDocumentTests.Perf_XmlDocument
Test Report
Repro
Payloads
Baseline
Compare
Histogram
XmlDocumentTests.XmlDocumentTests.Perf_XmlDocument.GetDocumentElement
Description of detection logic
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
Run Information
Regressions in System.Tests.Perf_Int16
Test Report
Repro
Payloads
Baseline
Compare
Histogram
System.Tests.Perf_Int16.ToString(value: 0)
Description of detection logic
Docs
Profiling workflow for dotnet/runtime repository
Benchmarking workflow for dotnet/runtime repository
The text was updated successfully, but these errors were encountered: