Skip to content

.NET 10 P5 Runtime #9912

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

Open
wants to merge 2 commits into
base: dotnet10-p5
Choose a base branch
from
Open

.NET 10 P5 Runtime #9912

wants to merge 2 commits into from

Conversation

jamesmontemagno
Copy link
Member

No description provided.

@jamesmontemagno jamesmontemagno changed the title .NET 10 P5 Runtim .NET 10 P5 Runtime Jun 2, 2025
@amanasifkhalid
Copy link
Member

Added some JIT notes, along with the GC write barrier improvements on arm64. cc @dotnet/jit-contrib, @AndyAyersMS @kunalspathak I could use a fact check on these -- thanks!

Copy link
Member

@AndyAyersMS AndyAyersMS left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Runtime notes look good to me.


The .NET garbage collector (GC) is generational, meaning it separates live objects by age to improve collection performance. The GC collects younger generations more often under the assumption that long-lived objects are less likely to be unreferenced (or "dead") at any given time. However, suppose an old object starts referencing a young object; the GC needs to know it cannot collect the young object, but needing to scan older objects to collect a young object defeats the performance gains of a generational GC.

To solve this problem, the JIT inserts write barriers before object reference updates to keep the GC informed. On x64, the runtime can dynamically switch between write barrier implementations to balance write speeds and collection efficiency, depending on the GC's configuration. [dotnet/runtime #111636](https://github.com/dotnet/runtime/pull/111636) brings this functionality to ARM64 as well. In particular, the new default write barrier implementation on ARM64 handles GC regions more precisely, improving collection performance at slight expense to write barrier throughput: Our benchmarks show GC pause improvements from eight to over twenty percent with the new workstation GC defaults.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

with the new workstation GC defaults

It is also applicable even for server GC, not just workstation GC.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants