RFR (S/M): 8014078: G1: improve remembered set summary information by providing per region type information

Thomas Schatzl thomas.schatzl at oracle.com
Tue Sep 3 03:05:15 PDT 2013


Hi all,

  can I have reviews for the following change? It has already been
reviewed earlier
(http://mail.openjdk.java.net/pipermail/hotspot-gc-dev/2013-June/007431.html), but not pushed at that time because of concerns of introducing bugs so late in the jdk8 release process.

Changes in the code base have shown that this has not been a
particularly good idea, as this requires lots of work; since the change
itself is extremely low risk, includes test cases and provides useful
information, so we think it is okay to push.

This re-review is caused by mentioned changes: particularly the nmethod
changes (CR 7145569) added a new kind of remembered set entries which
need to be handled by the output.

This CR has the following effects:

- changes the output of -XX:+G1SummarizeRSetStats to contain a breakdown
of remembered set data structures by region type, i.e. young, humongous,
old, and free regions.

The resulting output looks as follows (just a -version run):

 Cumulative RS summary

 Recent concurrent refinement statistics
  Processed 0 cards
  Of 0 completed buffers:
            0 (  0.0%) by concurrent RS threads.
            0 (  0.0%) by mutator threads.
  Did 0 coarsenings.
  Concurrent RS threads times (s)
          0.00     0.00     0.00     0.00
  Concurrent sampling threads times (s)
          0.00

 Current rem set statistics
  Total per region rem sets sizes = 531K. Max = 2K.
           2K (  0.5%) by 1 Young regions
           0K (  0.0%) by 0 Humonguous regions
         528K ( 99.5%) by 183 Free regions
           0K (  0.0%) by 0 Old regions
   Static structures = 91K, free_lists = 0K.
    0 occupied cards represented.
            0 (  0.0%) entries by 1 Young regions
            0 (  0.0%) entries by 0 Humonguous regions
            0 (  0.0%) entries by 183 Free regions
            0 (  0.0%) entries by 0 Old regions
    Region with largest rem set = 0:(E)[0x0000000748e00000,0x0000000748e580e0,0x0000000748f00000], size = 2K, occupied = 0K.
  Total heap region code root sets sizes = 20K.  Max = 0K.
           0K (  0.5%) by 1 Young regions
           0K (  0.0%) by 0 Humonguous regions
          20K ( 99.5%) by 183 Free regions
           0K (  0.0%) by 0 Old regions
    0 code roots represented.
            0 (  0.0%) elements by 1 Young regions
            0 (  0.0%) elements by 0 Humonguous regions
            0 (  0.0%) elements by 183 Free regions
            0 (  0.0%) elements by 0 Old regions
    Region with largest amount of code roots = 183:(F)[0x0000000754500000,0x0000000754500000,0x0000000754600000], size = 0K, num_elems = 0.

- cleanup of output to be more readable (i.e. CR 8023253)

- cleanup of the test cases: a large part of the code base for this CR
reuses utility methods from 8013895, so I went ahead and factored out
common code into a separate file that both the tests for 801385 and this
CR use.

- all calculated memory size values are rounded downwards, instead of
sometimes up and sometimes down as earlier; I could not find a clear pattern
so I decided to always round down but if there is some reason to do
otherwise let me know.

bugs.sun.com
http://bugs.sun.com/view_bug.do?bug_id=8014078

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

Testing:
jprt, jtreg test case for 8014078 and 8013895

Hth,
  Thomas



More information about the hotspot-gc-dev mailing list