Skip to content

Commit ef2bd6d

Browse files
authored
Use live memory to estimate collection pages in mem balancer (#1050)
This PR fixes #918. We misinterpreted 'bytes collected during collection' in the paper, and used reclaimed pages for it. It actually means 'bytes that are traversed during collection'. We now use live pages to estimate the value.
1 parent 2b132cf commit ef2bd6d

File tree

1 file changed

+5
-7
lines changed

1 file changed

+5
-7
lines changed

src/util/heap/gc_trigger.rs

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,7 @@ struct MemBalancerStats {
208208
allocation_pages: f64,
209209
/// Allocation duration in secs
210210
allocation_time: f64,
211-
/// Collected memory in pages
211+
/// Collected memory in pages (memory traversed during collection)
212212
collection_pages: f64,
213213
/// Collection duration in secs
214214
collection_time: f64,
@@ -289,9 +289,8 @@ impl MemBalancerStats {
289289
) -> bool {
290290
if !plan.is_current_gc_nursery() {
291291
self.gc_end_live_pages = plan.get_mature_reserved_pages();
292-
self.collection_pages = self
293-
.gc_release_live_pages
294-
.saturating_sub(self.gc_end_live_pages) as f64;
292+
// Use live pages as an estimate for pages traversed during GC
293+
self.collection_pages = self.gc_end_live_pages as f64;
295294
trace!(
296295
"collected pages = mature live at gc end {} - mature live at gc release {} = {}",
297296
self.gc_release_live_pages,
@@ -327,9 +326,8 @@ impl MemBalancerStats {
327326
fn non_generational_mem_stats_on_gc_end<VM: VMBinding>(&mut self, mmtk: &'static MMTK<VM>) {
328327
self.gc_end_live_pages = mmtk.get_plan().get_reserved_pages();
329328
trace!("live pages = {}", self.gc_end_live_pages);
330-
self.collection_pages = self
331-
.gc_release_live_pages
332-
.saturating_sub(self.gc_end_live_pages) as f64;
329+
// Use live pages as an estimate for pages traversed during GC
330+
self.collection_pages = self.gc_end_live_pages as f64;
333331
trace!(
334332
"collected pages = live at gc end {} - live at gc release {} = {}",
335333
self.gc_release_live_pages,

0 commit comments

Comments
 (0)