Skip to content

Is vxsort with workstation GC a common scenario? #84749

@MichalStrehovsky

Description

@MichalStrehovsky

We currently enable VXSORT in GC under following ifdefs:

https://github.com/dotnet/runtime/blob/6875ba02dbde6477abe16f0863348e617cc03fcb/src/coreclr/gc/gc.cpp#L21-L25

I experimentally modified the ifdef by adding && defined(SERVER_GC). With that, the size of a selfcontained NativeAOT hello world went down by ~10%. We currently build two flavors for NativeAOT runtime - one with the server GC and one with the workstation GC. The server GC is opt in through the publicly documented ServerGarbageCollection MSBuild property and not the default.

VXSORT No VXSORT
Default 1.41 MB 1.30 MB
InvariantGlobalization 1.19 MB 1.08 MB

(It is likely the InvariantGlobalization case will be the default for projects created with dotnet new console -aot.)

This feels like a pretty good saving. The question is - would this be a compromise? Is having WKS GC with heaps large enough that we would use VXSORT a common scenario? We want to have comparable perf with Native AOT, but also size is one of the things we take seriously.

Cc @dotnet/gc @dotnet/ilc-contrib

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    Status

    No status

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions