.NET 6.0 Update
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.
- Is that why you don't upgrade the dotnet and still use it for old .NET version?
- seems currently it's windows only? I might send pull request for Linux if that's interest you
Cheers
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
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?
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....
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]
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
Thanks, @welly87. I will take a look asap.