RFR (M): 8071913: Filter out entries to free/uncommitted regions during iteration

Thomas Schatzl thomas.schatzl at oracle.com
Tue Oct 2 11:28:57 UTC 2018


Hi all,

  can I have reviews for this change that makes sure that remembered
set entries to free or uncommitted regions are not touched during GC?

In order to implement uncommitting regions at remark we need to make
sure that these regions and their corresponding side data structures
are not touched by GC any more.

This change adds a simple filter in the remembered set iterator plus
some careful changes in various locations of the code to avoid just
that.

There are alternatives to this changes that have been considered but
ultimately rejected:

 - drop remembered sets when freeing regions: this would require us to
scan all remembered sets for such regions which is slow.

 - do the filtering directly in the iterator: while this has been
prototyped, and even gives a significant improvement in pause times
(~5%), the change would be much larger (1500 LOC). Since I am currently
reworking the remembered sets completely, I found it a waste of
reviewer's time to let you do this review now, and shortly afterwards
throw away all that code. I will incorporate the improvements into the
new code though. :)

If the remembered set changes won't make it e.g. for 12, we might
consider taking these changes in at a later time.

CR:
https://bugs.openjdk.java.net/browse/JDK-8071913
Webrev:
http://cr.openjdk.java.net/~tschatzl/8071913/webrev/
Testing:
hs-tier1-5,jdk-tier1-3, perf tested, no change in pause times or
(throughput) scores

Quite a few gc tests do extensive commit/uncommit of regions with the
corresponding exercise of the code.

Thanks,
  Thomas




More information about the hotspot-gc-dev mailing list