RFR: 8167679: G1 phase logging is messy

Erik Helin erik.helin at oracle.com
Fri Oct 14 14:00:10 UTC 2016

Hi all,

this patch re-organizes the slightly messy phase logging for G1. Right
now there are a couple of "top-level" phases at gc+phases=info level:
- Evacuate Collection Set
- Code Roots
- Merge Per-Thread States
- Clear card table
- Free Collection Set
- Other
(-Root Region Scan Waiting if it takes any time)

There is no reasoning for showing exactly these phases, they have more or
less just been added over the years. The "Other" phase includes multiple
miscellanous phases as well as unknown/unmeasured time. This patch
introduces four phases on the gc+phases=info level:
- Pre Evacuate Collectinon Set
- Evacuate Collection Set
- Post Evacuate Collection Set
- Other

where "Other" now is only unknown/unmeasured time. I have organized the
phases at gc+phases=debug level so they are now in "execution order":
- Pre Evacuate Collection Set
  - Choose Collection Set
  - Humongous Register
- Evacuate Collection Set
  - Ext Root Scanning
  - Update RS
  - Scan RS
  - Code Root Scanning
  - Object Copy
  - Termination
- Post Evacuate Collection Set
  - Code Roots Fixup
  - Preserve CM Refs
  - Reference Processing
  - Clear Card Table
  - Reference Enqueuing
  - Code Roots Purge
  - Redirty Cards
  - Free Collection Set
  - Humongous Reclaim
  - Expand Heap After Collection
- Other

The "Code Roots" phase at info level was removed since it doesn't make
sense to sum "Code Roots Fixup" and "Code Roots Purge", that shouldn't
have been done to begin with. 

As for the code, I removed a few macros and replaced them with just
normal functions.





More information about the hotspot-gc-dev mailing list