-
Notifications
You must be signed in to change notification settings - Fork 4.6k
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
Getting vxsort working on Linux amd64 #98712
Conversation
Tagging subscribers to this area: @dotnet/gc Issue Detailsnull
|
6b2ebc9
to
7dd898f
Compare
1abc327
to
ce18101
Compare
The increase in crossgen2 binary size is 133 KB on linux-x64 and 115 KB on osx-x64 (without the last commit). If the performance gain is worth the additional size, can revert 786e0aa and adjust the size test:
1750 -> 1900 |
why is this affecting crossgen2 binary sizes? Is this changing any JIT behavior? |
This change does not change any JIT behavior, it is just that the code for vxsort has a non-trivial size. |
src/coreclr/nativeaot/BuildIntegration/Microsoft.NETCore.Native.Unix.targets
Show resolved
Hide resolved
7d93e88
to
55d788d
Compare
b555daf
to
fdcf757
Compare
src/coreclr/nativeaot/BuildIntegration/Microsoft.NETCore.Native.Unix.targets
Show resolved
Hide resolved
5d0404a
to
19e8e53
Compare
One more am11@0dd4664 (I was testing on arm64 machine earlier 😅). |
6b5b725
to
2046a84
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM, thank you!
Co-authored-by: Jan Vorlicek <janvorli@microsoft.com> Co-authored-by: Adeel Mujahid <3840695+am11@users.noreply.github.com>
2046a84
to
68cf2dd
Compare
…code` when building on debug mode on loongarch64/arm64/amd64-linux by clang<=13. Also delete `#ifndef FALLTHROUGH` block as dotnet#98336 added after dotnet#98712.
…code` when building on debug mode on loongarch64/arm64/amd64-linux by clang<14. Also delete `#ifndef FALLTHROUGH` block as dotnet#98336 added after dotnet#98712.
…code` when building on debug mode on loongarch64/arm64/amd64-linux by clang<14. Also delete `#ifndef FALLTHROUGH` block as dotnet#98336 added after dotnet#98712.
…code` when building on debug mode on loongarch64/arm64/amd64-linux by clang<14. Also delete `#ifndef FALLTHROUGH` block as dotnet#98336 added after dotnet#98712.
…code` when building on debug mode on loongarch64/arm64/amd64-linux by clang<14. Also delete `#ifndef FALLTHROUGH` block as dotnet#98336 added after dotnet#98712.
…code` when building on debug mode on loongarch64/arm64/amd64-linux by clang<14. Also delete `#ifndef FALLTHROUGH` block as dotnet#98336 added after dotnet#98712.
…code` when building on debug mode on loongarch64/arm64/amd64-linux by clang<14. Also delete `#ifndef FALLTHROUGH` block as dotnet#98336 added after dotnet#98712.
Co-authored-by: Jan Vorlicek <janvorli@microsoft.com> Co-authored-by: Adeel Mujahid <3840695+am11@users.noreply.github.com>
…code` (dotnet#100742) when building on debug mode on loongarch64/arm64/amd64-linux by clang<14. Also delete `#ifndef FALLTHROUGH` block as dotnet#98336 added after dotnet#98712.
This change make vxsort available for other x64 platforms other than Windows. Overall, the algorithm improved the pause time for ephemeral GCs by a few percents. Attached below are the numbers on Linux running GCPerfSim.
This change will increase binary size by a about 130k because VxSort is a lot of code. For NativeAOT, I chose to follow the Windows policy to enable it by default and provided the same opt-out.
It is also tested under Rosetta emulation to show that it will work even on machines without AVX instructions. Of course, VxSort will not be available there and we will use the introsort fallback.
Special thanks to @janvorli for helping with the compilation errors when I was stuck trying to fix them.
Summary