RFR: Expand old on demand [v57]

Kelvin Nilsen kdnilsen at openjdk.org
Tue May 23 16:49:16 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 incrementally with one additional commit since the last revision:

  Change ShenandoahFullGCThreshold defaulit
  
  This experimental parameter specifies how many degenerated GCs to
  perform before upgrading the degenerated GC to a Full GC.  Prior to this
  change, the default value was 3.  This changes the default to 64.  In
  general, upgrading degenerated GC to Full GC is to be discouraged
  because Full GC duplicates all of the work performed by concurrent GC
  before degeneration occurs and because concurrent GC triggered
  immediately following completion of FullGC is generally ineffective
  because there has been no time for objects allocated following
  completion of FullGC to die.  In many workload scenarios, this results
  in a deadly embrace between repeated interleaving of interrupted
  concurrent GC followed by degenerated GC that upgrades to FullGC.
  A series of degenerated GCs is much more effective because the
  degenerated GC preserves the progress made by concurrent GC rather than
  duplicating those efforts, and because the degenerated GC leaves
  floating garbage around which will be cleaned up by the next concurrent
  GC.  On Specjbb, this change improved critical JOPS and max JOPS scores
  by over 20%.

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

Changes:
  - all: https://git.openjdk.org/shenandoah/pull/248/files
  - new: https://git.openjdk.org/shenandoah/pull/248/files/9195007a..b1e5c267

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=shenandoah&pr=248&range=56
 - incr: https://webrevs.openjdk.org/?repo=shenandoah&pr=248&range=55-56

  Stats: 1 line in 1 file changed: 0 ins; 0 del; 1 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