From 8cd5724a3adade76b05a521e4a5a6ec412c46f31 Mon Sep 17 00:00:00 2001 From: vsadov <8218165+VSadov@users.noreply.github.com> Date: Sat, 18 Jun 2022 18:35:33 -0700 Subject: [PATCH] bucket tweaks --- src/coreclr/gc/satori/SatoriRecycler.cpp | 2 +- src/coreclr/gc/satori/SatoriRegion.cpp | 4 ++-- src/coreclr/gc/satori/SatoriRegion.h | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/coreclr/gc/satori/SatoriRecycler.cpp b/src/coreclr/gc/satori/SatoriRecycler.cpp index 4762ea2acb1..3f0873be322 100644 --- a/src/coreclr/gc/satori/SatoriRecycler.cpp +++ b/src/coreclr/gc/satori/SatoriRecycler.cpp @@ -3491,7 +3491,7 @@ void SatoriRecycler::KeepRegion(SatoriRegion* curRegion) // we will try reusing half-empty regions, unless they are too fragmented curRegion->ReusableFor() = SatoriRegion::ReuseLevel::None; if (curRegion->Occupancy() < Satori::REGION_SIZE_GRANULARITY / 2 && - curRegion->HasFreeSpaceInTop4Buckets()) + curRegion->HasFreeSpaceInTopNBuckets(IsLowLatencyMode() ? 6 : 2)) { _ASSERTE(curRegion->Size() == Satori::REGION_SIZE_GRANULARITY); diff --git a/src/coreclr/gc/satori/SatoriRegion.cpp b/src/coreclr/gc/satori/SatoriRegion.cpp index 98fb804baa4..852c7a834ae 100644 --- a/src/coreclr/gc/satori/SatoriRegion.cpp +++ b/src/coreclr/gc/satori/SatoriRegion.cpp @@ -331,10 +331,10 @@ bool SatoriRegion::HasFreeSpaceInTopBucket() return m_freeLists[Satori::FREELIST_COUNT - 1]; } -bool SatoriRegion::HasFreeSpaceInTop4Buckets() +bool SatoriRegion::HasFreeSpaceInTopNBuckets(int n) { //TUNING: more buckets means more aggressive demotion. - for (int bucket = Satori::FREELIST_COUNT - 4; bucket < Satori::FREELIST_COUNT; bucket++) + for (int bucket = Satori::FREELIST_COUNT - n; bucket < Satori::FREELIST_COUNT; bucket++) { if (m_freeLists[bucket]) { diff --git a/src/coreclr/gc/satori/SatoriRegion.h b/src/coreclr/gc/satori/SatoriRegion.h index 90323fb0b87..12f29f83878 100644 --- a/src/coreclr/gc/satori/SatoriRegion.h +++ b/src/coreclr/gc/satori/SatoriRegion.h @@ -79,7 +79,7 @@ public: void AddFreeSpace(SatoriObject* freeObj); bool HasFreeSpaceInTopBucket(); - bool HasFreeSpaceInTop4Buckets(); + bool HasFreeSpaceInTopNBuckets(int n); void StartEscapeTrackingRelease(size_t threadTag); void StopEscapeTracking();