Implement GetTotalPauseDuration and GC counters#50
Conversation
|
|
||
| size_t blockingDuration = (GCToOSInterface::QueryPerformanceCounter() - blockingStart); | ||
| m_CurrentGcInfo->m_pauseDurations[1] = blockingDuration / m_perfCounterTicksPerMicro; | ||
| m_gcDurationMillis[0] += blockingDuration / m_perfCounterTicksPerMicro; |
There was a problem hiding this comment.
Also - m_gcDurationMillis is used in GetLastGCDuration. That reports the duration of just the last GC.
For the accumulating pause counter we need another set of counters. I think we only need to track gen1 and gen2 though.
That would be consistent with not reporting gen0 in GetLastGCDuration.
It should be [m_condemnedGeneration] when accumulating durations - it can be 1 or 2 here.
The reason for m_pauseDurations[1] is that every collection may have multiple pauses - [0] is the blocking phase, [1] is the optional prep for concurrent stage.
|
I've added support for I will need to re-review the math and check what comes out when API is used - to be sure no millisecond/microsecond mismatches and the like. |
* Implement GC counters * Introduce a separate set of counters * GCMemoryInfo.PauseTimePercentage --------- Co-authored-by: vsadov <8218165+VSadov@users.noreply.github.com>
* Implement GC counters * Introduce a separate set of counters * GCMemoryInfo.PauseTimePercentage --------- Co-authored-by: vsadov <8218165+VSadov@users.noreply.github.com>
* Implement GC counters * Introduce a separate set of counters * GCMemoryInfo.PauseTimePercentage --------- Co-authored-by: vsadov <8218165+VSadov@users.noreply.github.com>
allocator escape mark in write barriers scan current stack SatoriObject + some cleanup Lisp2 style sliding compaction in allocating region marking bitmap localgc ok Fixes after Rebasing SatoriQueue MarkChunk DrainMarkQueue misc fixes Finalization Collectible types Dependent Handles various fixes (disabled gen0 sweep/compact until recursive escape is implemented) Disable some tests (mostly nyi GC apis) Libs tests pass tests pass with Gen0 sweep/compact few fixes syncblocks escape the backpointed obj added gen num and ForEachObjectRef with range, ForEachPage, barrier, card size and initialization fixes disabled few clr tests (mostly for NYI GC APIs) Card table functional. generational write barriers in C asm barrier Generational GC works various TODOs Move Satori files after rebase. Gen2 compaction (full) Gen1 compaction (ephemeral only) Conservative GC Various TODOs and cleanup Decommit fix after rebase concurrent stack roots and drain Added SatoriHandlePartitioner Separated card mark and clean passes ToggleWriteBarrier helping with handles and cards concurrent sweep Various TODOs a few tweaks and cleanups Parallel marking. More Parallel scan all stacks in concurrent mark defer returning to allocator remaining parallel stages disable a few tests that always fail locally and in the baseline as well silence a spurious assert some TODOs fix ups after rebase Apple Silicon (OSX ARM64) break build on not yet supported platforms allow reusing nonempty regions demotion gen2 -> gen1 conservative mode allow reusing for gen0 reenable concurrent GC fix after merge Linux x64 OSX x64 Various TODOs Windows ARM64 Linux ARM64 background trim (coalesce and decommit) lic GetTotalAllocatedBytes GC Start/End/Triggered events GC.GetTotalMemory GetLastGCStartTime Config keys noisy tests a few fixes noisy test addressed various TODOs Fix after rebase deleted m_finalizationScanCompleteRegions clean finalizable AppendUnsafe push to queues helpers extracted IsRelocatible introduced DoNotSweep concurrent plan Low Latency mode. more TODOs and some fixes accessibility WorkList and SpinLock some renames and member reorder bucket tweaks lock tweak min budget do not wait 1 msec in suspension. comments readme revert unnecessary changes readme tweak SpinLock fix Some more diagnostics GCHeapStats ETW event a few fixes GCAllocationTick ETW event disable incompatible test Update README.md fix build after rebase onto 7.0 switch to nonblocking ditctionary some improvements in concurrent dictionary use IsReferenceOrContainsReferences fixes after rebase fixes after rebase for 8.0 fixes after rebasing disabled incompatible tests tweaked a test fix stuff up after rebase Immortal Allocations (VSadov#30) * can allocate * recycler aware of 3rd gen * barriers are gen3 aware * zeroing and linking * some tweaks to immortal alloc * Update README.md Fix after rebase Support for NativeAOT (VSadov#31) Fixes after rebasing Fixes after rebasing fix after rebasing Shared nursery regions, more TODOs (VSadov#32) * HelpOnce improvements * Shared Pinned * Individual promotion and some TODOs * Shared Large * Shared regular * more TODOs fix after rebasing Concurrent cleaning of cards dirtied by incremental marking. (VSadov#33) * Concurrent card cleaning on all platforms * larger cache * update year * use ld_classic in ILC build and in build integration * Missing checkbox Write barrier improvements and some clean ups (VSadov#34) * Write Barrier updates for arm64 * some allocator and relocation tweaks * dictionary fixes * disable test and stress nuisances Low Latency Mode TODOs (VSadov#35) * Gate and new Lock, also GC thread spin/rate * barrier tweaks * GetGCSafeMethodTable * Suspend SpinWait tweak * GetMemoryInfo throttling * collection heuristics * avail ram * recycler and env changes * barriers * bulk copy * gc spin tweak * TryPopWithTryEnter * small commit is back * m_helperWoken * AskForHelp * tweaks * do stacks last * only lock changes * AllocAligned * misalign TLABs * prefer concurrent in LowLat mode * worklist * spin in TryEnter * rationalizing mark chunk size * shorter card groups * a few todos * Gen0 Gen1 switches * gcTHP switch * tweak conc block time * more conservative trimming * fixes for OSX * fix for arm64 * tweak helper counts * round up * helper --> worker Arm64 tweaks (VSadov#36) * tweaks * Gen2Target * trimmer pause * style and comment fixes Improve pacing (VSadov#37) * pacing tweaks and fixes * 2025 * RelocatedToUnchecked * cmp when checking same region * coments Concurrent Mark completion and Card Cleaning improvements (VSadov#38) * simpler ShouldDoConcurrent * m_ccHelpersNum * more pacing tweaks * comments and todos fix after rebase Concurrent phase completion improvements. (VSadov#39) Implement GCMemoryInfo.TotalCommittedBytes (VSadov#40) Fix scenarios around committing the page map (VSadov#49) * Make page map reservation and commit more precise. * fix for arm64 * better comment * one more comment Report collection counts non-inclusively (VSadov#51) Revert "Report collection counts non-inclusively (VSadov#51)" (VSadov#52) This reverts commit 50b175b. Implement GetTotalPauseDuration and GC counters (VSadov#50) * Implement GC counters * Introduce a separate set of counters * GCMemoryInfo.PauseTimePercentage --------- Co-authored-by: vsadov <8218165+VSadov@users.noreply.github.com> fixes after rebasing Make ByRefWriteBarrier to use the same call convention as in standard GC for R2R compatibility. (VSadov#56) Reduce pacing frequency. (VSadov#57) * DOTNET_gcPace knob * less frequent alloc pacing fixes (VSadov#58) short circuit gen0 collection if surviving set is too large (VSadov#61) Improve efficiency on some finalization code paths (VSadov#63) * Finalization queue improvements * test related fixes Inject `{SatoriGC, true}` into config values. (VSadov#67) * Inject {SatoriGC, true} into config values. * DOTNET_gcForceCompact Improving compaction heuristics + Some other tweaks while looking at compaction. (VSadov#74) fix osx-x64 build with new Apple compilers
noop GC allocator escape mark in write barriers scan current stack SatoriObject + some cleanup Lisp2 style sliding compaction in allocating region marking bitmap localgc ok Fixes after Rebasing SatoriQueue MarkChunk DrainMarkQueue misc fixes Finalization Collectible types Dependent Handles various fixes (disabled gen0 sweep/compact until recursive escape is implemented) Disable some tests (mostly nyi GC apis) Libs tests pass tests pass with Gen0 sweep/compact few fixes syncblocks escape the backpointed obj added gen num and ForEachObjectRef with range, ForEachPage, barrier, card size and initialization fixes disabled few clr tests (mostly for NYI GC APIs) Card table functional. generational write barriers in C asm barrier Generational GC works various TODOs Move Satori files after rebase. Gen2 compaction (full) Gen1 compaction (ephemeral only) Conservative GC Various TODOs and cleanup Decommit fix after rebase concurrent stack roots and drain Added SatoriHandlePartitioner Separated card mark and clean passes ToggleWriteBarrier helping with handles and cards concurrent sweep Various TODOs a few tweaks and cleanups Parallel marking. More Parallel scan all stacks in concurrent mark defer returning to allocator remaining parallel stages disable a few tests that always fail locally and in the baseline as well silence a spurious assert some TODOs fix ups after rebase Apple Silicon (OSX ARM64) break build on not yet supported platforms allow reusing nonempty regions demotion gen2 -> gen1 conservative mode allow reusing for gen0 reenable concurrent GC fix after merge Linux x64 OSX x64 Various TODOs Windows ARM64 Linux ARM64 background trim (coalesce and decommit) lic GetTotalAllocatedBytes GC Start/End/Triggered events GC.GetTotalMemory GetLastGCStartTime Config keys noisy tests a few fixes noisy test addressed various TODOs Fix after rebase deleted m_finalizationScanCompleteRegions clean finalizable AppendUnsafe push to queues helpers extracted IsRelocatible introduced DoNotSweep concurrent plan Low Latency mode. more TODOs and some fixes accessibility WorkList and SpinLock some renames and member reorder bucket tweaks lock tweak min budget do not wait 1 msec in suspension. comments readme revert unnecessary changes readme tweak SpinLock fix Some more diagnostics GCHeapStats ETW event a few fixes GCAllocationTick ETW event disable incompatible test Update README.md fix build after rebase onto 7.0 switch to nonblocking ditctionary some improvements in concurrent dictionary use IsReferenceOrContainsReferences fixes after rebase fixes after rebase for 8.0 fixes after rebasing disabled incompatible tests tweaked a test fix stuff up after rebase Immortal Allocations (VSadov#30) * can allocate * recycler aware of 3rd gen * barriers are gen3 aware * zeroing and linking * some tweaks to immortal alloc * Update README.md Fix after rebase Support for NativeAOT (VSadov#31) Fixes after rebasing Fixes after rebasing fix after rebasing Shared nursery regions, more TODOs (VSadov#32) * HelpOnce improvements * Shared Pinned * Individual promotion and some TODOs * Shared Large * Shared regular * more TODOs fix after rebasing Concurrent cleaning of cards dirtied by incremental marking. (VSadov#33) * Concurrent card cleaning on all platforms * larger cache * update year * use ld_classic in ILC build and in build integration * Missing checkbox Write barrier improvements and some clean ups (VSadov#34) * Write Barrier updates for arm64 * some allocator and relocation tweaks * dictionary fixes * disable test and stress nuisances Low Latency Mode TODOs (VSadov#35) * Gate and new Lock, also GC thread spin/rate * barrier tweaks * GetGCSafeMethodTable * Suspend SpinWait tweak * GetMemoryInfo throttling * collection heuristics * avail ram * recycler and env changes * barriers * bulk copy * gc spin tweak * TryPopWithTryEnter * small commit is back * m_helperWoken * AskForHelp * tweaks * do stacks last * only lock changes * AllocAligned * misalign TLABs * prefer concurrent in LowLat mode * worklist * spin in TryEnter * rationalizing mark chunk size * shorter card groups * a few todos * Gen0 Gen1 switches * gcTHP switch * tweak conc block time * more conservative trimming * fixes for OSX * fix for arm64 * tweak helper counts * round up * helper --> worker Arm64 tweaks (VSadov#36) * tweaks * Gen2Target * trimmer pause * style and comment fixes Improve pacing (VSadov#37) * pacing tweaks and fixes * 2025 * RelocatedToUnchecked * cmp when checking same region * coments Concurrent Mark completion and Card Cleaning improvements (VSadov#38) * simpler ShouldDoConcurrent * m_ccHelpersNum * more pacing tweaks * comments and todos fix after rebase Concurrent phase completion improvements. (VSadov#39) Implement GCMemoryInfo.TotalCommittedBytes (VSadov#40) Fix scenarios around committing the page map (VSadov#49) * Make page map reservation and commit more precise. * fix for arm64 * better comment * one more comment Report collection counts non-inclusively (VSadov#51) Revert "Report collection counts non-inclusively (VSadov#51)" (VSadov#52) This reverts commit 50b175b. Implement GetTotalPauseDuration and GC counters (VSadov#50) * Implement GC counters * Introduce a separate set of counters * GCMemoryInfo.PauseTimePercentage --------- Co-authored-by: vsadov <8218165+VSadov@users.noreply.github.com> fixes after rebasing Make ByRefWriteBarrier to use the same call convention as in standard GC for R2R compatibility. (VSadov#56) Reduce pacing frequency. (VSadov#57) * DOTNET_gcPace knob * less frequent alloc pacing fixes (VSadov#58) short circuit gen0 collection if surviving set is too large (VSadov#61) Improve efficiency on some finalization code paths (VSadov#63) * Finalization queue improvements * test related fixes Inject `{SatoriGC, true}` into config values. (VSadov#67) * Inject {SatoriGC, true} into config values. * DOTNET_gcForceCompact Improving compaction heuristics + Some other tweaks while looking at compaction. (VSadov#74) fix osx-x64 build with new Apple compilers
noop GC allocator escape mark in write barriers scan current stack SatoriObject + some cleanup Lisp2 style sliding compaction in allocating region marking bitmap localgc ok Fixes after Rebasing SatoriQueue MarkChunk DrainMarkQueue misc fixes Finalization Collectible types Dependent Handles various fixes (disabled gen0 sweep/compact until recursive escape is implemented) Disable some tests (mostly nyi GC apis) Libs tests pass tests pass with Gen0 sweep/compact few fixes syncblocks escape the backpointed obj added gen num and ForEachObjectRef with range, ForEachPage, barrier, card size and initialization fixes disabled few clr tests (mostly for NYI GC APIs) Card table functional. generational write barriers in C asm barrier Generational GC works various TODOs Move Satori files after rebase. Gen2 compaction (full) Gen1 compaction (ephemeral only) Conservative GC Various TODOs and cleanup Decommit fix after rebase concurrent stack roots and drain Added SatoriHandlePartitioner Separated card mark and clean passes ToggleWriteBarrier helping with handles and cards concurrent sweep Various TODOs a few tweaks and cleanups Parallel marking. More Parallel scan all stacks in concurrent mark defer returning to allocator remaining parallel stages disable a few tests that always fail locally and in the baseline as well silence a spurious assert some TODOs fix ups after rebase Apple Silicon (OSX ARM64) break build on not yet supported platforms allow reusing nonempty regions demotion gen2 -> gen1 conservative mode allow reusing for gen0 reenable concurrent GC fix after merge Linux x64 OSX x64 Various TODOs Windows ARM64 Linux ARM64 background trim (coalesce and decommit) lic GetTotalAllocatedBytes GC Start/End/Triggered events GC.GetTotalMemory GetLastGCStartTime Config keys noisy tests a few fixes noisy test addressed various TODOs Fix after rebase deleted m_finalizationScanCompleteRegions clean finalizable AppendUnsafe push to queues helpers extracted IsRelocatible introduced DoNotSweep concurrent plan Low Latency mode. more TODOs and some fixes accessibility WorkList and SpinLock some renames and member reorder bucket tweaks lock tweak min budget do not wait 1 msec in suspension. comments readme revert unnecessary changes readme tweak SpinLock fix Some more diagnostics GCHeapStats ETW event a few fixes GCAllocationTick ETW event disable incompatible test Update README.md fix build after rebase onto 7.0 switch to nonblocking ditctionary some improvements in concurrent dictionary use IsReferenceOrContainsReferences fixes after rebase fixes after rebase for 8.0 fixes after rebasing disabled incompatible tests tweaked a test fix stuff up after rebase Immortal Allocations (VSadov#30) * can allocate * recycler aware of 3rd gen * barriers are gen3 aware * zeroing and linking * some tweaks to immortal alloc * Update README.md Fix after rebase Support for NativeAOT (VSadov#31) Fixes after rebasing Fixes after rebasing fix after rebasing Shared nursery regions, more TODOs (VSadov#32) * HelpOnce improvements * Shared Pinned * Individual promotion and some TODOs * Shared Large * Shared regular * more TODOs fix after rebasing Concurrent cleaning of cards dirtied by incremental marking. (VSadov#33) * Concurrent card cleaning on all platforms * larger cache * update year * use ld_classic in ILC build and in build integration * Missing checkbox Write barrier improvements and some clean ups (VSadov#34) * Write Barrier updates for arm64 * some allocator and relocation tweaks * dictionary fixes * disable test and stress nuisances Low Latency Mode TODOs (VSadov#35) * Gate and new Lock, also GC thread spin/rate * barrier tweaks * GetGCSafeMethodTable * Suspend SpinWait tweak * GetMemoryInfo throttling * collection heuristics * avail ram * recycler and env changes * barriers * bulk copy * gc spin tweak * TryPopWithTryEnter * small commit is back * m_helperWoken * AskForHelp * tweaks * do stacks last * only lock changes * AllocAligned * misalign TLABs * prefer concurrent in LowLat mode * worklist * spin in TryEnter * rationalizing mark chunk size * shorter card groups * a few todos * Gen0 Gen1 switches * gcTHP switch * tweak conc block time * more conservative trimming * fixes for OSX * fix for arm64 * tweak helper counts * round up * helper --> worker Arm64 tweaks (VSadov#36) * tweaks * Gen2Target * trimmer pause * style and comment fixes Improve pacing (VSadov#37) * pacing tweaks and fixes * 2025 * RelocatedToUnchecked * cmp when checking same region * coments Concurrent Mark completion and Card Cleaning improvements (VSadov#38) * simpler ShouldDoConcurrent * m_ccHelpersNum * more pacing tweaks * comments and todos fix after rebase Concurrent phase completion improvements. (VSadov#39) Implement GCMemoryInfo.TotalCommittedBytes (VSadov#40) Fix scenarios around committing the page map (VSadov#49) * Make page map reservation and commit more precise. * fix for arm64 * better comment * one more comment Report collection counts non-inclusively (VSadov#51) Revert "Report collection counts non-inclusively (VSadov#51)" (VSadov#52) This reverts commit 50b175b. Implement GetTotalPauseDuration and GC counters (VSadov#50) * Implement GC counters * Introduce a separate set of counters * GCMemoryInfo.PauseTimePercentage --------- Co-authored-by: vsadov <8218165+VSadov@users.noreply.github.com> fixes after rebasing Make ByRefWriteBarrier to use the same call convention as in standard GC for R2R compatibility. (VSadov#56) Reduce pacing frequency. (VSadov#57) * DOTNET_gcPace knob * less frequent alloc pacing fixes (VSadov#58) short circuit gen0 collection if surviving set is too large (VSadov#61) Improve efficiency on some finalization code paths (VSadov#63) * Finalization queue improvements * test related fixes Inject `{SatoriGC, true}` into config values. (VSadov#67) * Inject {SatoriGC, true} into config values. * DOTNET_gcForceCompact Improving compaction heuristics + Some other tweaks while looking at compaction. (VSadov#74) fix osx-x64 build with new Apple compilers
noop GC allocator escape mark in write barriers scan current stack SatoriObject + some cleanup Lisp2 style sliding compaction in allocating region marking bitmap localgc ok Fixes after Rebasing SatoriQueue MarkChunk DrainMarkQueue misc fixes Finalization Collectible types Dependent Handles various fixes (disabled gen0 sweep/compact until recursive escape is implemented) Disable some tests (mostly nyi GC apis) Libs tests pass tests pass with Gen0 sweep/compact few fixes syncblocks escape the backpointed obj added gen num and ForEachObjectRef with range, ForEachPage, barrier, card size and initialization fixes disabled few clr tests (mostly for NYI GC APIs) Card table functional. generational write barriers in C asm barrier Generational GC works various TODOs Move Satori files after rebase. Gen2 compaction (full) Gen1 compaction (ephemeral only) Conservative GC Various TODOs and cleanup Decommit fix after rebase concurrent stack roots and drain Added SatoriHandlePartitioner Separated card mark and clean passes ToggleWriteBarrier helping with handles and cards concurrent sweep Various TODOs a few tweaks and cleanups Parallel marking. More Parallel scan all stacks in concurrent mark defer returning to allocator remaining parallel stages disable a few tests that always fail locally and in the baseline as well silence a spurious assert some TODOs fix ups after rebase Apple Silicon (OSX ARM64) break build on not yet supported platforms allow reusing nonempty regions demotion gen2 -> gen1 conservative mode allow reusing for gen0 reenable concurrent GC fix after merge Linux x64 OSX x64 Various TODOs Windows ARM64 Linux ARM64 background trim (coalesce and decommit) lic GetTotalAllocatedBytes GC Start/End/Triggered events GC.GetTotalMemory GetLastGCStartTime Config keys noisy tests a few fixes noisy test addressed various TODOs Fix after rebase deleted m_finalizationScanCompleteRegions clean finalizable AppendUnsafe push to queues helpers extracted IsRelocatible introduced DoNotSweep concurrent plan Low Latency mode. more TODOs and some fixes accessibility WorkList and SpinLock some renames and member reorder bucket tweaks lock tweak min budget do not wait 1 msec in suspension. comments readme revert unnecessary changes readme tweak SpinLock fix Some more diagnostics GCHeapStats ETW event a few fixes GCAllocationTick ETW event disable incompatible test Update README.md fix build after rebase onto 7.0 switch to nonblocking ditctionary some improvements in concurrent dictionary use IsReferenceOrContainsReferences fixes after rebase fixes after rebase for 8.0 fixes after rebasing disabled incompatible tests tweaked a test fix stuff up after rebase Immortal Allocations (VSadov#30) * can allocate * recycler aware of 3rd gen * barriers are gen3 aware * zeroing and linking * some tweaks to immortal alloc * Update README.md Fix after rebase Support for NativeAOT (VSadov#31) Fixes after rebasing Fixes after rebasing fix after rebasing Shared nursery regions, more TODOs (VSadov#32) * HelpOnce improvements * Shared Pinned * Individual promotion and some TODOs * Shared Large * Shared regular * more TODOs fix after rebasing Concurrent cleaning of cards dirtied by incremental marking. (VSadov#33) * Concurrent card cleaning on all platforms * larger cache * update year * use ld_classic in ILC build and in build integration * Missing checkbox Write barrier improvements and some clean ups (VSadov#34) * Write Barrier updates for arm64 * some allocator and relocation tweaks * dictionary fixes * disable test and stress nuisances Low Latency Mode TODOs (VSadov#35) * Gate and new Lock, also GC thread spin/rate * barrier tweaks * GetGCSafeMethodTable * Suspend SpinWait tweak * GetMemoryInfo throttling * collection heuristics * avail ram * recycler and env changes * barriers * bulk copy * gc spin tweak * TryPopWithTryEnter * small commit is back * m_helperWoken * AskForHelp * tweaks * do stacks last * only lock changes * AllocAligned * misalign TLABs * prefer concurrent in LowLat mode * worklist * spin in TryEnter * rationalizing mark chunk size * shorter card groups * a few todos * Gen0 Gen1 switches * gcTHP switch * tweak conc block time * more conservative trimming * fixes for OSX * fix for arm64 * tweak helper counts * round up * helper --> worker Arm64 tweaks (VSadov#36) * tweaks * Gen2Target * trimmer pause * style and comment fixes Improve pacing (VSadov#37) * pacing tweaks and fixes * 2025 * RelocatedToUnchecked * cmp when checking same region * coments Concurrent Mark completion and Card Cleaning improvements (VSadov#38) * simpler ShouldDoConcurrent * m_ccHelpersNum * more pacing tweaks * comments and todos fix after rebase Concurrent phase completion improvements. (VSadov#39) Implement GCMemoryInfo.TotalCommittedBytes (VSadov#40) Fix scenarios around committing the page map (VSadov#49) * Make page map reservation and commit more precise. * fix for arm64 * better comment * one more comment Report collection counts non-inclusively (VSadov#51) Revert "Report collection counts non-inclusively (VSadov#51)" (VSadov#52) This reverts commit 50b175b. Implement GetTotalPauseDuration and GC counters (VSadov#50) * Implement GC counters * Introduce a separate set of counters * GCMemoryInfo.PauseTimePercentage --------- Co-authored-by: vsadov <8218165+VSadov@users.noreply.github.com> fixes after rebasing Make ByRefWriteBarrier to use the same call convention as in standard GC for R2R compatibility. (VSadov#56) Reduce pacing frequency. (VSadov#57) * DOTNET_gcPace knob * less frequent alloc pacing fixes (VSadov#58) short circuit gen0 collection if surviving set is too large (VSadov#61) Improve efficiency on some finalization code paths (VSadov#63) * Finalization queue improvements * test related fixes Inject `{SatoriGC, true}` into config values. (VSadov#67) * Inject {SatoriGC, true} into config values. * DOTNET_gcForceCompact Improving compaction heuristics + Some other tweaks while looking at compaction. (VSadov#74) fix osx-x64 build with new Apple compilers
noop GC allocator escape mark in write barriers scan current stack SatoriObject + some cleanup Lisp2 style sliding compaction in allocating region marking bitmap localgc ok Fixes after Rebasing SatoriQueue MarkChunk DrainMarkQueue misc fixes Finalization Collectible types Dependent Handles various fixes (disabled gen0 sweep/compact until recursive escape is implemented) Disable some tests (mostly nyi GC apis) Libs tests pass tests pass with Gen0 sweep/compact few fixes syncblocks escape the backpointed obj added gen num and ForEachObjectRef with range, ForEachPage, barrier, card size and initialization fixes disabled few clr tests (mostly for NYI GC APIs) Card table functional. generational write barriers in C asm barrier Generational GC works various TODOs Move Satori files after rebase. Gen2 compaction (full) Gen1 compaction (ephemeral only) Conservative GC Various TODOs and cleanup Decommit fix after rebase concurrent stack roots and drain Added SatoriHandlePartitioner Separated card mark and clean passes ToggleWriteBarrier helping with handles and cards concurrent sweep Various TODOs a few tweaks and cleanups Parallel marking. More Parallel scan all stacks in concurrent mark defer returning to allocator remaining parallel stages disable a few tests that always fail locally and in the baseline as well silence a spurious assert some TODOs fix ups after rebase Apple Silicon (OSX ARM64) break build on not yet supported platforms allow reusing nonempty regions demotion gen2 -> gen1 conservative mode allow reusing for gen0 reenable concurrent GC fix after merge Linux x64 OSX x64 Various TODOs Windows ARM64 Linux ARM64 background trim (coalesce and decommit) lic GetTotalAllocatedBytes GC Start/End/Triggered events GC.GetTotalMemory GetLastGCStartTime Config keys noisy tests a few fixes noisy test addressed various TODOs Fix after rebase deleted m_finalizationScanCompleteRegions clean finalizable AppendUnsafe push to queues helpers extracted IsRelocatible introduced DoNotSweep concurrent plan Low Latency mode. more TODOs and some fixes accessibility WorkList and SpinLock some renames and member reorder bucket tweaks lock tweak min budget do not wait 1 msec in suspension. comments readme revert unnecessary changes readme tweak SpinLock fix Some more diagnostics GCHeapStats ETW event a few fixes GCAllocationTick ETW event disable incompatible test Update README.md fix build after rebase onto 7.0 switch to nonblocking ditctionary some improvements in concurrent dictionary use IsReferenceOrContainsReferences fixes after rebase fixes after rebase for 8.0 fixes after rebasing disabled incompatible tests tweaked a test fix stuff up after rebase Immortal Allocations (VSadov#30) * can allocate * recycler aware of 3rd gen * barriers are gen3 aware * zeroing and linking * some tweaks to immortal alloc * Update README.md Fix after rebase Support for NativeAOT (VSadov#31) Fixes after rebasing Fixes after rebasing fix after rebasing Shared nursery regions, more TODOs (VSadov#32) * HelpOnce improvements * Shared Pinned * Individual promotion and some TODOs * Shared Large * Shared regular * more TODOs fix after rebasing Concurrent cleaning of cards dirtied by incremental marking. (VSadov#33) * Concurrent card cleaning on all platforms * larger cache * update year * use ld_classic in ILC build and in build integration * Missing checkbox Write barrier improvements and some clean ups (VSadov#34) * Write Barrier updates for arm64 * some allocator and relocation tweaks * dictionary fixes * disable test and stress nuisances Low Latency Mode TODOs (VSadov#35) * Gate and new Lock, also GC thread spin/rate * barrier tweaks * GetGCSafeMethodTable * Suspend SpinWait tweak * GetMemoryInfo throttling * collection heuristics * avail ram * recycler and env changes * barriers * bulk copy * gc spin tweak * TryPopWithTryEnter * small commit is back * m_helperWoken * AskForHelp * tweaks * do stacks last * only lock changes * AllocAligned * misalign TLABs * prefer concurrent in LowLat mode * worklist * spin in TryEnter * rationalizing mark chunk size * shorter card groups * a few todos * Gen0 Gen1 switches * gcTHP switch * tweak conc block time * more conservative trimming * fixes for OSX * fix for arm64 * tweak helper counts * round up * helper --> worker Arm64 tweaks (VSadov#36) * tweaks * Gen2Target * trimmer pause * style and comment fixes Improve pacing (VSadov#37) * pacing tweaks and fixes * 2025 * RelocatedToUnchecked * cmp when checking same region * coments Concurrent Mark completion and Card Cleaning improvements (VSadov#38) * simpler ShouldDoConcurrent * m_ccHelpersNum * more pacing tweaks * comments and todos fix after rebase Concurrent phase completion improvements. (VSadov#39) Implement GCMemoryInfo.TotalCommittedBytes (VSadov#40) Fix scenarios around committing the page map (VSadov#49) * Make page map reservation and commit more precise. * fix for arm64 * better comment * one more comment Report collection counts non-inclusively (VSadov#51) Revert "Report collection counts non-inclusively (VSadov#51)" (VSadov#52) This reverts commit 50b175b. Implement GetTotalPauseDuration and GC counters (VSadov#50) * Implement GC counters * Introduce a separate set of counters * GCMemoryInfo.PauseTimePercentage --------- Co-authored-by: vsadov <8218165+VSadov@users.noreply.github.com> fixes after rebasing Make ByRefWriteBarrier to use the same call convention as in standard GC for R2R compatibility. (VSadov#56) Reduce pacing frequency. (VSadov#57) * DOTNET_gcPace knob * less frequent alloc pacing fixes (VSadov#58) short circuit gen0 collection if surviving set is too large (VSadov#61) Improve efficiency on some finalization code paths (VSadov#63) * Finalization queue improvements * test related fixes Inject `{SatoriGC, true}` into config values. (VSadov#67) * Inject {SatoriGC, true} into config values. * DOTNET_gcForceCompact Improving compaction heuristics + Some other tweaks while looking at compaction. (VSadov#74) fix osx-x64 build with new Apple compilers
noop GC allocator escape mark in write barriers scan current stack SatoriObject + some cleanup Lisp2 style sliding compaction in allocating region marking bitmap localgc ok Fixes after Rebasing SatoriQueue MarkChunk DrainMarkQueue misc fixes Finalization Collectible types Dependent Handles various fixes (disabled gen0 sweep/compact until recursive escape is implemented) Disable some tests (mostly nyi GC apis) Libs tests pass tests pass with Gen0 sweep/compact few fixes syncblocks escape the backpointed obj added gen num and ForEachObjectRef with range, ForEachPage, barrier, card size and initialization fixes disabled few clr tests (mostly for NYI GC APIs) Card table functional. generational write barriers in C asm barrier Generational GC works various TODOs Move Satori files after rebase. Gen2 compaction (full) Gen1 compaction (ephemeral only) Conservative GC Various TODOs and cleanup Decommit fix after rebase concurrent stack roots and drain Added SatoriHandlePartitioner Separated card mark and clean passes ToggleWriteBarrier helping with handles and cards concurrent sweep Various TODOs a few tweaks and cleanups Parallel marking. More Parallel scan all stacks in concurrent mark defer returning to allocator remaining parallel stages disable a few tests that always fail locally and in the baseline as well silence a spurious assert some TODOs fix ups after rebase Apple Silicon (OSX ARM64) break build on not yet supported platforms allow reusing nonempty regions demotion gen2 -> gen1 conservative mode allow reusing for gen0 reenable concurrent GC fix after merge Linux x64 OSX x64 Various TODOs Windows ARM64 Linux ARM64 background trim (coalesce and decommit) lic GetTotalAllocatedBytes GC Start/End/Triggered events GC.GetTotalMemory GetLastGCStartTime Config keys noisy tests a few fixes noisy test addressed various TODOs Fix after rebase deleted m_finalizationScanCompleteRegions clean finalizable AppendUnsafe push to queues helpers extracted IsRelocatible introduced DoNotSweep concurrent plan Low Latency mode. more TODOs and some fixes accessibility WorkList and SpinLock some renames and member reorder bucket tweaks lock tweak min budget do not wait 1 msec in suspension. comments readme revert unnecessary changes readme tweak SpinLock fix Some more diagnostics GCHeapStats ETW event a few fixes GCAllocationTick ETW event disable incompatible test Update README.md fix build after rebase onto 7.0 switch to nonblocking ditctionary some improvements in concurrent dictionary use IsReferenceOrContainsReferences fixes after rebase fixes after rebase for 8.0 fixes after rebasing disabled incompatible tests tweaked a test fix stuff up after rebase Immortal Allocations (VSadov#30) * can allocate * recycler aware of 3rd gen * barriers are gen3 aware * zeroing and linking * some tweaks to immortal alloc * Update README.md Fix after rebase Support for NativeAOT (VSadov#31) Fixes after rebasing Fixes after rebasing fix after rebasing Shared nursery regions, more TODOs (VSadov#32) * HelpOnce improvements * Shared Pinned * Individual promotion and some TODOs * Shared Large * Shared regular * more TODOs fix after rebasing Concurrent cleaning of cards dirtied by incremental marking. (VSadov#33) * Concurrent card cleaning on all platforms * larger cache * update year * use ld_classic in ILC build and in build integration * Missing checkbox Write barrier improvements and some clean ups (VSadov#34) * Write Barrier updates for arm64 * some allocator and relocation tweaks * dictionary fixes * disable test and stress nuisances Low Latency Mode TODOs (VSadov#35) * Gate and new Lock, also GC thread spin/rate * barrier tweaks * GetGCSafeMethodTable * Suspend SpinWait tweak * GetMemoryInfo throttling * collection heuristics * avail ram * recycler and env changes * barriers * bulk copy * gc spin tweak * TryPopWithTryEnter * small commit is back * m_helperWoken * AskForHelp * tweaks * do stacks last * only lock changes * AllocAligned * misalign TLABs * prefer concurrent in LowLat mode * worklist * spin in TryEnter * rationalizing mark chunk size * shorter card groups * a few todos * Gen0 Gen1 switches * gcTHP switch * tweak conc block time * more conservative trimming * fixes for OSX * fix for arm64 * tweak helper counts * round up * helper --> worker Arm64 tweaks (VSadov#36) * tweaks * Gen2Target * trimmer pause * style and comment fixes Improve pacing (VSadov#37) * pacing tweaks and fixes * 2025 * RelocatedToUnchecked * cmp when checking same region * coments Concurrent Mark completion and Card Cleaning improvements (VSadov#38) * simpler ShouldDoConcurrent * m_ccHelpersNum * more pacing tweaks * comments and todos fix after rebase Concurrent phase completion improvements. (VSadov#39) Implement GCMemoryInfo.TotalCommittedBytes (VSadov#40) Fix scenarios around committing the page map (VSadov#49) * Make page map reservation and commit more precise. * fix for arm64 * better comment * one more comment Report collection counts non-inclusively (VSadov#51) Revert "Report collection counts non-inclusively (VSadov#51)" (VSadov#52) This reverts commit 50b175b. Implement GetTotalPauseDuration and GC counters (VSadov#50) * Implement GC counters * Introduce a separate set of counters * GCMemoryInfo.PauseTimePercentage --------- Co-authored-by: vsadov <8218165+VSadov@users.noreply.github.com> fixes after rebasing Make ByRefWriteBarrier to use the same call convention as in standard GC for R2R compatibility. (VSadov#56) Reduce pacing frequency. (VSadov#57) * DOTNET_gcPace knob * less frequent alloc pacing fixes (VSadov#58) short circuit gen0 collection if surviving set is too large (VSadov#61) Improve efficiency on some finalization code paths (VSadov#63) * Finalization queue improvements * test related fixes Inject `{SatoriGC, true}` into config values. (VSadov#67) * Inject {SatoriGC, true} into config values. * DOTNET_gcForceCompact Improving compaction heuristics + Some other tweaks while looking at compaction. (VSadov#74) fix osx-x64 build with new Apple compilers
noop GC allocator escape mark in write barriers scan current stack SatoriObject + some cleanup Lisp2 style sliding compaction in allocating region marking bitmap localgc ok Fixes after Rebasing SatoriQueue MarkChunk DrainMarkQueue misc fixes Finalization Collectible types Dependent Handles various fixes (disabled gen0 sweep/compact until recursive escape is implemented) Disable some tests (mostly nyi GC apis) Libs tests pass tests pass with Gen0 sweep/compact few fixes syncblocks escape the backpointed obj added gen num and ForEachObjectRef with range, ForEachPage, barrier, card size and initialization fixes disabled few clr tests (mostly for NYI GC APIs) Card table functional. generational write barriers in C asm barrier Generational GC works various TODOs Move Satori files after rebase. Gen2 compaction (full) Gen1 compaction (ephemeral only) Conservative GC Various TODOs and cleanup Decommit fix after rebase concurrent stack roots and drain Added SatoriHandlePartitioner Separated card mark and clean passes ToggleWriteBarrier helping with handles and cards concurrent sweep Various TODOs a few tweaks and cleanups Parallel marking. More Parallel scan all stacks in concurrent mark defer returning to allocator remaining parallel stages disable a few tests that always fail locally and in the baseline as well silence a spurious assert some TODOs fix ups after rebase Apple Silicon (OSX ARM64) break build on not yet supported platforms allow reusing nonempty regions demotion gen2 -> gen1 conservative mode allow reusing for gen0 reenable concurrent GC fix after merge Linux x64 OSX x64 Various TODOs Windows ARM64 Linux ARM64 background trim (coalesce and decommit) lic GetTotalAllocatedBytes GC Start/End/Triggered events GC.GetTotalMemory GetLastGCStartTime Config keys noisy tests a few fixes noisy test addressed various TODOs Fix after rebase deleted m_finalizationScanCompleteRegions clean finalizable AppendUnsafe push to queues helpers extracted IsRelocatible introduced DoNotSweep concurrent plan Low Latency mode. more TODOs and some fixes accessibility WorkList and SpinLock some renames and member reorder bucket tweaks lock tweak min budget do not wait 1 msec in suspension. comments readme revert unnecessary changes readme tweak SpinLock fix Some more diagnostics GCHeapStats ETW event a few fixes GCAllocationTick ETW event disable incompatible test Update README.md fix build after rebase onto 7.0 switch to nonblocking ditctionary some improvements in concurrent dictionary use IsReferenceOrContainsReferences fixes after rebase fixes after rebase for 8.0 fixes after rebasing disabled incompatible tests tweaked a test fix stuff up after rebase Immortal Allocations (VSadov#30) * can allocate * recycler aware of 3rd gen * barriers are gen3 aware * zeroing and linking * some tweaks to immortal alloc * Update README.md Fix after rebase Support for NativeAOT (VSadov#31) Fixes after rebasing Fixes after rebasing fix after rebasing Shared nursery regions, more TODOs (VSadov#32) * HelpOnce improvements * Shared Pinned * Individual promotion and some TODOs * Shared Large * Shared regular * more TODOs fix after rebasing Concurrent cleaning of cards dirtied by incremental marking. (VSadov#33) * Concurrent card cleaning on all platforms * larger cache * update year * use ld_classic in ILC build and in build integration * Missing checkbox Write barrier improvements and some clean ups (VSadov#34) * Write Barrier updates for arm64 * some allocator and relocation tweaks * dictionary fixes * disable test and stress nuisances Low Latency Mode TODOs (VSadov#35) * Gate and new Lock, also GC thread spin/rate * barrier tweaks * GetGCSafeMethodTable * Suspend SpinWait tweak * GetMemoryInfo throttling * collection heuristics * avail ram * recycler and env changes * barriers * bulk copy * gc spin tweak * TryPopWithTryEnter * small commit is back * m_helperWoken * AskForHelp * tweaks * do stacks last * only lock changes * AllocAligned * misalign TLABs * prefer concurrent in LowLat mode * worklist * spin in TryEnter * rationalizing mark chunk size * shorter card groups * a few todos * Gen0 Gen1 switches * gcTHP switch * tweak conc block time * more conservative trimming * fixes for OSX * fix for arm64 * tweak helper counts * round up * helper --> worker Arm64 tweaks (VSadov#36) * tweaks * Gen2Target * trimmer pause * style and comment fixes Improve pacing (VSadov#37) * pacing tweaks and fixes * 2025 * RelocatedToUnchecked * cmp when checking same region * coments Concurrent Mark completion and Card Cleaning improvements (VSadov#38) * simpler ShouldDoConcurrent * m_ccHelpersNum * more pacing tweaks * comments and todos fix after rebase Concurrent phase completion improvements. (VSadov#39) Implement GCMemoryInfo.TotalCommittedBytes (VSadov#40) Fix scenarios around committing the page map (VSadov#49) * Make page map reservation and commit more precise. * fix for arm64 * better comment * one more comment Report collection counts non-inclusively (VSadov#51) Revert "Report collection counts non-inclusively (VSadov#51)" (VSadov#52) This reverts commit 50b175b. Implement GetTotalPauseDuration and GC counters (VSadov#50) * Implement GC counters * Introduce a separate set of counters * GCMemoryInfo.PauseTimePercentage --------- Co-authored-by: vsadov <8218165+VSadov@users.noreply.github.com> fixes after rebasing Make ByRefWriteBarrier to use the same call convention as in standard GC for R2R compatibility. (VSadov#56) Reduce pacing frequency. (VSadov#57) * DOTNET_gcPace knob * less frequent alloc pacing fixes (VSadov#58) short circuit gen0 collection if surviving set is too large (VSadov#61) Improve efficiency on some finalization code paths (VSadov#63) * Finalization queue improvements * test related fixes Inject `{SatoriGC, true}` into config values. (VSadov#67) * Inject {SatoriGC, true} into config values. * DOTNET_gcForceCompact Improving compaction heuristics + Some other tweaks while looking at compaction. (VSadov#74) fix osx-x64 build with new Apple compilers
noop GC allocator escape mark in write barriers scan current stack SatoriObject + some cleanup Lisp2 style sliding compaction in allocating region marking bitmap localgc ok Fixes after Rebasing SatoriQueue MarkChunk DrainMarkQueue misc fixes Finalization Collectible types Dependent Handles various fixes (disabled gen0 sweep/compact until recursive escape is implemented) Disable some tests (mostly nyi GC apis) Libs tests pass tests pass with Gen0 sweep/compact few fixes syncblocks escape the backpointed obj added gen num and ForEachObjectRef with range, ForEachPage, barrier, card size and initialization fixes disabled few clr tests (mostly for NYI GC APIs) Card table functional. generational write barriers in C asm barrier Generational GC works various TODOs Move Satori files after rebase. Gen2 compaction (full) Gen1 compaction (ephemeral only) Conservative GC Various TODOs and cleanup Decommit fix after rebase concurrent stack roots and drain Added SatoriHandlePartitioner Separated card mark and clean passes ToggleWriteBarrier helping with handles and cards concurrent sweep Various TODOs a few tweaks and cleanups Parallel marking. More Parallel scan all stacks in concurrent mark defer returning to allocator remaining parallel stages disable a few tests that always fail locally and in the baseline as well silence a spurious assert some TODOs fix ups after rebase Apple Silicon (OSX ARM64) break build on not yet supported platforms allow reusing nonempty regions demotion gen2 -> gen1 conservative mode allow reusing for gen0 reenable concurrent GC fix after merge Linux x64 OSX x64 Various TODOs Windows ARM64 Linux ARM64 background trim (coalesce and decommit) lic GetTotalAllocatedBytes GC Start/End/Triggered events GC.GetTotalMemory GetLastGCStartTime Config keys noisy tests a few fixes noisy test addressed various TODOs Fix after rebase deleted m_finalizationScanCompleteRegions clean finalizable AppendUnsafe push to queues helpers extracted IsRelocatible introduced DoNotSweep concurrent plan Low Latency mode. more TODOs and some fixes accessibility WorkList and SpinLock some renames and member reorder bucket tweaks lock tweak min budget do not wait 1 msec in suspension. comments readme revert unnecessary changes readme tweak SpinLock fix Some more diagnostics GCHeapStats ETW event a few fixes GCAllocationTick ETW event disable incompatible test Update README.md fix build after rebase onto 7.0 switch to nonblocking ditctionary some improvements in concurrent dictionary use IsReferenceOrContainsReferences fixes after rebase fixes after rebase for 8.0 fixes after rebasing disabled incompatible tests tweaked a test fix stuff up after rebase Immortal Allocations (VSadov#30) * can allocate * recycler aware of 3rd gen * barriers are gen3 aware * zeroing and linking * some tweaks to immortal alloc * Update README.md Fix after rebase Support for NativeAOT (VSadov#31) Fixes after rebasing Fixes after rebasing fix after rebasing Shared nursery regions, more TODOs (VSadov#32) * HelpOnce improvements * Shared Pinned * Individual promotion and some TODOs * Shared Large * Shared regular * more TODOs fix after rebasing Concurrent cleaning of cards dirtied by incremental marking. (VSadov#33) * Concurrent card cleaning on all platforms * larger cache * update year * use ld_classic in ILC build and in build integration * Missing checkbox Write barrier improvements and some clean ups (VSadov#34) * Write Barrier updates for arm64 * some allocator and relocation tweaks * dictionary fixes * disable test and stress nuisances Low Latency Mode TODOs (VSadov#35) * Gate and new Lock, also GC thread spin/rate * barrier tweaks * GetGCSafeMethodTable * Suspend SpinWait tweak * GetMemoryInfo throttling * collection heuristics * avail ram * recycler and env changes * barriers * bulk copy * gc spin tweak * TryPopWithTryEnter * small commit is back * m_helperWoken * AskForHelp * tweaks * do stacks last * only lock changes * AllocAligned * misalign TLABs * prefer concurrent in LowLat mode * worklist * spin in TryEnter * rationalizing mark chunk size * shorter card groups * a few todos * Gen0 Gen1 switches * gcTHP switch * tweak conc block time * more conservative trimming * fixes for OSX * fix for arm64 * tweak helper counts * round up * helper --> worker Arm64 tweaks (VSadov#36) * tweaks * Gen2Target * trimmer pause * style and comment fixes Improve pacing (VSadov#37) * pacing tweaks and fixes * 2025 * RelocatedToUnchecked * cmp when checking same region * coments Concurrent Mark completion and Card Cleaning improvements (VSadov#38) * simpler ShouldDoConcurrent * m_ccHelpersNum * more pacing tweaks * comments and todos fix after rebase Concurrent phase completion improvements. (VSadov#39) Implement GCMemoryInfo.TotalCommittedBytes (VSadov#40) Fix scenarios around committing the page map (VSadov#49) * Make page map reservation and commit more precise. * fix for arm64 * better comment * one more comment Report collection counts non-inclusively (VSadov#51) Revert "Report collection counts non-inclusively (VSadov#51)" (VSadov#52) This reverts commit 50b175b. Implement GetTotalPauseDuration and GC counters (VSadov#50) * Implement GC counters * Introduce a separate set of counters * GCMemoryInfo.PauseTimePercentage --------- Co-authored-by: vsadov <8218165+VSadov@users.noreply.github.com> fixes after rebasing Make ByRefWriteBarrier to use the same call convention as in standard GC for R2R compatibility. (VSadov#56) Reduce pacing frequency. (VSadov#57) * DOTNET_gcPace knob * less frequent alloc pacing fixes (VSadov#58) short circuit gen0 collection if surviving set is too large (VSadov#61) Improve efficiency on some finalization code paths (VSadov#63) * Finalization queue improvements * test related fixes Inject `{SatoriGC, true}` into config values. (VSadov#67) * Inject {SatoriGC, true} into config values. * DOTNET_gcForceCompact Improving compaction heuristics + Some other tweaks while looking at compaction. (VSadov#74) fix osx-x64 build with new Apple compilers
noop GC allocator escape mark in write barriers scan current stack SatoriObject + some cleanup Lisp2 style sliding compaction in allocating region marking bitmap localgc ok Fixes after Rebasing SatoriQueue MarkChunk DrainMarkQueue misc fixes Finalization Collectible types Dependent Handles various fixes (disabled gen0 sweep/compact until recursive escape is implemented) Disable some tests (mostly nyi GC apis) Libs tests pass tests pass with Gen0 sweep/compact few fixes syncblocks escape the backpointed obj added gen num and ForEachObjectRef with range, ForEachPage, barrier, card size and initialization fixes disabled few clr tests (mostly for NYI GC APIs) Card table functional. generational write barriers in C asm barrier Generational GC works various TODOs Move Satori files after rebase. Gen2 compaction (full) Gen1 compaction (ephemeral only) Conservative GC Various TODOs and cleanup Decommit fix after rebase concurrent stack roots and drain Added SatoriHandlePartitioner Separated card mark and clean passes ToggleWriteBarrier helping with handles and cards concurrent sweep Various TODOs a few tweaks and cleanups Parallel marking. More Parallel scan all stacks in concurrent mark defer returning to allocator remaining parallel stages disable a few tests that always fail locally and in the baseline as well silence a spurious assert some TODOs fix ups after rebase Apple Silicon (OSX ARM64) break build on not yet supported platforms allow reusing nonempty regions demotion gen2 -> gen1 conservative mode allow reusing for gen0 reenable concurrent GC fix after merge Linux x64 OSX x64 Various TODOs Windows ARM64 Linux ARM64 background trim (coalesce and decommit) lic GetTotalAllocatedBytes GC Start/End/Triggered events GC.GetTotalMemory GetLastGCStartTime Config keys noisy tests a few fixes noisy test addressed various TODOs Fix after rebase deleted m_finalizationScanCompleteRegions clean finalizable AppendUnsafe push to queues helpers extracted IsRelocatible introduced DoNotSweep concurrent plan Low Latency mode. more TODOs and some fixes accessibility WorkList and SpinLock some renames and member reorder bucket tweaks lock tweak min budget do not wait 1 msec in suspension. comments readme revert unnecessary changes readme tweak SpinLock fix Some more diagnostics GCHeapStats ETW event a few fixes GCAllocationTick ETW event disable incompatible test Update README.md fix build after rebase onto 7.0 switch to nonblocking ditctionary some improvements in concurrent dictionary use IsReferenceOrContainsReferences fixes after rebase fixes after rebase for 8.0 fixes after rebasing disabled incompatible tests tweaked a test fix stuff up after rebase Immortal Allocations (VSadov#30) * can allocate * recycler aware of 3rd gen * barriers are gen3 aware * zeroing and linking * some tweaks to immortal alloc * Update README.md Fix after rebase Support for NativeAOT (VSadov#31) Fixes after rebasing Fixes after rebasing fix after rebasing Shared nursery regions, more TODOs (VSadov#32) * HelpOnce improvements * Shared Pinned * Individual promotion and some TODOs * Shared Large * Shared regular * more TODOs fix after rebasing Concurrent cleaning of cards dirtied by incremental marking. (VSadov#33) * Concurrent card cleaning on all platforms * larger cache * update year * use ld_classic in ILC build and in build integration * Missing checkbox Write barrier improvements and some clean ups (VSadov#34) * Write Barrier updates for arm64 * some allocator and relocation tweaks * dictionary fixes * disable test and stress nuisances Low Latency Mode TODOs (VSadov#35) * Gate and new Lock, also GC thread spin/rate * barrier tweaks * GetGCSafeMethodTable * Suspend SpinWait tweak * GetMemoryInfo throttling * collection heuristics * avail ram * recycler and env changes * barriers * bulk copy * gc spin tweak * TryPopWithTryEnter * small commit is back * m_helperWoken * AskForHelp * tweaks * do stacks last * only lock changes * AllocAligned * misalign TLABs * prefer concurrent in LowLat mode * worklist * spin in TryEnter * rationalizing mark chunk size * shorter card groups * a few todos * Gen0 Gen1 switches * gcTHP switch * tweak conc block time * more conservative trimming * fixes for OSX * fix for arm64 * tweak helper counts * round up * helper --> worker Arm64 tweaks (VSadov#36) * tweaks * Gen2Target * trimmer pause * style and comment fixes Improve pacing (VSadov#37) * pacing tweaks and fixes * 2025 * RelocatedToUnchecked * cmp when checking same region * coments Concurrent Mark completion and Card Cleaning improvements (VSadov#38) * simpler ShouldDoConcurrent * m_ccHelpersNum * more pacing tweaks * comments and todos fix after rebase Concurrent phase completion improvements. (VSadov#39) Implement GCMemoryInfo.TotalCommittedBytes (VSadov#40) Fix scenarios around committing the page map (VSadov#49) * Make page map reservation and commit more precise. * fix for arm64 * better comment * one more comment Report collection counts non-inclusively (VSadov#51) Revert "Report collection counts non-inclusively (VSadov#51)" (VSadov#52) This reverts commit 50b175b. Implement GetTotalPauseDuration and GC counters (VSadov#50) * Implement GC counters * Introduce a separate set of counters * GCMemoryInfo.PauseTimePercentage --------- Co-authored-by: vsadov <8218165+VSadov@users.noreply.github.com> fixes after rebasing Make ByRefWriteBarrier to use the same call convention as in standard GC for R2R compatibility. (VSadov#56) Reduce pacing frequency. (VSadov#57) * DOTNET_gcPace knob * less frequent alloc pacing fixes (VSadov#58) short circuit gen0 collection if surviving set is too large (VSadov#61) Improve efficiency on some finalization code paths (VSadov#63) * Finalization queue improvements * test related fixes Inject `{SatoriGC, true}` into config values. (VSadov#67) * Inject {SatoriGC, true} into config values. * DOTNET_gcForceCompact Improving compaction heuristics + Some other tweaks while looking at compaction. (VSadov#74) fix osx-x64 build with new Apple compilers
noop GC allocator escape mark in write barriers scan current stack SatoriObject + some cleanup Lisp2 style sliding compaction in allocating region marking bitmap localgc ok Fixes after Rebasing SatoriQueue MarkChunk DrainMarkQueue misc fixes Finalization Collectible types Dependent Handles various fixes (disabled gen0 sweep/compact until recursive escape is implemented) Disable some tests (mostly nyi GC apis) Libs tests pass tests pass with Gen0 sweep/compact few fixes syncblocks escape the backpointed obj added gen num and ForEachObjectRef with range, ForEachPage, barrier, card size and initialization fixes disabled few clr tests (mostly for NYI GC APIs) Card table functional. generational write barriers in C asm barrier Generational GC works various TODOs Move Satori files after rebase. Gen2 compaction (full) Gen1 compaction (ephemeral only) Conservative GC Various TODOs and cleanup Decommit fix after rebase concurrent stack roots and drain Added SatoriHandlePartitioner Separated card mark and clean passes ToggleWriteBarrier helping with handles and cards concurrent sweep Various TODOs a few tweaks and cleanups Parallel marking. More Parallel scan all stacks in concurrent mark defer returning to allocator remaining parallel stages disable a few tests that always fail locally and in the baseline as well silence a spurious assert some TODOs fix ups after rebase Apple Silicon (OSX ARM64) break build on not yet supported platforms allow reusing nonempty regions demotion gen2 -> gen1 conservative mode allow reusing for gen0 reenable concurrent GC fix after merge Linux x64 OSX x64 Various TODOs Windows ARM64 Linux ARM64 background trim (coalesce and decommit) lic GetTotalAllocatedBytes GC Start/End/Triggered events GC.GetTotalMemory GetLastGCStartTime Config keys noisy tests a few fixes noisy test addressed various TODOs Fix after rebase deleted m_finalizationScanCompleteRegions clean finalizable AppendUnsafe push to queues helpers extracted IsRelocatible introduced DoNotSweep concurrent plan Low Latency mode. more TODOs and some fixes accessibility WorkList and SpinLock some renames and member reorder bucket tweaks lock tweak min budget do not wait 1 msec in suspension. comments readme revert unnecessary changes readme tweak SpinLock fix Some more diagnostics GCHeapStats ETW event a few fixes GCAllocationTick ETW event disable incompatible test Update README.md fix build after rebase onto 7.0 switch to nonblocking ditctionary some improvements in concurrent dictionary use IsReferenceOrContainsReferences fixes after rebase fixes after rebase for 8.0 fixes after rebasing disabled incompatible tests tweaked a test fix stuff up after rebase Immortal Allocations (VSadov#30) * can allocate * recycler aware of 3rd gen * barriers are gen3 aware * zeroing and linking * some tweaks to immortal alloc * Update README.md Fix after rebase Support for NativeAOT (VSadov#31) Fixes after rebasing Fixes after rebasing fix after rebasing Shared nursery regions, more TODOs (VSadov#32) * HelpOnce improvements * Shared Pinned * Individual promotion and some TODOs * Shared Large * Shared regular * more TODOs fix after rebasing Concurrent cleaning of cards dirtied by incremental marking. (VSadov#33) * Concurrent card cleaning on all platforms * larger cache * update year * use ld_classic in ILC build and in build integration * Missing checkbox Write barrier improvements and some clean ups (VSadov#34) * Write Barrier updates for arm64 * some allocator and relocation tweaks * dictionary fixes * disable test and stress nuisances Low Latency Mode TODOs (VSadov#35) * Gate and new Lock, also GC thread spin/rate * barrier tweaks * GetGCSafeMethodTable * Suspend SpinWait tweak * GetMemoryInfo throttling * collection heuristics * avail ram * recycler and env changes * barriers * bulk copy * gc spin tweak * TryPopWithTryEnter * small commit is back * m_helperWoken * AskForHelp * tweaks * do stacks last * only lock changes * AllocAligned * misalign TLABs * prefer concurrent in LowLat mode * worklist * spin in TryEnter * rationalizing mark chunk size * shorter card groups * a few todos * Gen0 Gen1 switches * gcTHP switch * tweak conc block time * more conservative trimming * fixes for OSX * fix for arm64 * tweak helper counts * round up * helper --> worker Arm64 tweaks (VSadov#36) * tweaks * Gen2Target * trimmer pause * style and comment fixes Improve pacing (VSadov#37) * pacing tweaks and fixes * 2025 * RelocatedToUnchecked * cmp when checking same region * coments Concurrent Mark completion and Card Cleaning improvements (VSadov#38) * simpler ShouldDoConcurrent * m_ccHelpersNum * more pacing tweaks * comments and todos fix after rebase Concurrent phase completion improvements. (VSadov#39) Implement GCMemoryInfo.TotalCommittedBytes (VSadov#40) Fix scenarios around committing the page map (VSadov#49) * Make page map reservation and commit more precise. * fix for arm64 * better comment * one more comment Report collection counts non-inclusively (VSadov#51) Revert "Report collection counts non-inclusively (VSadov#51)" (VSadov#52) This reverts commit 50b175b. Implement GetTotalPauseDuration and GC counters (VSadov#50) * Implement GC counters * Introduce a separate set of counters * GCMemoryInfo.PauseTimePercentage --------- Co-authored-by: vsadov <8218165+VSadov@users.noreply.github.com> fixes after rebasing Make ByRefWriteBarrier to use the same call convention as in standard GC for R2R compatibility. (VSadov#56) Reduce pacing frequency. (VSadov#57) * DOTNET_gcPace knob * less frequent alloc pacing fixes (VSadov#58) short circuit gen0 collection if surviving set is too large (VSadov#61) Improve efficiency on some finalization code paths (VSadov#63) * Finalization queue improvements * test related fixes Inject `{SatoriGC, true}` into config values. (VSadov#67) * Inject {SatoriGC, true} into config values. * DOTNET_gcForceCompact Improving compaction heuristics + Some other tweaks while looking at compaction. (VSadov#74) fix osx-x64 build with new Apple compilers
noop GC allocator escape mark in write barriers scan current stack SatoriObject + some cleanup Lisp2 style sliding compaction in allocating region marking bitmap localgc ok Fixes after Rebasing SatoriQueue MarkChunk DrainMarkQueue misc fixes Finalization Collectible types Dependent Handles various fixes (disabled gen0 sweep/compact until recursive escape is implemented) Disable some tests (mostly nyi GC apis) Libs tests pass tests pass with Gen0 sweep/compact few fixes syncblocks escape the backpointed obj added gen num and ForEachObjectRef with range, ForEachPage, barrier, card size and initialization fixes disabled few clr tests (mostly for NYI GC APIs) Card table functional. generational write barriers in C asm barrier Generational GC works various TODOs Move Satori files after rebase. Gen2 compaction (full) Gen1 compaction (ephemeral only) Conservative GC Various TODOs and cleanup Decommit fix after rebase concurrent stack roots and drain Added SatoriHandlePartitioner Separated card mark and clean passes ToggleWriteBarrier helping with handles and cards concurrent sweep Various TODOs a few tweaks and cleanups Parallel marking. More Parallel scan all stacks in concurrent mark defer returning to allocator remaining parallel stages disable a few tests that always fail locally and in the baseline as well silence a spurious assert some TODOs fix ups after rebase Apple Silicon (OSX ARM64) break build on not yet supported platforms allow reusing nonempty regions demotion gen2 -> gen1 conservative mode allow reusing for gen0 reenable concurrent GC fix after merge Linux x64 OSX x64 Various TODOs Windows ARM64 Linux ARM64 background trim (coalesce and decommit) lic GetTotalAllocatedBytes GC Start/End/Triggered events GC.GetTotalMemory GetLastGCStartTime Config keys noisy tests a few fixes noisy test addressed various TODOs Fix after rebase deleted m_finalizationScanCompleteRegions clean finalizable AppendUnsafe push to queues helpers extracted IsRelocatible introduced DoNotSweep concurrent plan Low Latency mode. more TODOs and some fixes accessibility WorkList and SpinLock some renames and member reorder bucket tweaks lock tweak min budget do not wait 1 msec in suspension. comments readme revert unnecessary changes readme tweak SpinLock fix Some more diagnostics GCHeapStats ETW event a few fixes GCAllocationTick ETW event disable incompatible test Update README.md fix build after rebase onto 7.0 switch to nonblocking ditctionary some improvements in concurrent dictionary use IsReferenceOrContainsReferences fixes after rebase fixes after rebase for 8.0 fixes after rebasing disabled incompatible tests tweaked a test fix stuff up after rebase Immortal Allocations (VSadov#30) * can allocate * recycler aware of 3rd gen * barriers are gen3 aware * zeroing and linking * some tweaks to immortal alloc * Update README.md Fix after rebase Support for NativeAOT (VSadov#31) Fixes after rebasing Fixes after rebasing fix after rebasing Shared nursery regions, more TODOs (VSadov#32) * HelpOnce improvements * Shared Pinned * Individual promotion and some TODOs * Shared Large * Shared regular * more TODOs fix after rebasing Concurrent cleaning of cards dirtied by incremental marking. (VSadov#33) * Concurrent card cleaning on all platforms * larger cache * update year * use ld_classic in ILC build and in build integration * Missing checkbox Write barrier improvements and some clean ups (VSadov#34) * Write Barrier updates for arm64 * some allocator and relocation tweaks * dictionary fixes * disable test and stress nuisances Low Latency Mode TODOs (VSadov#35) * Gate and new Lock, also GC thread spin/rate * barrier tweaks * GetGCSafeMethodTable * Suspend SpinWait tweak * GetMemoryInfo throttling * collection heuristics * avail ram * recycler and env changes * barriers * bulk copy * gc spin tweak * TryPopWithTryEnter * small commit is back * m_helperWoken * AskForHelp * tweaks * do stacks last * only lock changes * AllocAligned * misalign TLABs * prefer concurrent in LowLat mode * worklist * spin in TryEnter * rationalizing mark chunk size * shorter card groups * a few todos * Gen0 Gen1 switches * gcTHP switch * tweak conc block time * more conservative trimming * fixes for OSX * fix for arm64 * tweak helper counts * round up * helper --> worker Arm64 tweaks (VSadov#36) * tweaks * Gen2Target * trimmer pause * style and comment fixes Improve pacing (VSadov#37) * pacing tweaks and fixes * 2025 * RelocatedToUnchecked * cmp when checking same region * coments Concurrent Mark completion and Card Cleaning improvements (VSadov#38) * simpler ShouldDoConcurrent * m_ccHelpersNum * more pacing tweaks * comments and todos fix after rebase Concurrent phase completion improvements. (VSadov#39) Implement GCMemoryInfo.TotalCommittedBytes (VSadov#40) Fix scenarios around committing the page map (VSadov#49) * Make page map reservation and commit more precise. * fix for arm64 * better comment * one more comment Report collection counts non-inclusively (VSadov#51) Revert "Report collection counts non-inclusively (VSadov#51)" (VSadov#52) This reverts commit 50b175b. Implement GetTotalPauseDuration and GC counters (VSadov#50) * Implement GC counters * Introduce a separate set of counters * GCMemoryInfo.PauseTimePercentage --------- Co-authored-by: vsadov <8218165+VSadov@users.noreply.github.com> fixes after rebasing Make ByRefWriteBarrier to use the same call convention as in standard GC for R2R compatibility. (VSadov#56) Reduce pacing frequency. (VSadov#57) * DOTNET_gcPace knob * less frequent alloc pacing fixes (VSadov#58) short circuit gen0 collection if surviving set is too large (VSadov#61) Improve efficiency on some finalization code paths (VSadov#63) * Finalization queue improvements * test related fixes Inject `{SatoriGC, true}` into config values. (VSadov#67) * Inject {SatoriGC, true} into config values. * DOTNET_gcForceCompact Improving compaction heuristics + Some other tweaks while looking at compaction. (VSadov#74) fix osx-x64 build with new Apple compilers
noop GC allocator escape mark in write barriers scan current stack SatoriObject + some cleanup Lisp2 style sliding compaction in allocating region marking bitmap localgc ok Fixes after Rebasing SatoriQueue MarkChunk DrainMarkQueue misc fixes Finalization Collectible types Dependent Handles various fixes (disabled gen0 sweep/compact until recursive escape is implemented) Disable some tests (mostly nyi GC apis) Libs tests pass tests pass with Gen0 sweep/compact few fixes syncblocks escape the backpointed obj added gen num and ForEachObjectRef with range, ForEachPage, barrier, card size and initialization fixes disabled few clr tests (mostly for NYI GC APIs) Card table functional. generational write barriers in C asm barrier Generational GC works various TODOs Move Satori files after rebase. Gen2 compaction (full) Gen1 compaction (ephemeral only) Conservative GC Various TODOs and cleanup Decommit fix after rebase concurrent stack roots and drain Added SatoriHandlePartitioner Separated card mark and clean passes ToggleWriteBarrier helping with handles and cards concurrent sweep Various TODOs a few tweaks and cleanups Parallel marking. More Parallel scan all stacks in concurrent mark defer returning to allocator remaining parallel stages disable a few tests that always fail locally and in the baseline as well silence a spurious assert some TODOs fix ups after rebase Apple Silicon (OSX ARM64) break build on not yet supported platforms allow reusing nonempty regions demotion gen2 -> gen1 conservative mode allow reusing for gen0 reenable concurrent GC fix after merge Linux x64 OSX x64 Various TODOs Windows ARM64 Linux ARM64 background trim (coalesce and decommit) lic GetTotalAllocatedBytes GC Start/End/Triggered events GC.GetTotalMemory GetLastGCStartTime Config keys noisy tests a few fixes noisy test addressed various TODOs Fix after rebase deleted m_finalizationScanCompleteRegions clean finalizable AppendUnsafe push to queues helpers extracted IsRelocatible introduced DoNotSweep concurrent plan Low Latency mode. more TODOs and some fixes accessibility WorkList and SpinLock some renames and member reorder bucket tweaks lock tweak min budget do not wait 1 msec in suspension. comments readme revert unnecessary changes readme tweak SpinLock fix Some more diagnostics GCHeapStats ETW event a few fixes GCAllocationTick ETW event disable incompatible test Update README.md fix build after rebase onto 7.0 switch to nonblocking ditctionary some improvements in concurrent dictionary use IsReferenceOrContainsReferences fixes after rebase fixes after rebase for 8.0 fixes after rebasing disabled incompatible tests tweaked a test fix stuff up after rebase Immortal Allocations (VSadov#30) * can allocate * recycler aware of 3rd gen * barriers are gen3 aware * zeroing and linking * some tweaks to immortal alloc * Update README.md Fix after rebase Support for NativeAOT (VSadov#31) Fixes after rebasing Fixes after rebasing fix after rebasing Shared nursery regions, more TODOs (VSadov#32) * HelpOnce improvements * Shared Pinned * Individual promotion and some TODOs * Shared Large * Shared regular * more TODOs fix after rebasing Concurrent cleaning of cards dirtied by incremental marking. (VSadov#33) * Concurrent card cleaning on all platforms * larger cache * update year * use ld_classic in ILC build and in build integration * Missing checkbox Write barrier improvements and some clean ups (VSadov#34) * Write Barrier updates for arm64 * some allocator and relocation tweaks * dictionary fixes * disable test and stress nuisances Low Latency Mode TODOs (VSadov#35) * Gate and new Lock, also GC thread spin/rate * barrier tweaks * GetGCSafeMethodTable * Suspend SpinWait tweak * GetMemoryInfo throttling * collection heuristics * avail ram * recycler and env changes * barriers * bulk copy * gc spin tweak * TryPopWithTryEnter * small commit is back * m_helperWoken * AskForHelp * tweaks * do stacks last * only lock changes * AllocAligned * misalign TLABs * prefer concurrent in LowLat mode * worklist * spin in TryEnter * rationalizing mark chunk size * shorter card groups * a few todos * Gen0 Gen1 switches * gcTHP switch * tweak conc block time * more conservative trimming * fixes for OSX * fix for arm64 * tweak helper counts * round up * helper --> worker Arm64 tweaks (VSadov#36) * tweaks * Gen2Target * trimmer pause * style and comment fixes Improve pacing (VSadov#37) * pacing tweaks and fixes * 2025 * RelocatedToUnchecked * cmp when checking same region * coments Concurrent Mark completion and Card Cleaning improvements (VSadov#38) * simpler ShouldDoConcurrent * m_ccHelpersNum * more pacing tweaks * comments and todos fix after rebase Concurrent phase completion improvements. (VSadov#39) Implement GCMemoryInfo.TotalCommittedBytes (VSadov#40) Fix scenarios around committing the page map (VSadov#49) * Make page map reservation and commit more precise. * fix for arm64 * better comment * one more comment Report collection counts non-inclusively (VSadov#51) Revert "Report collection counts non-inclusively (VSadov#51)" (VSadov#52) This reverts commit 50b175b. Implement GetTotalPauseDuration and GC counters (VSadov#50) * Implement GC counters * Introduce a separate set of counters * GCMemoryInfo.PauseTimePercentage --------- Co-authored-by: vsadov <8218165+VSadov@users.noreply.github.com> fixes after rebasing Make ByRefWriteBarrier to use the same call convention as in standard GC for R2R compatibility. (VSadov#56) Reduce pacing frequency. (VSadov#57) * DOTNET_gcPace knob * less frequent alloc pacing fixes (VSadov#58) short circuit gen0 collection if surviving set is too large (VSadov#61) Improve efficiency on some finalization code paths (VSadov#63) * Finalization queue improvements * test related fixes Inject `{SatoriGC, true}` into config values. (VSadov#67) * Inject {SatoriGC, true} into config values. * DOTNET_gcForceCompact Improving compaction heuristics + Some other tweaks while looking at compaction. (VSadov#74) fix osx-x64 build with new Apple compilers
noop GC allocator escape mark in write barriers scan current stack SatoriObject + some cleanup Lisp2 style sliding compaction in allocating region marking bitmap localgc ok Fixes after Rebasing SatoriQueue MarkChunk DrainMarkQueue misc fixes Finalization Collectible types Dependent Handles various fixes (disabled gen0 sweep/compact until recursive escape is implemented) Disable some tests (mostly nyi GC apis) Libs tests pass tests pass with Gen0 sweep/compact few fixes syncblocks escape the backpointed obj added gen num and ForEachObjectRef with range, ForEachPage, barrier, card size and initialization fixes disabled few clr tests (mostly for NYI GC APIs) Card table functional. generational write barriers in C asm barrier Generational GC works various TODOs Move Satori files after rebase. Gen2 compaction (full) Gen1 compaction (ephemeral only) Conservative GC Various TODOs and cleanup Decommit fix after rebase concurrent stack roots and drain Added SatoriHandlePartitioner Separated card mark and clean passes ToggleWriteBarrier helping with handles and cards concurrent sweep Various TODOs a few tweaks and cleanups Parallel marking. More Parallel scan all stacks in concurrent mark defer returning to allocator remaining parallel stages disable a few tests that always fail locally and in the baseline as well silence a spurious assert some TODOs fix ups after rebase Apple Silicon (OSX ARM64) break build on not yet supported platforms allow reusing nonempty regions demotion gen2 -> gen1 conservative mode allow reusing for gen0 reenable concurrent GC fix after merge Linux x64 OSX x64 Various TODOs Windows ARM64 Linux ARM64 background trim (coalesce and decommit) lic GetTotalAllocatedBytes GC Start/End/Triggered events GC.GetTotalMemory GetLastGCStartTime Config keys noisy tests a few fixes noisy test addressed various TODOs Fix after rebase deleted m_finalizationScanCompleteRegions clean finalizable AppendUnsafe push to queues helpers extracted IsRelocatible introduced DoNotSweep concurrent plan Low Latency mode. more TODOs and some fixes accessibility WorkList and SpinLock some renames and member reorder bucket tweaks lock tweak min budget do not wait 1 msec in suspension. comments readme revert unnecessary changes readme tweak SpinLock fix Some more diagnostics GCHeapStats ETW event a few fixes GCAllocationTick ETW event disable incompatible test Update README.md fix build after rebase onto 7.0 switch to nonblocking ditctionary some improvements in concurrent dictionary use IsReferenceOrContainsReferences fixes after rebase fixes after rebase for 8.0 fixes after rebasing disabled incompatible tests tweaked a test fix stuff up after rebase Immortal Allocations (VSadov#30) * can allocate * recycler aware of 3rd gen * barriers are gen3 aware * zeroing and linking * some tweaks to immortal alloc * Update README.md Fix after rebase Support for NativeAOT (VSadov#31) Fixes after rebasing Fixes after rebasing fix after rebasing Shared nursery regions, more TODOs (VSadov#32) * HelpOnce improvements * Shared Pinned * Individual promotion and some TODOs * Shared Large * Shared regular * more TODOs fix after rebasing Concurrent cleaning of cards dirtied by incremental marking. (VSadov#33) * Concurrent card cleaning on all platforms * larger cache * update year * use ld_classic in ILC build and in build integration * Missing checkbox Write barrier improvements and some clean ups (VSadov#34) * Write Barrier updates for arm64 * some allocator and relocation tweaks * dictionary fixes * disable test and stress nuisances Low Latency Mode TODOs (VSadov#35) * Gate and new Lock, also GC thread spin/rate * barrier tweaks * GetGCSafeMethodTable * Suspend SpinWait tweak * GetMemoryInfo throttling * collection heuristics * avail ram * recycler and env changes * barriers * bulk copy * gc spin tweak * TryPopWithTryEnter * small commit is back * m_helperWoken * AskForHelp * tweaks * do stacks last * only lock changes * AllocAligned * misalign TLABs * prefer concurrent in LowLat mode * worklist * spin in TryEnter * rationalizing mark chunk size * shorter card groups * a few todos * Gen0 Gen1 switches * gcTHP switch * tweak conc block time * more conservative trimming * fixes for OSX * fix for arm64 * tweak helper counts * round up * helper --> worker Arm64 tweaks (VSadov#36) * tweaks * Gen2Target * trimmer pause * style and comment fixes Improve pacing (VSadov#37) * pacing tweaks and fixes * 2025 * RelocatedToUnchecked * cmp when checking same region * coments Concurrent Mark completion and Card Cleaning improvements (VSadov#38) * simpler ShouldDoConcurrent * m_ccHelpersNum * more pacing tweaks * comments and todos fix after rebase Concurrent phase completion improvements. (VSadov#39) Implement GCMemoryInfo.TotalCommittedBytes (VSadov#40) Fix scenarios around committing the page map (VSadov#49) * Make page map reservation and commit more precise. * fix for arm64 * better comment * one more comment Report collection counts non-inclusively (VSadov#51) Revert "Report collection counts non-inclusively (VSadov#51)" (VSadov#52) This reverts commit 50b175b. Implement GetTotalPauseDuration and GC counters (VSadov#50) * Implement GC counters * Introduce a separate set of counters * GCMemoryInfo.PauseTimePercentage --------- Co-authored-by: vsadov <8218165+VSadov@users.noreply.github.com> fixes after rebasing Make ByRefWriteBarrier to use the same call convention as in standard GC for R2R compatibility. (VSadov#56) Reduce pacing frequency. (VSadov#57) * DOTNET_gcPace knob * less frequent alloc pacing fixes (VSadov#58) short circuit gen0 collection if surviving set is too large (VSadov#61) Improve efficiency on some finalization code paths (VSadov#63) * Finalization queue improvements * test related fixes Inject `{SatoriGC, true}` into config values. (VSadov#67) * Inject {SatoriGC, true} into config values. * DOTNET_gcForceCompact Improving compaction heuristics + Some other tweaks while looking at compaction. (VSadov#74) fix osx-x64 build with new Apple compilers
noop GC allocator escape mark in write barriers scan current stack SatoriObject + some cleanup Lisp2 style sliding compaction in allocating region marking bitmap localgc ok Fixes after Rebasing SatoriQueue MarkChunk DrainMarkQueue misc fixes Finalization Collectible types Dependent Handles various fixes (disabled gen0 sweep/compact until recursive escape is implemented) Disable some tests (mostly nyi GC apis) Libs tests pass tests pass with Gen0 sweep/compact few fixes syncblocks escape the backpointed obj added gen num and ForEachObjectRef with range, ForEachPage, barrier, card size and initialization fixes disabled few clr tests (mostly for NYI GC APIs) Card table functional. generational write barriers in C asm barrier Generational GC works various TODOs Move Satori files after rebase. Gen2 compaction (full) Gen1 compaction (ephemeral only) Conservative GC Various TODOs and cleanup Decommit fix after rebase concurrent stack roots and drain Added SatoriHandlePartitioner Separated card mark and clean passes ToggleWriteBarrier helping with handles and cards concurrent sweep Various TODOs a few tweaks and cleanups Parallel marking. More Parallel scan all stacks in concurrent mark defer returning to allocator remaining parallel stages disable a few tests that always fail locally and in the baseline as well silence a spurious assert some TODOs fix ups after rebase Apple Silicon (OSX ARM64) break build on not yet supported platforms allow reusing nonempty regions demotion gen2 -> gen1 conservative mode allow reusing for gen0 reenable concurrent GC fix after merge Linux x64 OSX x64 Various TODOs Windows ARM64 Linux ARM64 background trim (coalesce and decommit) lic GetTotalAllocatedBytes GC Start/End/Triggered events GC.GetTotalMemory GetLastGCStartTime Config keys noisy tests a few fixes noisy test addressed various TODOs Fix after rebase deleted m_finalizationScanCompleteRegions clean finalizable AppendUnsafe push to queues helpers extracted IsRelocatible introduced DoNotSweep concurrent plan Low Latency mode. more TODOs and some fixes accessibility WorkList and SpinLock some renames and member reorder bucket tweaks lock tweak min budget do not wait 1 msec in suspension. comments readme revert unnecessary changes readme tweak SpinLock fix Some more diagnostics GCHeapStats ETW event a few fixes GCAllocationTick ETW event disable incompatible test Update README.md fix build after rebase onto 7.0 switch to nonblocking ditctionary some improvements in concurrent dictionary use IsReferenceOrContainsReferences fixes after rebase fixes after rebase for 8.0 fixes after rebasing disabled incompatible tests tweaked a test fix stuff up after rebase Immortal Allocations (VSadov#30) * can allocate * recycler aware of 3rd gen * barriers are gen3 aware * zeroing and linking * some tweaks to immortal alloc * Update README.md Fix after rebase Support for NativeAOT (VSadov#31) Fixes after rebasing Fixes after rebasing fix after rebasing Shared nursery regions, more TODOs (VSadov#32) * HelpOnce improvements * Shared Pinned * Individual promotion and some TODOs * Shared Large * Shared regular * more TODOs fix after rebasing Concurrent cleaning of cards dirtied by incremental marking. (VSadov#33) * Concurrent card cleaning on all platforms * larger cache * update year * use ld_classic in ILC build and in build integration * Missing checkbox Write barrier improvements and some clean ups (VSadov#34) * Write Barrier updates for arm64 * some allocator and relocation tweaks * dictionary fixes * disable test and stress nuisances Low Latency Mode TODOs (VSadov#35) * Gate and new Lock, also GC thread spin/rate * barrier tweaks * GetGCSafeMethodTable * Suspend SpinWait tweak * GetMemoryInfo throttling * collection heuristics * avail ram * recycler and env changes * barriers * bulk copy * gc spin tweak * TryPopWithTryEnter * small commit is back * m_helperWoken * AskForHelp * tweaks * do stacks last * only lock changes * AllocAligned * misalign TLABs * prefer concurrent in LowLat mode * worklist * spin in TryEnter * rationalizing mark chunk size * shorter card groups * a few todos * Gen0 Gen1 switches * gcTHP switch * tweak conc block time * more conservative trimming * fixes for OSX * fix for arm64 * tweak helper counts * round up * helper --> worker Arm64 tweaks (VSadov#36) * tweaks * Gen2Target * trimmer pause * style and comment fixes Improve pacing (VSadov#37) * pacing tweaks and fixes * 2025 * RelocatedToUnchecked * cmp when checking same region * coments Concurrent Mark completion and Card Cleaning improvements (VSadov#38) * simpler ShouldDoConcurrent * m_ccHelpersNum * more pacing tweaks * comments and todos fix after rebase Concurrent phase completion improvements. (VSadov#39) Implement GCMemoryInfo.TotalCommittedBytes (VSadov#40) Fix scenarios around committing the page map (VSadov#49) * Make page map reservation and commit more precise. * fix for arm64 * better comment * one more comment Report collection counts non-inclusively (VSadov#51) Revert "Report collection counts non-inclusively (VSadov#51)" (VSadov#52) This reverts commit 50b175b. Implement GetTotalPauseDuration and GC counters (VSadov#50) * Implement GC counters * Introduce a separate set of counters * GCMemoryInfo.PauseTimePercentage --------- Co-authored-by: vsadov <8218165+VSadov@users.noreply.github.com> fixes after rebasing Make ByRefWriteBarrier to use the same call convention as in standard GC for R2R compatibility. (VSadov#56) Reduce pacing frequency. (VSadov#57) * DOTNET_gcPace knob * less frequent alloc pacing fixes (VSadov#58) short circuit gen0 collection if surviving set is too large (VSadov#61) Improve efficiency on some finalization code paths (VSadov#63) * Finalization queue improvements * test related fixes Inject `{SatoriGC, true}` into config values. (VSadov#67) * Inject {SatoriGC, true} into config values. * DOTNET_gcForceCompact Improving compaction heuristics + Some other tweaks while looking at compaction. (VSadov#74) fix osx-x64 build with new Apple compilers
* Implement GC counters * Introduce a separate set of counters * GCMemoryInfo.PauseTimePercentage --------- Co-authored-by: vsadov <8218165+VSadov@users.noreply.github.com>
* Implement GC counters * Introduce a separate set of counters * GCMemoryInfo.PauseTimePercentage --------- Co-authored-by: vsadov <8218165+VSadov@users.noreply.github.com>
Closes #42