runtime: CoreFX tests work 3x time slower on arm64 than on arm32.
Out arm64 corefx jobs are usually failing with timeouts: example.
It happens because most tests work very slow (significantly slower than on arm32, on arm32 the job takes ~3 hours, on arm64 fails with 6 hours timeout).
I have tested it locally and got the same result, for example:
arm32
Z:\_\fxArm\artifacts\bin\tests\System.ComponentModel.Annotations.Tests\netcoreapp-Windows_NT-Release-arm>call Z:\_\fxArm\artifacts\bin\testhost\netcoreapp-Windows_NT-Release-arm\dotnet.exe xunit.console.dll System.ComponentModel.Annotations.Tests.dll -xml testResults.xml -notrait Benchmark=true -notrait category=nonnetcoreapptests -notrait category=nonwindowstests -notrait category=IgnoreForCI -notrait category=OuterLoop -notrait category=failing -verbose -method System.ComponentModel.DataAnnotations.Tests.RangeAttributeTests.DotDecimalExtremaAndInvalidValuesInvariantParse -parallel none
xUnit.net Console Runner v2.4.1-pre.build.4059 (32-bit .NET Core 4.6.27308.0)
Discovering: System.ComponentModel.Annotations.Tests (method display = ClassAndMethod, method display options = None)
Discovered: System.ComponentModel.Annotations.Tests (found 1 of 351 test case)
Starting: System.ComponentModel.Annotations.Tests (parallel test collections = off, max threads = 8)
System.ComponentModel.DataAnnotations.Tests.RangeAttributeTests.DotDecimalExtremaAndInvalidValuesInvariantParse(type: typeof(decimal), min: "1.0", max: "3.0", value: "9.0") [STARTING]
System.ComponentModel.DataAnnotations.Tests.RangeAttributeTests.DotDecimalExtremaAndInvalidValuesInvariantParse(type: typeof(decimal), min: "1.0", max: "3.0", value: "9.0")
[FINISHED] Time: 1.6501653s
and
arm64
Z:\_\fx\artifacts\bin\tests\System.ComponentModel.Annotations.Tests\netcoreapp-Windows_NT-Release-arm64>call %WORKSPACE%\_\fx\artifacts\bin\testhost\netcoreapp-Windows_NT-Release-arm64\dotnet.exe xunit.console.dll System.ComponentModel.Annotations.Tests.dll -xml testResults.xml -notrait Benchmark=true -notrait category=nonnetcoreapptests -notrait category=nonwindowstests -notrait category=IgnoreForCI -notrait category=OuterLoop -notrait category=failing -verbose -method System.ComponentModel.DataAnnotations.Tests.RangeAttributeTests.DotDecimalExtremaAndInvalidValuesInvariantParse -parallel none
xUnit.net Console Runner v2.4.1-pre.build.4059 (64-bit .NET Core 4.6.27308.0)
Discovering: System.ComponentModel.Annotations.Tests (method display = ClassAndMethod, method display options = None)
Discovered: System.ComponentModel.Annotations.Tests (found 1 of 351 test case)
Starting: System.ComponentModel.Annotations.Tests (parallel test collections = off, max threads = 8)
System.ComponentModel.DataAnnotations.Tests.RangeAttributeTests.DotDecimalExtremaAndInvalidValuesInvariantParse(type: typeof(decimal), min: "1.0", max: "3.0", value: "9.0") [STARTING]
System.ComponentModel.DataAnnotations.Tests.RangeAttributeTests.DotDecimalExtremaAndInvalidValuesInvariantParse(type: typeof(decimal), min: "1.0", max: "3.0", value: "9.0")
[FINISHED] Time: 4.7277696s
so 1.6s against 4.7s and the result is stable (TieredCompilation=0, parallel=none, local runs were made on cobalt3)
Based on JittedMethods I see that on arm64 we compile methods that we do not compile on arm32: 50 of ILStubClass::IL_STUB_InstantiatingStub; 18 of ILStubClass::IL_STUB_UnboxingStub;
Does this problem look familiar to anybody? @dotnet/jit-contrib @dotnet/arm64-contrib
About this issue
- Original URL
- State: closed
- Created 5 years ago
- Comments: 18 (18 by maintainers)
We really should get to the bottom of this… @sandreenko can you share out your profiles?