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

Thomas Schatzl thomas.schatzl at oracle.com
Tue May 28 08:26:15 UTC 2013


Hi all,

  could I get some reviews for the following change? It improves the
remembered set summary information available with -XX:
+G1SummarizeRSetStats by adding memory size and occupancy summaries
broken down by region type (young, humonguous, free, other).

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

Note that this webrev is based on 8013895; I provided a full changeset
including 8013895 at
http://cr.openjdk.java.net/~tschatzl/8014078/webrev/8014078.8013895.diff

JIRA:
https://jbs.oracle.com/bugs/browse/JDK-8014078

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

Testing:
jprt, jtreg tests

About the change:

- the output of G1SummarizeRSetStats now looks as follows (for
dacapo/eclipse):

After GC RS summary

 Concurrent RS processed 15299 cards
  Of 64 completed buffers:
           64 (100.0%) by concurrent RS threads.
            0 (  0.0%) by mutator threads.
  Concurrent RS threads times (s)
          0.06
  Concurrent sampling threads times (s)
          0.00
  Total heap region rem set sizes = 512K.  Max = 13K.
>>>>      17K (  3.4%) by 7 Young regions
>>>>       7K (  1.4%) by 3 Humonguous regions
>>>>     157K ( 30.6%) by 64 Free regions
>>>>     330K ( 64.6%) by 44 Other regions
  Static structures = 1K, free_lists = 254K.
    277592 occupied cards represented.
>>>>        0 (  0.0%) entries by 7 Young regions
>>>>        2 (  0.0%) entries by 3 Humonguous regions
>>>>        0 (  0.0%) entries by 64 Free regions
>>>>   277590 (100.0%) entries by 44 Other regions
    Max size region =
3:(O)[0x00000000f0900000,0x00000000f0a00000,0x00000000f0a00000], size =
14K, occupied = 25K.
    Did 0 coarsenings.

Notice the breakdown of memory size and card occupancy by region type
(marked with >>>> here).

"Young" regions include all types of young regions (i.e. survivor) as
survivor does not have a meaning for g1 outside of a gc.
"Humonguous" and "Free" are self-explaining. "Other" regions include
everything else.

- added a new flag G1SummarizeRSetStatsTime that is used to control the
time, i.e. before/after gc, when the periodicaly summaries are printed.
This integer is treated as a bitset, where a set first bit indicates a
request to print a summary after gc, the second bit a request to print a
summary before gc.

The alternative (which I'd like more) would be to change
G1SummarizeRSetStats to act like this new flag to avoid introducing a
new flag; however I'm hesitant to change this as G1SummarizeRSetStats is
a publicly available flag (although diagnostic).

- 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.

Thanks,
Thomas




More information about the hotspot-gc-dev mailing list