RFR (M): 8019342: G1: High "Other" time most likely due to card redirtying

Thomas Schatzl thomas.schatzl at oracle.com
Fri Apr 11 10:53:51 UTC 2014


Hi all,

  can I have a few reviews for the following change that parallelizes
card redirtying and improves log output?

On a few applications card redirtying time is very large, taking tens of
ms. Investigation showed that there are no really clever ways to avoid
this work when keeping the current way of handling not-redirtied cards
except parallelizing it.

I.e. the ideas referred to in the CR
(https://bugs.openjdk.java.net/browse/JDK-8019342?focusedCommentId=13346944&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-13346944) do not yield any good results to make it worth implementing these suggestions.

This CR implements parallelization by putting this work into an
AbstractGangTask and do the work in parallel; for that I added a
par_apply_closure_to_all_completed_buffers() method in
DirtyCardQueueSet, claiming work on a per chunk basis. This yields
(almost) linear speedup.

Logging code has been improved to show the number of cards processed per
thread too.

Note that there is still some code duplication with iterating over the
DCQS during verification: that will be fixed in a followup CR.

Also, at some point I will merge the various "Other" gangtasks into a
single one to avoid startup/shutdown costs in another CR.

Webrev:
http://cr.openjdk.java.net/~tschatzl/8019342/webrev/

CR:
https://bugs.openjdk.java.net/browse/JDK-8019342

Testing:
jprt, common benchmarks

Thanks,
  Thomas





More information about the hotspot-gc-dev mailing list