RFR: DRAFT: Expand old on demand [v43]

Kelvin Nilsen kdnilsen at openjdk.org
Fri May 12 05:33:50 UTC 2023


> This PR describes several proposed changes to dynamically adjust the sizes of old-gen and young-gen.  In general, the objective is to keep old-gen as small as possible so that there is an abundance of memory available for the young-gen allocation runway.
> 
> As currently drafted, there are regression failures.  This DRAFT PR is published for the purpose of facilitating a careful code review.

Kelvin Nilsen has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains 126 commits:

 - Merge remote-tracking branch 'origin' into expand-old-on-demand
 - Fix whitespace
 - Weaken some assertions
   
   As written, these assertions fail if generation->is_global().  It may
   work to rewrite these assertions using accessor methods used(),
   humongous_waste(), and affiliated_region_count() instead of the instance
   field values.
 - Fix some assertions
   
   One assertion was too strong.  Several others were too weak.
 - Reduce guaranteed young GC interval to 30 seconds
   
   It had been set to 15 seconds after observing that the default value of
   5 minutes was resulting in degenerated cycles because GC triggers were
   too lazy.  The value of 30 seconds has been observed to not result in
   degenerated GC with our two PhasedUpdates netflix workloads.
 - Tidy code for integration
   
   Two "global" variables are no longer needed: thread_iteration_roots and
   MIXED_EVACUATIONS_ENABLED.
 - Reorder lines of code to reduce diffs from original code
 - Remove irrelevant comment
   
   ShenandoahGenerationSizer::heap_size_changed() comment said this was not
   hooked anywhere.  More recently, we have figured out two places that
   need to invoke this service.
 - Enable more tests on this branch
 - Update global usage following full gc even when non-generational mode
 - ... and 116 more: https://git.openjdk.org/shenandoah/compare/a2ab9979...b84c8cb1

-------------

Changes: https://git.openjdk.org/shenandoah/pull/248/files
 Webrev: https://webrevs.openjdk.org/?repo=shenandoah&pr=248&range=42
  Stats: 3099 lines in 34 files changed: 1700 ins; 899 del; 500 mod
  Patch: https://git.openjdk.org/shenandoah/pull/248.diff
  Fetch: git fetch https://git.openjdk.org/shenandoah.git pull/248/head:pull/248

PR: https://git.openjdk.org/shenandoah/pull/248


More information about the shenandoah-dev mailing list