RFR: Expand old on demand [v55]

Kelvin Nilsen kdnilsen at openjdk.org
Mon May 22 17:10:25 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.
> 
> This PR now passes all GHA pre-integration tests and other internal CI tests.

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

 - Merge remote-tracking branch 'origin' into expand-old-on-demand
 - Remove extra debugging instrumentation
 - Only anticipate promotion for younger regions if is_aging_cycle()
 - Fix some syntax errors
   
   related to preceding commit
 - Better logging and fix fullgc to clear old deficit and surplus
 - Fix typo in young_unaffiliated_regions calculation
 - Improve handoff of generation sizing impacts
   
   At the end of a completed GC cycle, we make adjustments in the
   generation sizes.  These adjusted are based on the number of trash
   regions (the size of the just-evacuated collection set) and the number
   of regions needed within old-gen to support any mixed evacuation effort
   or promotion that is anticipated to happen during the next GC cycle.
   Recycling of trashed regions and transfer of region membership between
   generations happens after we rebuild the free set.  This commit assures that
   the free set rebuild process know how much memory will eventually be
   available in each generation after we finish reclaiming trashed regions
   and transfering regions between generations.
 - Use max_capacity() rather than soft_max_capacity() for budgeting
 - Fix whitespace
 - Remove unused variable from function
   
   This causes a compiler error on Windows builds.
 - ... and 132 more: https://git.openjdk.org/shenandoah/compare/d7a706ef...53c899cd

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

Changes: https://git.openjdk.org/shenandoah/pull/248/files
 Webrev: https://webrevs.openjdk.org/?repo=shenandoah&pr=248&range=54
  Stats: 3386 lines in 35 files changed: 1946 ins; 934 del; 506 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