-
Notifications
You must be signed in to change notification settings - Fork 4.8k
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
statically linking GC PAL on linux #76985
Conversation
The GC PAL will be used for both coreclr and standalone GC on linux
Tagging subscribers to this area: @dotnet/gc Issue DetailsThe GC PAL will be used for both coreclr and standalone GC on linux. FIxes #72684. Have validated that it reduces the working set for unbounded memory limits by ~70mb for a vanilla webapi app.
|
@mangod9 I would make the change for all OSes, not just Unix. |
@@ -673,13 +673,6 @@ Initialize( | |||
goto CLEANUP15; | |||
} | |||
|
|||
if (FALSE == NUMASupportInitialize()) |
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.
assume its fine to remove the Numa initialization from the pal, since its now being handled with the gc_unix pal.
@@ -513,6 +513,8 @@ BYTE * ClrVirtualAllocWithinRange(const BYTE *pMinAddr, | |||
return pResult; | |||
} | |||
|
|||
#ifdef HOST_WINDOWS | |||
|
|||
//****************************************************************************** | |||
// NumaNodeInfo |
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.
Delete the NumaNodeInfo
class?
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.
yeah guess there is more cleanup required here, will do as part of a separate PR.
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.
I see that you are keeping the VM version of the current PAL for Windows under ifdefs. Is there a problem with using the GC PAL on Windows?
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.
there shouldnt be an issue with moving windows too, just needs a some more wrangling. Also need to check with @Maoni0 that all numa stuff is handled appropriately in gcenv.windows
263a2f0
to
dccc8c6
Compare
/azp run runtime |
Azure Pipelines successfully started running 1 pipeline(s). |
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
@mangod9 Could this decrease working set in TE benchmarks (only on Linux)? it's something from this range: ee41716...7b5ab35 |
yeah, that was one of the main reasons for the change. |
* statically linking GC PAL The GC PAL will be used for both coreclr and standalone GC on linux * fixing arm64 and nativeaot build breaks * macos build break and reducing renaming. * trying to remove numa support from PAL * one more rename to resolve MacOS break * delete pal numa code. * Adding missing madvise in GC PAL * added missing MADV_DONTDUMP calls. * CR feedback * undo (long long) cast in GetMemoryStatus * only invoke madvise on success.
* statically linking GC PAL The GC PAL will be used for both coreclr and standalone GC on linux * fixing arm64 and nativeaot build breaks * macos build break and reducing renaming. * trying to remove numa support from PAL * one more rename to resolve MacOS break * delete pal numa code. * Adding missing madvise in GC PAL * added missing MADV_DONTDUMP calls. * CR feedback * undo (long long) cast in GetMemoryStatus * only invoke madvise on success.
Yes, the PAL did a bunch of extra useless work before this change. |
The GC PAL will be used for both coreclr and standalone GC on linux. FIxes #72684.
Have validated that it reduces the working set for unbounded memory limits by ~70mb for a vanilla webapi app.