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

.NET 6.0 Update #118

Open
welly87 opened this issue Aug 13, 2022 · 6 comments
Open

.NET 6.0 Update #118

welly87 opened this issue Aug 13, 2022 · 6 comments

Comments

@welly87
Copy link

welly87 commented Aug 13, 2022

Hi @JPWatson

I try to upgrade to netstandard and netcore3.1 to net6.0 then i run IpcThroughput

here's the result before upgrading

Duration 1,000ms - 10,062,930 messages - 322,013,760 bytes, GC0 0, GC1 0, GC2 0
Duration 1,000ms - 10,063,976 messages - 322,047,232 bytes, GC0 0, GC1 0, GC2 0
Duration 1,000ms - 10,065,513 messages - 322,096,416 bytes, GC0 0, GC1 0, GC2 0
Duration 1,000ms - 10,057,301 messages - 321,833,632 bytes, GC0 0, GC1 0, GC2 0
Duration 1,000ms - 10,057,799 messages - 321,849,568 bytes, GC0 0, GC1 0, GC2 0
Duration 1,000ms - 10,060,503 messages - 321,936,096 bytes, GC0 0, GC1 0, GC2 0
Duration 1,000ms - 10,062,570 messages - 322,002,240 bytes, GC0 0, GC1 0, GC2 0
Duration 1,000ms - 10,062,352 messages - 321,995,264 bytes, GC0 0, GC1 0, GC2 0
Duration 1,000ms - 10,059,734 messages - 321,911,488 bytes, GC0 0, GC1 0, GC2 0

then after upgrading

Duration 1,000ms - 9,474,969 messages - 303,199,008 bytes, GC0 0, GC1 0, GC2 0
Duration 1,000ms - 9,474,044 messages - 303,169,408 bytes, GC0 0, GC1 0, GC2 0
Duration 1,000ms - 9,471,702 messages - 303,094,464 bytes, GC0 0, GC1 0, GC2 0
Duration 1,000ms - 9,473,014 messages - 303,136,448 bytes, GC0 0, GC1 0, GC2 0
Duration 1,000ms - 9,475,162 messages - 303,205,184 bytes, GC0 0, GC1 0, GC2 0
Duration 1,000ms - 9,474,305 messages - 303,177,760 bytes, GC0 0, GC1 0, GC2 0
Duration 1,000ms - 9,432,768 messages - 301,848,576 bytes, GC0 0, GC1 0, GC2 0
Duration 1,000ms - 9,465,044 messages - 302,881,408 bytes, GC0 0, GC1 0, GC2 0
Duration 1,000ms - 9,467,925 messages - 302,973,600 bytes, GC0 0, GC1 0, GC2 0
Duration 1,000ms - 9,468,866 messages - 303,003,712 bytes, GC0 0, GC1 0, GC2 0

The environment i use is Amazon Linux 2022 on Graviton3 (ARM Neoverse V1) AWS c7g.

Looks weird. Will try to find out. It's also resulting the same stuff even after i try to disable/enable PGO and Tiered Compilation.

  1. Is that why you don't upgrade the dotnet and still use it for old .NET version?
  2. seems currently it's windows only? I might send pull request for Linux if that's interest you

Cheers

@welly87
Copy link
Author

welly87 commented Aug 13, 2022

btw, after trying brute force for JIT runtime parameters finally arrived with this env var 🤣

export DOTNET_TieredPGO=1
export DOTNET_TieredCompilation=1

now i got better result i gues😄

Duration 1,000ms - 10,210,707 messages - 326,742,624 bytes, GC0 0, GC1 0, GC2 0
Duration 1,000ms - 10,210,836 messages - 326,746,752 bytes, GC0 0, GC1 0, GC2 0
Duration 1,000ms - 10,211,970 messages - 326,783,040 bytes, GC0 0, GC1 0, GC2 0
Duration 1,000ms - 10,212,156 messages - 326,788,992 bytes, GC0 0, GC1 0, GC2 0
Duration 1,000ms - 10,209,112 messages - 326,691,584 bytes, GC0 0, GC1 0, GC2 0
Duration 1,000ms - 10,207,238 messages - 326,631,616 bytes, GC0 0, GC1 0, GC2 0
Duration 1,000ms - 10,211,890 messages - 326,780,480 bytes, GC0 0, GC1 0, GC2 0
Duration 1,000ms - 10,211,263 messages - 326,760,416 bytes, GC0 0, GC1 0, GC2 0
Duration 1,000ms - 10,209,094 messages - 326,691,008 bytes, GC0 0, GC1 0, GC2 0
Duration 1,000ms - 10,210,013 messages - 326,720,416 bytes, GC0 0, GC1 0, GC2 0
Duration 1,000ms - 10,210,616 messages - 326,739,712 bytes, GC0 0, GC1 0, GC2 0

