RFR: 8255984: Shenandoah: "adaptive" heuristic is prone to missing load spikes [v6]

earthling-amzn github.com+71722661+earthling-amzn at openjdk.java.net
Fri Nov 20 23:41:08 UTC 2020

On Fri, 20 Nov 2020 07:03:38 GMT, Aleksey Shipilev <shade at openjdk.org> wrote:

>> earthling-amzn has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains 17 additional commits since the last revision:
>>  - Remove unused member
>>  - Avoid recomputing instantaneous allocation rate
>>  - Merge branch 'master' into shenandoah-reactive-heuristic
>>  - Fix wrong type for os::elapsedTime
>>  - Remove dependency from allocation rate to adaptive heuristic
>>  - Defend against underflow and division by zero
>>  - Inline calls to gc decision methods (vestige of an earlier design)
>>  - Use os::elapsedTime to avoid type issues and to be consistent with other heuristics code
>>  - Reuse instantaneous_rate method instead of duplicating code
>>  - Rename variables to improve readability
>>  - ... and 7 more: https://git.openjdk.java.net/jdk/compare/e152dd98...68ba6285
> Okay then! Time to integrate and do anything else in follow-ups.

Sorry, added one bug fix and another small change. The bug caused the average allocation rate to be much higher than it should be. The other change is to only consider the values which are actually sampled as a "spike" (as opposed to previously when it would recompute the instantaneous rate on every call to `should_start_gc`). For what it's worth, I made these changes while the headroom/penalty adjustments were disabled. I'm more comfortable with taking those adjustments out now.


PR: https://git.openjdk.java.net/jdk/pull/1099

More information about the hotspot-gc-dev mailing list