RFR (S): 8067341: Modify PLAB sizing algorithm to waste less
Thomas Schatzl
thomas.schatzl at oracle.com
Wed Aug 26 09:54:57 UTC 2015
Hi Jon (and Eric),
thanks for your reviews.
On Tue, 2015-08-25 at 16:09 -0700, Jon Masamitsu wrote:
> http://cr.openjdk.java.net/~tschatzl/8067341/webrev/src/share/vm/gc/g1/g1_globals.hpp.frames.html
>
> 85 experimental(size_t, G1ExpectedAveragePLABOccupancyPercent, 50, \
> 86 "Expected average occupancy of PLABs after GC in percent.") \
> 87 range(0, 100) \
>
> Range should be (1, 100) since you divide by
> G1ExpectedAveragePLABOccupancyPercent
> in the calculations?
>
Okay, good catch. I introduced that variable very late.
> http://cr.openjdk.java.net/~tschatzl/8067341/webrev/src/share/vm/gc/g1/g1EvacStats.cpp.frames.html
>
> 77 size_t const waste_used_for_calculation = used() > _region_end_waste ? used() - _region_end_waste : 0;
>
> "waste_used_for_calculation" is a measure of "used" during the GC
> so maybe a better name would be "used_for_waste_calculation" or
> "used_for_PLAB_calculation"?
Okay.
> When _region_end_waste is high, waste_used_for_calculation under
> estimates the
> amount used so under estimates the amount of waste (since the waste
> is a percentage of waste_used_for_calculation ) and so lowers the size
> of the next PLAB. I can see that it scales reasonably.
>
> Why G1ExpectedAveragePLABOccupancyPercent that can be different than 50?
>
> If it is so that the user can scale the PLAB's up or down, what about
That is the intent.
> scale factor called G1PLABPercent?
That name seems to me a bit too unspecific, I chose
G1PLABOccupancyFactor for this revision. Feel free to comment on this.
>
> 80 size_t const total_waste_allowed = waste_used_for_calculation * (TargetPLABWastePct / 100);
> 81 size_t const cur_plab_sz = total_waste_allowed * (G1PLABPercent / 100)
>
>
> G1PLABPercent would be easier to explain. It's effect would be linear
> with its
> value (as opposed to inversely proportional) and is a shorter name :-).
In that case to me a simple scale factor seems more appropriate - I
created a new webrev to look at:
http://cr.openjdk.java.net/~tschatzl/8067341/webrev.1
http://cr.openjdk.java.net/~tschatzl/8067341/webrev.0_to_1
I also tried to improve the documentation.
Thanks,
Thomas
More information about the hotspot-gc-dev
mailing list