RFR: 8324995: Shenandoah: Skip to full gc for humongous allocation failures [v3]

Kelvin Nilsen kdnilsen at openjdk.org
Thu Feb 8 22:03:03 UTC 2024


On Wed, 31 Jan 2024 21:50:06 GMT, William Kemper <wkemper at openjdk.org> wrote:

>> Shenandoah degenerated cycles do not compact regions. When a humongous allocation fails, it is likely due to fragmentation which is better addressed by a full gc.
>
> William Kemper has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Fix typo in comment

I ran an experiment in which I discourage full GC.  Attached is the diff from this branch, and an spreadsheet summarizing the performance results.  HIghlights:

1. I overrode the default ShenandoahFullGCThreshold with 64 on the command line.
2. should_degenerate_cycle() only returns false if a humongous alloc failed and the cumulative requested humongous size > the amount of humongous memory available at the most recent free-set rebuild operation, or if consecutive_degen_count > ShenandoahFullGCThreshold.  (This mostly preserves existing behavior, but gives users the option of increasing ShenandoahFullGCThreshold as I did.)
3. Across almost all latency metrics, the new code performs better than original code.
4. Full GCs decreased to a maximum of 4 on any run, whereas the original max full gc was 104.  Average number of full GCs decreased to ~3 from typically more than 50.
5. We do quite a few more degens and fewer successful concurrent GCs.
6. More testing should be done with more diverse workloads, and after we fix the existing problem with VM_HandshakeAllThreads::do_it().

See attached diff file and excel spreadhsheet for more detail.

[discourage-full-experiment.xlsx](https://github.com/openjdk/jdk/files/14215043/discourage-full-experiment.xlsx)

[discourage-full-experiment.diff.txt](https://github.com/openjdk/jdk/files/14215058/discourage-full-experiment.diff.txt)

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

PR Comment: https://git.openjdk.org/jdk/pull/17638#issuecomment-1934998244
PR Comment: https://git.openjdk.org/jdk/pull/17638#issuecomment-1935000164


More information about the hotspot-gc-dev mailing list