G1 Logging and Phases

Bhasin, Vishal Vishal.Bhasin at sabre-holdings.com
Wed Mar 31 16:20:12 UTC 2010


Tony, 

So, based on your response - GC pause (young), GC pause (partial), GC
remark & GC cleanup are stop-the-world, any other lines in log (gc
activity) that would also be stop-the-world? Thanks!

-----Original Message-----
From: hotspot-gc-use-bounces at openjdk.java.net
[mailto:hotspot-gc-use-bounces at openjdk.java.net] On Behalf Of Tony
Printezis
Sent: Wednesday, March 31, 2010 10:52 AM
To: Highley, Ryan
Cc: hotspot-gc-use at openjdk.java.net
Subject: Re: G1 Logging and Phases

Ryan,

Hi. See inline.

Highley, Ryan wrote:
>
> Hello,
>
> I have a few validation questions based on the following G1 GC log 
> excerpt.
>
> 19.298: [GC pause (young) (initial-mark) 2141M->1957M(4000M)20.433: 
> [GC concurrent-mark-start]
>
> , 1.1346080 secs]
>
> 20.721: [GC pause (young)20.761: [GC concurrent-mark-end, 0.2501590
sec]
>
> 2300M->2119M(4000M), 1.3597880 secs]
>
> 22.081: [GC remark, 0.0012060 secs]
>
> 22.083: [GC concurrent-count-start]
>
> 22.452: [GC pause (young) 2469M->2119M(4000M), 0.3101740 secs]
>
> 22.976: [GC concurrent-count-end, 0.8934030]
>
> 23.063: [GC cleanup 2435M->639M(4000M), 0.0142190 secs]
>
> 23.078: [GC concurrent-cleanup-start]
>
> 23.086: [GC concurrent-cleanup-end, 0.0083300]
>
> 23.108: [GC pause (young) 660M->338M(4000M), 0.2031580 secs]
>
> 23.632: [GC pause (partial) 668M->346M(4000M), 0.3303010 secs]
>
> From what I read in concurrentMarkThread.cpp and g1CollectorPolicy.cpp

> in the current OpenJDK 7 G1 source code, could I please get the 
> following confirmed or denied to ensure my understanding is correct?
>
> The "GC pause" lines are indeed stop-the-world pauses as blatantly 
> marked. J
>
Yes.
>
> The "GC pause (young)" lines are only evacuating young gen regions.
>
Yes.
>
> The "GC pause (young) (initial-mark)" line is both evacuating young 
> gen regions and prepping for a full collection with initial marking of

> roots.
>
>
Yes, provided by a "full collection" you mean a marking cycle (by "full 
collections" we refer to GCs that collect the entire heap in a STW
phase).
>
> The "remark" line is also a stop-the-world pause, i.e. the G1 "Final 
> Marking Pause" noted in the G1 whitepaper.
>
Yes.
>
> The "cleanup" line is also a stop-the-world pause and finalizes the 
> live object counts and sizes.
>
Yes. And it also reclaims regions that have no live objects.
>
> The heap allocated size should be the ending size reported on the 
> "cleanup" line plus any allocations and/or GC activity that occur 
> during the concurrent cleanup phase.
>
>
I'm not quite sure what you're trying to say. The line below

23.063: [GC cleanup 2435M->639M(4000M), 0.0142190 secs]

says that there was a lot of garbage in your heap and the marking phase 
found 1796MB worth of regions that contained no live objects. So, they 
were reclaimed during cleanup.
>
> All "concurrent" lines run concurrently with application threads, 
> similar to the CMS behavior, and in a set of one or more 
> ConcurrentMarkThread instances.
>
There's only one ConcurrentMarkThread (which is the "controller" thread 
if you want), which spawns parallel workers.

Tony
>
>
> Thank you for your help,
>
> Ryan
>
>
------------------------------------------------------------------------
>
> _______________________________________________
> hotspot-gc-use mailing list
> hotspot-gc-use at openjdk.java.net
> http://mail.openjdk.java.net/mailman/listinfo/hotspot-gc-use
>   
_______________________________________________
hotspot-gc-use mailing list
hotspot-gc-use at openjdk.java.net
http://mail.openjdk.java.net/mailman/listinfo/hotspot-gc-use
_______________________________________________
hotspot-gc-use mailing list
hotspot-gc-use at openjdk.java.net
http://mail.openjdk.java.net/mailman/listinfo/hotspot-gc-use



More information about the hotspot-gc-dev mailing list