RFR: 8255984: Shenandoah: "adaptive" heuristic is prone to missing load spikes [v2]
shade at openjdk.java.net
Fri Nov 13 18:02:57 UTC 2020
On Fri, 13 Nov 2020 17:46:09 GMT, Aleksey Shipilev <shade at openjdk.org> wrote:
>> earthling-amzn has updated the pull request incrementally with two additional commits since the last revision:
>> - Remove const qualifier from should_start_gc
>> This lets the heuristics update state without const_casts.
>> - Rename ShenandoahReactive flags to ShenandoahAdaptive flags.
> The more I study this patch, the more I like it, good job. Another round of changes below. I fixed a few mentioned issues in my private working copy while doing initial performance testing. Would be good to have an updated PR for testing too.
Yes, it mostly matches what I would expect from this heuristic improvement. As it stands right now, "adaptive" balances way too closely to the cliff, and so it is expected that improvement would make GC cycles more frequent to move GC triggers away from it. On the chart, "Headroom" probably means "Average allocation rate" trigger? It still a bit sad we cannot handle `smoothness=0.0`, but that probably requires future-predicting capabilities not yet available at current technology level.
More information about the hotspot-gc-dev