RFR: Fix Region Promotion
Roman Kennke
rkennke at openjdk.java.net
Wed May 5 19:33:13 UTC 2021
On Wed, 5 May 2021 18:22:38 GMT, William Kemper <wkemper at openjdk.org> wrote:
> This is rebased pull request of https://github.com/openjdk/shenandoah/pull/32.
>
> There are bugs in region promotion.
>
> * Humongous object continuation region remainder object starts are not registered for remembered set scanning purposes.
> * Also, iterating over humongous objects at promotion time to set card table values is inefficient. This is better delayed until card table scanning.
> * Regions that are not either regular or humongous should not get promoted, in particular the cset region state needs to be excluded.
> * We need to prevent regions that contain TLABs or GCLABs from getting promoted with these remaining active. One could retire those LABs once again at final update refs, but that would be inefficient. An alternative defensive and robust fix is to exclude regions that contain any TLAB or GCLAB from promotion. This should not restrict promotions much, because regions tend to fill up as they age and eventually they won't have LABs.
>
> All of the above is fixed by the commits proposed here.
> This PR is best applied after PR #30, the outcome of which it is rebased to at the moment.
Looks good. Only minor comment/question.
src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp line 1274:
> 1272: r->set_young_lab_flag();
> 1273: }
> 1274: }
Are you not interested in TLABs and PLABs here?
src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp line 1293:
> 1291: r->set_young_lab_flag();
> 1292: }
> 1293: }
Ah ok I see you handle TLABs here. Maybe move this into the ShenandoahTagGCLABClosure? What about PLABs?
-------------
PR: https://git.openjdk.java.net/shenandoah/pull/36
More information about the shenandoah-dev
mailing list