RFR (S): 8003237: G1: Reduce unnecessary (and failing) allocation attempts when handling an evacuation failure

Thomas Schatzl thomas.schatzl at oracle.com
Mon Aug 3 12:35:20 UTC 2015


Hi all,

  can I have reviews for this small change that improves evacuation
failure handling by short-cutting copy_to_survivor_space() when there is
no more space left?

In effect this makes the parallel phase during GC have the same
performance as if there is no evacuation failure, and I could not
measure regressions in the normal case either.

The change implements two things: first, notice when there is no more
space left in the last gen (i.e. old), and if so, short-cut
ParScanThreadState::copy_to_survivor_space(). The other change is to not
try to ask the free list for new regions if it's empty to avoid taking
the lock in the time window between the first few evac failures and when
space is completely empty.

There is still the somewhat heavyweight cleanup phases after evacuation
failure.

CR:
https://bugs.openjdk.java.net/browse/JDK-8003237
Webrev:
http://cr.openjdk.java.net/~tschatzl/8003237/webrev/
Testing:
jprt, lots of performance measurements with and without this change
compiled in

Thanks,
  Thomas




More information about the hotspot-gc-dev mailing list