Skip to content
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] JIT Performance Regression, multiple benchmarks, 7 % to 909 % #44166

Closed
naricc opened this issue Nov 2, 2020 · 9 comments
Closed
Assignees
Labels
Milestone

Comments

@naricc
Copy link
Contributor

naricc commented Nov 2, 2020

This is a master issue to track a performance regression effecting several benchmarks that seem related.

The date range suggests that the cause is one of the commits in this range: 24d5043...7664a9a of which, only c723f5e is plausible.

These are the effected benchmarks on their auto-filed issues:



JIT
[Perf -20%] PerfLabTests.LowLevelPerf.GenericClassGenericStaticField
https://github.com/DrewScoggins/performance-2/issues/2887


[Perf -11%] PerfLabTests.LowLevelPerf.NewDelegateClassEmptyStaticFn 
https://github.com/DrewScoggins/performance-2/issues/2996

[Perf -18%] System.Threading.Tests.Perf_Lock.ReaderWriterLockSlimPerf 
DrewScoggins/performance-2#2709

[Perf -27%] System.Xml.Linq.Perf_XDocument.Create 
DrewScoggins/performance-2#2712

[Perf -9%] System.Tests.Perf_UInt16.ToString
DrewScoggins/performance-2#2707

[Perf -13%] Burgers.Test0 
DrewScoggins/performance-2#2995

[Perf -14%] System.Threading.Tasks.ValueTaskPerfTest.CreateAndAwait_FromYieldingAsyncMethod
DrewScoggins/performance-2#2703

[Perf -10%] System.Numerics.Tests.Perf_VectorConvert.Convert_uint_float
DrewScoggins/performance-2#2994

[Perf -12%] System.Threading.Channels.Tests.SpscUnboundedChannelPerfTests.PingPong
DrewScoggins/performance-2#2993

[Perf -13%] Devirtualization.Boxing.InterfaceTypeCheckAndCall
DrewScoggins/performance-2#2724

[Perf -12%] System.Threading.Tasks.Tests.Perf_AsyncMethods.SingleYieldMethodInvocation
DrewScoggins/performance-2#2992

[Perf -9%] System.Tests.Perf_Array.ArrayAssign3D 
DrewScoggins/performance-2#2991

DrewScoggins/performance-2#2715
[Perf -32%] System.Tests.Perf_Object.ctor 

[Perf -7%] Benchstone.BenchF.BenchMk2.Test 
DrewScoggins/performance-2#2990

[Perf -13%] System.Numerics.Tests.Perf_Vector3.SquareRootBenchmark
DrewScoggins/performance-2#2989

DrewScoggins/performance-2#2720
[Perf -15%] System.Threading.Channels.Tests.BoundedChannelPerfTests.PingPong

DrewScoggins/performance-2#2706
[Perf -193%] System.Threading.Tests.Perf_Timer.ShortScheduleAndDisposeWithFiringTimers

DrewScoggins/performance-2#2717
[Perf -9%] Benchstone.BenchF.Simpsn.Test

[Perf -6%] System.Memory.Constructors.ReadOnlySpanImplicitCastFromArraySeg
https://github.com/DrewScoggins/performance-2/issues/2988

[Perf -809%]

System.Threading.Tests.Perf_ThreadStatic.GetThreadStatic
https://github.com/DrewScoggins/performance-2/issues/2711



[Perf -9%] System.Net.Primitives.Tests.IPAddressPerformanceTests.Ctor_Bytes
DrewScoggins/performance-2#2987



[Perf -15%] Microsoft.Extensions.DependencyInjection.GetServiceIEnumerable.Transient
DrewScoggins/performance-2#2716


[Perf -17%] System.Numerics.Tests.Perf_Vector4.SquareRootBenchmark
https://github.com/DrewScoggins/performance-2/issues/2696



[Perf -7%] System.Collections.Tests.Perf_BitArray (2) 
https://github.com/DrewScoggins/performance-2/issues/2700

Interprter:


https://github.com/DrewScoggins/performance-2/issues/2887


[Perf -20%] PerfLabTests.LowLevelPerf.GenericClassGenericStaticField

@naricc naricc added the tenet-performance Performance related issue label Nov 2, 2020
@Dotnet-GitSync-Bot Dotnet-GitSync-Bot added the untriaged New issue has not been triaged by the area owner label Nov 2, 2020
@Dotnet-GitSync-Bot
Copy link
Collaborator

I couldn't figure out the best area label to add to this issue. If you have write-permissions please help me learn by adding exactly one area label.

@ghost
Copy link

ghost commented Nov 2, 2020

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

@naricc naricc removed the untriaged New issue has not been triaged by the area owner label Nov 2, 2020
@naricc
Copy link
Contributor Author

naricc commented Nov 2, 2020

@vargaz It looks like the change to building with cmake may be responsible for this regression, based on the dates.

@SamMonoRT SamMonoRT added this to the 6.0.0 milestone Nov 3, 2020
@vargaz vargaz self-assigned this Nov 3, 2020
@vargaz
Copy link
Contributor

vargaz commented Nov 4, 2020

What platform is this ?

@naricc
Copy link
Contributor Author

naricc commented Nov 4, 2020

@vargaz ubuntu x64

@vargaz
Copy link
Contributor

vargaz commented Nov 4, 2020

Can't reproduce this locally, a lot of these benchmarks are very simple, the first one is:
for (int i = 0; i < n_iter; i++)
GenericClass.aGenericStaticFieldT = 1;
which just gets compiled into a simple loop.

@vargaz
Copy link
Contributor

vargaz commented Nov 4, 2020

Can somebody reproduce this locally ?

@naricc
Copy link
Contributor Author

naricc commented Nov 9, 2020

@vargaz What is the issue with reproducing it? You were not able to run the benchmarks, or you did and it didn't repro? System.Threading.Tests.Perf_Timer.ShortScheduleAndDisposeWithFiringTimers seems like the biggest difference, so it should be the easiest to see, if it is a real issue.

@naricc
Copy link
Contributor Author

naricc commented Apr 7, 2021

I am not sure what cause this, but it seems to have resolved itself.

@naricc naricc closed this as completed Apr 7, 2021
@ghost ghost locked as resolved and limited conversation to collaborators May 7, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

No branches or pull requests

4 participants