RFR [M][7/7]: 8197932: Better split work in rebuild remembered sets phase
Stefan Johansson
stefan.johansson at oracle.com
Mon Mar 19 15:39:48 UTC 2018
Thanks Thomas,
On 2018-03-19 13:03, Thomas Schatzl wrote:
> Hi all,
>
> Stefan proposed to use some iterator over the work area that
> internally handles the boundary at the TAMS wrt to liveness when
> scanning.
>
> This makes the change a bit more compact, performance does not seem to
> differ, so why not... :)
I really like this approach :) A few additional small things:
src/hotspot/share/gc/g1/g1RemSet.cpp
787 if (!is_live(_current)) {
I would like to invert the if-statement in the LiveObjIterator
constructor and move the call to move_if_below_ntams() into the
if-statement updating _current, something like this:
if (is_live(_current)) {
// Non-objArrays were scanned by the previous part of that region.
if (_current < mr.start() && !oop(_current)->is_objArray()) {
_current += oop(_current)->size();
// We might have positioned _current on a non-live object.
Reposition to the next
// live one if needed.
move_if_below_ntams();
}
}
} else {
...
}
926 #ifdef ASSERT
927 // In the final iteration of the loop the region might have
been eagerly reclaimed.
928 // Simply filter out those regions. We can not just use region
type because there
929 // might have already been new allocations into these regions.
930 HeapWord* const top_at_rebuild_start =
_cm->top_at_rebuild_start(region_idx);
931 assert(!hr->is_old() ||
What do you think about making this assert into a guarantee or use
DEBUG_ONLY() to avoid the #ifdef ASSERT? Also maybe adding something to
the comment explaining that it is the check on top_at_rebuild_start that
filters out eagerly reclaimed regions.
---
src/hotspot/share/gc/g1/g1_globals.hpp
259 experimental(size_t, G1RebuildRemSetChunkSize, 256 * K,
Did you test to see if changing the G1RebuildRemSetChunkSize flag had
any impact on performance, otherwise maybe we could make it a constant
instead.
---
Otherwise I think this looks great.
Thanks,
Stefan
>
> Webrevs:
> http://cr.openjdk.java.net/~tschatzl/8197932/webrev.1_to_2/ (diff)
> http://cr.openjdk.java.net/~tschatzl/8197932/webrev.2/ (full)
> testing:
> hs-tier1-5
>
> Thanks,
> Thomas
>
More information about the hotspot-gc-dev
mailing list