8383892: Shenandoah: Decouple allocation rate sampling from GC cycle#31047
8383892: Shenandoah: Decouple allocation rate sampling from GC cycle#31047earthling-amzn wants to merge 57 commits intoopenjdk:masterfrom
Conversation
…facilitate comparison with existing sampling
…ecoupled from gc cycles
Lower decay factor on baseline to smooth it out Disable STW penality adjustment for margin of error
…r improved readability
|
👋 Welcome back wkemper! A progress list of the required criteria for merging this PR into |
|
❗ This change is not yet ready to be integrated. |
|
@earthling-amzn The following labels will be automatically applied to this pull request:
When this pull request is ready to be reviewed, an "RFR" email will be sent to the corresponding mailing lists. If you would like to change these labels, use the /label pull request command. |
|
The total number of required reviews for this PR has been set to 2 based on the presence of this label: |
TL;DR;
The idea for this change started way back during the discussion of https://git.openjdk.org/jdk/pull/27398. I have been nursing the branch along for many months. The accelerated triggers PR threw it for a loop, but I have recently found the time to work through those changes.
bytes_allocated_since_last_gcand all of its usages are removedShenandoahWeightedSeqnowMotivation
Presently, Shenandoah accumulates allocations in a
bytes_allocated_since_last_gcvariable. Although it is sampled periodically, it is only reset when a gc cycles runs. Correctly managing this variable has proven to be complicated:This approach leads to inconsistent allocation rate samples and predictions, and code complexity.
This task decouples the management of the allocation accumulation and sampling from GC cycles and moves it to the allocation thread.
Results
Consider these critical_jops results from specjbb 2015 on a small (10g) heap:
On a medium (30g) heap:
p100 latency measurements on the Extremem benchmark are also improved.
Progress
Issue
Reviewing
Using
gitCheckout this PR locally:
$ git fetch https://git.openjdk.org/jdk.git pull/31047/head:pull/31047$ git checkout pull/31047Update a local copy of the PR:
$ git checkout pull/31047$ git pull https://git.openjdk.org/jdk.git pull/31047/headUsing Skara CLI tools
Checkout this PR locally:
$ git pr checkout 31047View PR using the GUI difftool:
$ git pr show -t 31047Using diff file
Download this PR as a diff file:
https://git.openjdk.org/jdk/pull/31047.diff
Using Webrev
Link to Webrev Comment