RFR: Use PLAB for evacuations instead of TLAB

Zhengyu Gu zgu at redhat.com
Wed May 9 23:24:19 UTC 2018


> 
>> ShenandoahHeap.cpp L1499
>>    Need scope block for
>> 1499   ShenandoahGCPhase phase(ShenandoahPhaseTimings::make_parsable);
>> 1500   make_tlabs_parsable(true);
>>
>> or should just keep UseTLAB test here to avoid misleading timing info,
>> in case of phase time > 0.
> 
> We also need to always retire the GCLABs, regardless of UseTLABs, the
> test is moved into the retire_all_tlabs() code.
> 
Ah, I missed changes in make_tlabs_parsable() :-(

-Zhengyu

> I also fixed some other issues that came up in more testing:
> 
> A typo:
> 
> -  _collector_gclab_stats(new PLABStats("Shenandoah colletor GCLAB
> stats", YoungPLABSize, PLABWeight)),
> +  _collector_gclab_stats(new PLABStats("Shenandoah collector GCLAB
> stats", YoungPLABSize, PLABWeight)),
> 
> 
> Added a call to
> 
> +  accumulate_statistics_all_gclabs();
> 
> in op_init_updaterefs()
> 
> This latter one is very important. I only used to do this in
> op_final_evac() but this is almost never called. We need it to get
> appropriately sized GCLABs.
> 
> I ran some quick performance tests and nothing suspicious came up. Evac
> times are where they used to be. Will run comprehensive before/after
> comparison over night.
> 
> Eyeballing -Xlog:gc+plab=debug looks reasonable to me:
> 
> [164,441s][debug][gc,plab] GC(85) Shenandoah mutator GCLAB stats PLAB
> allocation: allocated: 1516008B, wasted: 72880B, unused: 486880B, used:
> 956248B, undo waste: 0B,
> [164,441s][debug][gc,plab] GC(85) Shenandoah mutator GCLAB stats sizing:
> calculated: 956248B, actual: 1271144B
> [164,441s][debug][gc,plab] GC(85) Shenandoah colletor GCLAB stats PLAB
> allocation: allocated: 182452224B, wasted: 357312B, unused: 9645144B,
> used: 172449768B, undo waste: 0B,
> [164,441s][debug][gc,plab] GC(85) Shenandoah colletor GCLAB stats
> sizing: calculated: 172449768B, actual: 199585872B
> 
> 
> This sizing looks about right.
> 
> Diff:
> http://cr.openjdk.java.net/~rkennke/plab-gclab/webrev.02.diff/
> Full:
> http://cr.openjdk.java.net/~rkennke/plab-gclab/webrev.02/
> 


More information about the shenandoah-dev mailing list