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