Request for review(M) - 6720334, 6720309

Igor Veresov Igor.Veresov at Sun.COM
Thu Feb 26 22:20:49 UTC 2009

Webrev has been updated after a fruitful discussion with Andrey (Thanks!):


On Wednesday 25 February 2009 16:40:11 Igor Veresov wrote:
> Fixed 6720309: G1: don't synchronously update RSet during evacuation pauses
> Fixed 6720334: G1: don't update RSets of collection set regions during an
> evacuation pause
> During evacuation pauses in G1 the move of an object might cause remembered
> set entries to be updated. Right now, we do those synchronously (i.e, they
> are updated there and then and are visible at the end of the collection).
> Unfortunately, those synchronous updates impose a non-trivial overhead on
> the GC pauses. The fix uses the existing concurrent refinement thread to
> update RSets concurrently - the cards for the update objects are put into
> update buffers and processed after the collection.
> In addition, we don't need to update remembered sets of any of the regions
> in the collection set. We explicitly keep track of references into the
> collection set during remembered set scanning, so there's no point in
> actually updating the remembered sets. Also, after the collection, all
> regions in the collection set will be reclaimed, along with their
> remembered set, so it is pointless to actually update their remembered
> sets.
> However in the case of the evacuation failure we must perform these
> updates. The fix delays the updates until it's clear that the evacuation
> failure has occurred and schedules them to be applied concurrently after
> the collection.
> As a result of the fixes (measured on sunfire x4200 (2x2 Opteron)):
>  - copy time improved 30%
>  - synchronous Rset update improved 30%
>  - total collection pause time improved 20-25%%
> Also fixed an issue with the pause time computation in the concurrent
> refinement thread.
> Webrev:
> Testing: specjbb2005, specjbb2000, jprt
> igor

More information about the hotspot-gc-dev mailing list