Aeron.NET icon indicating copy to clipboard operation
Aeron.NET copied to clipboard

.NET 6.0 Update

Open welly87 opened this issue 3 years ago • 6 comments

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 avatar Aug 13 '22 04:08 welly87

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

welly87 avatar Aug 13 '22 05:08 welly87

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?

JPWatson avatar Aug 13 '22 07:08 JPWatson

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 avatar Aug 13 '22 10:08 welly87

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 avatar Aug 13 '22 10:08 welly87

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

welly87 avatar Aug 13 '22 10:08 welly87

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

JPWatson avatar Aug 18 '22 10:08 JPWatson