RFR (M): 8136681: Factor out IHOP calculation from G1CollectorPolicy

Thomas Schatzl thomas.schatzl at oracle.com
Fri Nov 6 10:39:04 UTC 2015


Hi all,

  after Sangheon's review of 8136679 I looked for similar issues
(division by zero mainly), and in case of JDK-8136681 decided to add an
assert that verifies that _target_occupancy is always > 0 to make clear
that that cannot happen for the "static" IHOPControl.

New webrevs:
http://cr.openjdk.java.net/~tschatzl/8136681/webrev.0_to_1/ (diff)
http://cr.openjdk.java.net/~tschatzl/8136681/webrev.1/ (new)

Thanks,
  Thomas

On Thu, 2015-11-05 at 10:42 +0100, Thomas Schatzl wrote:
> Hi all,
> 
>   can I have reviews for this preparatory change for adaptive IHOP
> sizing, that factors out the IHOP calculation from G1Collectorpolicy
> into separate classes?
> 
> So instead of having this single line at G1CollectorPolicy:944
> 
>  944   size_t marking_initiating_used_threshold =
>  945     (_g1->capacity() / 100) * InitiatingHeapOccupancyPercent;
> [...]
>  949   if ((cur_used_bytes + alloc_byte_size) >
> marking_initiating_used_threshold) {
> 
> that determines whether marking should start, that decision is
> externalized into a G1IHOPControl class with a
> get_conc_mark_start_threshold() method.
> 
> This allows flexible replacement of the IHOP calculation algorithm
> depending on some switch using a factory method. 
> 
> In addition to that, this change tracks and passes several information
> IHOPControl instances need, like allocation between gcs, mutator time
> from initial mark to the first mixed gc, and others.
> 
> The change also adds some test.
> 
> It depends on all my recent patches in this area, namely:
> 8140689: Skip last young-only gc if nothing to do in the mixed gc phase
> 8140597: Forcing an initial mark causes G1 to abort mixed collections
> 8140585: PLAB statistics are flushed too late
> 8139874: After G1 Full GC, the next GC is always a young-only GC
> 8138740: Start initial mark right after mixed GC if needed
> 
> The problem is that it expects (and verifies) that the GC pauses are
> executed in the "correct" order.
> 
> There is no behavioral change in this CR.
> 
> CR:
> https://bugs.openjdk.java.net/browse/JDK-8136681
> Webrev:
> http://cr.openjdk.java.net/~tschatzl/8136681/webrev/
> Testing:
> jprt, vm.gc, lots of manual testing, new VM test
> 
> Note that SQE will create additional tests.
> 
> Thanks,
>   Thomas
> 




More information about the hotspot-gc-dev mailing list