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

Tony Printezis tony.printezis at oracle.com
Wed Jun 22 15:18:52 UTC 2011


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
>



More information about the hotspot-gc-dev mailing list