diff --git a/harness/harness-common.rb b/harness/harness-common.rb index 6ee17f7e..cc39b258 100644 --- a/harness/harness-common.rb +++ b/harness/harness-common.rb @@ -146,7 +146,10 @@ def return_results(warmup_iterations, bench_iterations) yjit_stats = RubyVM::YJIT.runtime_stats if defined?(RubyVM::YJIT.enabled?) && RubyVM::YJIT.enabled? zjit_stats = RubyVM::ZJIT.stats if defined?(RubyVM::ZJIT.enabled?) && RubyVM::ZJIT.enabled? - # Collect our own peak mem usage as soon as reasonable after finishing the last iteration. + # Full GC then compact before measuring RSS so fragmentation doesn't inflate the number. + GC.start(full_mark: true, immediate_sweep: true) + GC.compact if GC.respond_to?(:compact) + rss = get_rss ruby_bench_results["rss"] = rss if maxrss = get_maxrss