CRR (S/M): 7049999: G1: Make the G1PrintHeapRegions output consistent and complete

Poonam Bajaj poonam.bajaj at oracle.com
Wed Jun 22 16:47:50 UTC 2011


Tony,

Thanks for the detailed explanation. The overall output looks good.

>> Will gc in between benchmarks
>>  G1HR RETIRE 0x6e800000 0x6e87bd98  
>
> The stop using the region for allocation so the retire even has the 
> region's top (in this case: 0x6e87bd98). Note that most regions are 
> full when retired and we ommit those events (we can easily deduce 
> those) to reduce the output volume.
One small question - How do we find the full retired regions ? Do we 
print a region when it is full ?


Thanks,
Poonam


On 6/22/2011 8:48 PM, Tony Printezis wrote:
> Poonam,
>
> Poonam Bajaj wrote:
>> Hi Tony,
>>
>> The new output looks completely different from the earlier output.
>
> Indeed. The new output is more concise, more complete, and easier to 
> parse (and avoids some duplication).
>
>> e.g. here's output generated with jdk7-b141:
>>
>>  added region to incremental cset (LHS) 0:[0x02c00000, 0x02d00000], 
>> top 0x02c53040, young YES
>> new alloc region 1:[0x02d00000,0x02e00000], top 0x02d00000
>
> [snip]
>
>> It prints the index of the region,
>
> We can deduce that from the new output (from the COMMIT events which 
> are done in order), so it's unnecessary to print it.
>
>> and whether it is added to eden or survivor (based on LHS
>> or RHS).
>
> Region allocation events have a region type in the new output too, 
> like ALLOC(Eden)
>
>> The index of the region is missing from the new output. I think it 
>> would be good
>> to have it; makes it easier to read the logs.
>
> See above.
>
>> In the new output, I see events like COMMIT, ALLOC, UNCOMMIT, RETIRE.
>> Could you please explain these ?
>> G1HR COMMIT [0x72700000,0x72800000]
>>   
>
> The heap is initialized or expanded and the region is freshly 
> committed (this was missing from the previous output).
>
>>  G1HR ALLOC(Eden) 0x6e800000
>>   
>
> The region just started being used for allocation. In this case it's 
> an Eden region and allocated to by a mutator thread. ALLOC events are 
> also generated for regions we allocate to during GC (for Survivor and 
> Old, depending on the type of region), as well as for humongous regions.
>
>> Will gc in between benchmarks
>>  G1HR RETIRE 0x6e800000 0x6e87bd98
>>   
>
> The stop using the region for allocation so the retire even has the 
> region's top (in this case: 0x6e87bd98). Note that most regions are 
> full when retired and we ommit those events (we can easily deduce 
> those) to reduce the output volume.
>
>>  G1HR #StartFullGC 1
>>  G1HR UNCOMMIT [0x72700000,0x72800000]
>>   
>
> Opposite to COMMIT. The heap got shrunk at the end of a Full GC.
>
>> There are some numbers printed between the log entries. What are 
>> these numbers ?
>>  G1HR ALLOC(ContinuesH) 0x6f100000 0x6f102010
>> 3153920                        <-----                                   
>> 931067                                          <-----
>>  G1HR COMMIT [0x6f200000,0x6f300000]
>>   
>
> Output from the benchmark (_201_compress).
>
>> For the ALLOC and CSET entries, only one address is printed, looks 
>> like it is the lower
>> bound of the region. 
>
> Indeed.
>
>> It would be good to have both the bounds printed (along with the index).
>
> This was done to reduce the output volume. Both bounds are only 
> printed when a region is committed / uncommitted.
>
> Tony
>
>>  G1HR #StartGC 2
>>  G1HR CSET 0x6e900000
>>  G1HR COMMIT [0x6f800000,0x6f900000]
>>  G1HR ALLOC(Old) 0x6f800000
>>  G1HR RETIRE 0x6f800000 0x6f826838
>>
>>
>> Thanks,
>> Poonam
>>
>>
>>
>> On 6/22/2011 1:04 AM, Tony Printezis wrote:
>>> Hi,
>>>
>>> Could I get a couple of folks to look at this?
>>>
>>> http://cr.openjdk.java.net/~tonyp/7049999/webrev.0/
>>>
>>> +G1PrintHeapRegions is a very helpful debugging feature that we have 
>>> used a lot in the past. It'll be very helpful in the long run to 
>>> ensure that it generates more complete output to save us having to 
>>> deduce some of it. What was missing in the past was:
>>>
>>> * output for humongous region allocations
>>> * output per region post compaction (as compaction changes the shape 
>>> of the heap)
>>> * output when regions are reclaimed during cleanup
>>>
>>> Further enhancements include:
>>>
>>> * commit / uncommit events
>>> * trimmed the output to keep the generated log files smaller while 
>>> not losing any information
>>> * introduced the G1HRPrinter class and all output goes through it to 
>>> ensure consistency
>>>
>>> I attached an example of the new output.
>>>
>>> Tony
>>>
>>
>> -- 
>> Best regards, Poonam
>>
>> Sun, an Oracle company
>> Sun, an Oracle Company
>> Poonam Bajaj | Staff Engineer
>> Phone: +66937451 <tel:+66937451> | Mobile: +9844511366 <tel:+9844511366>
>> JVM Sustaining Engineering
>> | Bangalore
>> Green Oracle <http://www.oracle.com/commitment> Oracle is committed 
>> to developing practices and products that help protect the environment
>>

-- 
Best regards, Poonam

Sun, an Oracle company
Sun, an Oracle Company
Poonam Bajaj | Staff Engineer
Phone: +66937451 <tel:+66937451> | Mobile: +9844511366 <tel:+9844511366>
JVM Sustaining Engineering
| Bangalore
Green Oracle <http://www.oracle.com/commitment> Oracle is committed to 
developing practices and products that help protect the environment

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/hotspot-gc-dev/attachments/20110622/fefc34eb/attachment.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: sun-oracle-logo.gif
Type: image/gif
Size: 2088 bytes
Desc: not available
URL: <https://mail.openjdk.org/pipermail/hotspot-gc-dev/attachments/20110622/fefc34eb/sun-oracle-logo.gif>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: green-for-email-sig_0.gif
Type: image/gif
Size: 356 bytes
Desc: not available
URL: <https://mail.openjdk.org/pipermail/hotspot-gc-dev/attachments/20110622/fefc34eb/green-for-email-sig_0.gif>


More information about the hotspot-gc-dev mailing list