G1 Logging and Phases

Tony Printezis tony.printezis at oracle.com
Wed Mar 31 16:20:45 UTC 2010


Yes.

Tony

Bhasin, Vishal wrote:
> 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