@JPWatson
Copy link
Collaborator

Interesting results. Thanks, @welly87.

Is that why you don't upgrade the dotnet and still use it for old .NET version?

Targetting the lowest common denominator from a library perspective so I hadn't got around to testing the latest and greatest .net version.

seems currently it's windows only? I might send pull request for Linux if that's interest you

We've got builds running on both windows and linux. What are you seeing that's windows only?

@welly87
Copy link
Author

welly87 commented Aug 13, 2022

basically first time i clone the repo and run IpcThrougput it show error

Samples/Adaptive.Aeron.Samples.IpcThroughput/bin/Release/net6.0/Adaptive.Aeron.Samples.IpcThroughput
Unhandled exception. System.NullReferenceException: Object reference not set to an instance of an object.
   at HardwareInformation.MachineInformationGatherer.GatherInformation(Boolean skipClockspeedTest, Boolean invalidateCache, ILogger`1 logger)
   at Adaptive.Aeron.Samples.Common.ComputerSpecifications..ctor() in /home/ec2-user/Aeron.NET/src/Samples/Adaptive.Aeron.Samples.Common/ComputerSpecifications.cs:line 51
   at Adaptive.Aeron.Samples.Common.ComputerSpecifications.Dump() in /home/ec2-user/Aeron.NET/src/Samples/Adaptive.Aeron.Samples.Common/ComputerSpecifications.cs:line 93
   at Adaptive.Aeron.Samples.IpcThroughput.IpcThroughput.Main() in /home/ec2-user/Aeron.NET/src/Samples/Adaptive.Aeron.Samples.IpcThroughput/IpcThroughput.cs:line 37

i try to restore the the nuget package but seems it can't resolve the HardwareInformation dependencies. It builds fine but have runtime errors. So i just commented this line

// ComputerSpecifications.Dump();

just to make the runtime happy....

@welly87
Copy link
Author

welly87 commented Aug 13, 2022

another stuff that seems funny is when running on dotnet3.1 on Amazon Linux 2022/Graviton3 seems that nunit runner throw SSL errors when dotnet test (even if it's there)

The active test run was aborted. Reason: Test host process crashed : No usable version of libssl was found


Test Run Aborted with error System.Exception: One or more errors occurred.
 ---> System.Exception: Unable to read beyond the end of the stream.
   at System.IO.BinaryReader.Read7BitEncodedInt()
   at System.IO.BinaryReader.ReadString()
   at Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.LengthPrefixCommunicationChannel.NotifyDataAvailable()
   at Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.TcpClientExtensions.MessageLoopAsync(TcpClient client, ICommunicationChannel channel, Action`1 errorHandler, CancellationToken cancellationToken)
   --- End of inner exception stack trace ---.

but after i upgrade to .NET 6.0 it's magically disappeared. The good stuff is .NET getting better and better each release.

Passed!  - Failed:     0, Passed:   225, Skipped:     0, Total:   225, Duration: 354 ms - /home/ec2-user/Aeron.NET/src/Adaptive.Agrona.Tests/bin/Debug/net6.0/Adaptive.Agrona.Tests.dll (net6.0)
  Adaptive.Aeron.Tests -> /home/ec2-user/Aeron.NET/src/Adaptive.Aeron.Tests/bin/Debug/net6.0/Adaptive.Aeron.Tests.dll
Test run for /home/ec2-user/Aeron.NET/src/Adaptive.Aeron.Tests/bin/Debug/net6.0/Adaptive.Aeron.Tests.dll (.NETCoreApp,Version=v6.0)
Microsoft (R) Test Execution Command Line Tool Version 17.3.0 (arm64)
Copyright (c) Microsoft Corporation.  All rights reserved.

Starting test execution, please wait...
A total of 1 test files matched the specified pattern.
  Skipped ShouldAllowConcludeOfClonedContext [< 1 ms]
  Skipped ShouldNotAllowConcludeMoreThanOnce [< 1 ms]
  Skipped BasicMessageTest [4 ms]

@welly87
Copy link
Author

welly87 commented Aug 13, 2022

I push my experiment here if you want to take a look

https://github.com/welly87/Aeron.NET/

and put some notes here

https://github.com/welly87/Aeron.NET/blob/master/graviton.md

@JPWatson
Copy link
Collaborator

Thanks, @welly87. I will take a look asap.

@JPWatson JPWatson changed the title Performance Degradation when upgrading to .NET 6.0 .NET 6.0 Update Aug 26, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants