RFR (L): 8073013: Add detailed information about PLAB memory usage

Jon Masamitsu jon.masamitsu at oracle.com
Mon Aug 10 15:20:15 UTC 2015



On 08/10/2015 06:01 AM, Thomas Schatzl wrote:
> Hi Jon,
>
>    thanks for the review. Comments inline.
>
> On Fri, 2015-08-07 at 11:29 -0700, Jon Masamitsu wrote:
>> Thomas,
>>
>> Basically looks good.  Some questions around the edges.
>>
>> http://cr.openjdk.java.net/~tschatzl/8073013/webrev/src/share/vm/gc/g1/g1CollectedHeap.hpp.frames.html
>>
>>>    248   // Manages all kinds of allocations within regions. This excludes only
>>>    249   // humongous object allocations.
>>>    250   G1Allocator* _allocator;
>> Would this comment be more exact?
>>
>> // Manages all allocations with regions except humongous object allocations.
>>
> Done.

Thanks.

>
>> http://cr.openjdk.java.net/~tschatzl/8073013/webrev/src/share/vm/gc/g1/g1EvacStats.cpp.html
>>
>>     85 void G1EvacStats::send_obj_copy_mem_event(int for_gen) {
>>     86   EventGCG1EvacuationMemoryStatistics e;
>>     87   if (e.should_commit()) {
>>     88     e.set_gcId(GCId::peek().id());
>>     89     e.set_gen(for_gen);
>>
>> Can the conversion of  InCSetState values to generation numbers be put into
>> the send_obj_copy_mem_event()?
>>
>> http://cr.openjdk.java.net/~tschatzl/8073013/webrev/src/share/vm/trace/trace.xml.frames.html
>>
>>    318       <value type="UINT" field="gen" label="Generation" description="Generation these PLAB statistics are for"/>
>>
>>
>> Can the "gen" field be a character string with "young" or "old" instead
>> of a number?
> Did so in the new change. This obviates the need for a dedicated
> conversion function, but adds a function to get the string.

Yes, I expected the function to get the string.  Thanks.

>
> Another option would be to have two separate events, not sure if this is
> better.

The eternal question for which there is no one good answer.  Your
call.

>
>> http://cr.openjdk.java.net/~tschatzl/8073013/webrev/src/share/vm/gc/g1/g1EvacStats.hpp.html
>>
>> Are these alternative comments correct?   Perhaps better for the less G1
>> knowledgeable?
>>
>>     38   // Number of words allocated during evacuation failure in the regions that failed evacuation.
>>
>> // Number of words in live objects remaining in regions that ultimately suffered an
>> // evacuation failure.  This is used space in the regions when the regions are made old regions.
>>
>>
>>     39   size_t _failure_used;
>>
>>     40   // Number of words wasted during evacuation failure in the regions that failed evacuation.
>>
>> // Number of words wasted in regions which failed evacuation.  This is the sum of space for
>> // objects successfully copied out of the regions (now dead space) plus waste at the end of
>> // regions.
> Done.

Thanks.
>
>>     41   size_t _failure_waste;
>>
>>
>> Not sure how ingrained the term "inline" allocation, but why "inline"?  It means that
>> the allocation was directly into the region and not in a LAB in the region, right?
>> Would _directly_allocated or _direct_allocations work for you?
> Would be fine with me. In the most recent change for 8003237 I also
> undid the renaming of that method from "inline" to "direct" so that
> everything fits again.
>
> I hope this makes the statistic more self-explaining, or at least less
> confusing with other uses of "inline allocation".
>
> I.e. afaik the term is used for allocation outside of PLAB using
> additional inlined code.
>
> Interestingly existing PLAB jfr events do not use the term inline
> allocation either, the events have the suffix "OutsidePLAB" for object
> promotion statistics.

Thanks for the change.  I hesitated a bit about using "direct" because
CMS uses "direct" to mean objects allocated out of the CMS gen
as opposed to promoted to the CMS gen but  I think I like direct better
still.

Jon
>
>>>     36   size_t _inline_allocated; // Number of words allocated directly into the regions.
>> That's all.
> Thanks, your reviews help me a lot.
>
>>
>> On 8/6/2015 8:49 AM, Thomas Schatzl wrote:
>>> Hi all,
>>>
> [...]
>>> CR:
>>> https://bugs.openjdk.java.net/browse/JDK-8073013
>>>
>>> Webrev:
>>> http://cr.openjdk.java.net/~tschatzl/8073013/webrev
>>>
>>> Testing:
>>> jprt, a few aurora runs, local testing, lots of benchmarks mainly in
>>> conjunction with the following changes.
>>>
> New webrev at:
> http://cr.openjdk.java.net/~tschatzl/8073013/webrev.1 (full)
> http://cr.openjdk.java.net/~tschatzl/8073013/webrev.0_to_1 (diff)
>
> Thanks,
>    Thomas
>
>



More information about the hotspot-gc-dev mailing list