RFR (S): 8073466: Remove buffer retaining functionality and clean up in ParGCAllocBuffer

Thomas Schatzl thomas.schatzl at oracle.com
Fri Feb 27 11:58:38 UTC 2015


Hi all,

  I would like to ask for one Reviewer review.

Current webrevs are at:

http://cr.openjdk.java.net/~tschatzl/8073466/webrev.1/
http://cr.openjdk.java.net/~tschatzl/8073466/webrev.0_to_1/

Thanks,
  Thomas

On Fri, 2015-02-20 at 15:40 +0100, Thomas Schatzl wrote:
> Hi all,
> 
>   can I have reviews for the following cleanup? It removes the buffer
> retain functionality of ParGCAllocBuffer.
> 
> It has (once I guess, but actually I am not sure because that must have
> been long time ago) been used to retain the space at the end of the PLAB
> for the next GC.
> 
> Nobody uses it. So that and all related code can be removed.
> 
> Here is a long description of changes:
> 
> ParGCAllocBuffer::flush_stats_and_retire() is always called with true
> for "end_of_gc" and false for the "retain" parameter.
> When moving that into that call to retire(), you will notice that
> retire() is always called with retain=false.
> 
> Looking at ParGCAllocBuffer::retire(), if retain is always false,
> _retained will never be true, which means that _retained_filler is never
> used. With _retained always false, all of the asserts in retire() always
> evaluate to true, so the end_of_gc parameter is useless.
> 
> (Actually the whole _retained_filler is never loaded from, making this
> entire functionality non-working in the first place).
> 
> Now looking at what retire() does, there is actually a bug in
> flush_stats_and_retire() because retire() adds to the waste (the area
> between _top and _hard_top), but flush() is called first.
> 
> Looking at the code, we also only flush stats when ResizePLAB is set,
> due to performance concerns. However this means that the output provided
> by PrintPLAB will not be updated if ResizePLAB is not set, which is not
> desirable at all (for comparison of fragmentation with ResizePLAB
> enabled). I did not see the three atomic adds as a performance problem,
> as this method is called once per PLAB per GC.
> 
> There is a small additional change in PLABStats::adjust_desired_plab_sz
> where I merged the two separate "if (PrintPLAB)" statements.
> 
> Other cleanup changes include:
>   - removed an obscure "XXX" comment
>   - removed a PRAGMA
>   - cleaned up includes (BlockOffsetTable - huh?)
>   - tried to improve comments
> 
> CR:
> https://bugs.openjdk.java.net/browse/JDK-8073466
> Webrev:
> http://cr.openjdk.java.net/~tschatzl/8073466/webrev/
> testing:
> jprt, perf benchmarks with G1 and CMS
> 
> Thanks,
>   Thomas 
> 
> 




More information about the hotspot-gc-dev mailing list