Request for review(M) - 6720334, 6720309

Paul Hohensee Paul.Hohensee at Sun.COM
Thu Feb 26 18:10:04 UTC 2009



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