RFR: 7169803: Usage of pretenured value is not correct

David Lindholm david.lindholm at oracle.com
Thu Jun 11 08:17:26 UTC 2015


Hi,

This is also my impression.

tenured_allocation(size_t size) is called from PSOldGen::allocate() that 
allocates objects directly in the old generation (between collections).


Thanks,
David

On 2015-06-11 09:47, Tao Mao wrote:
> Hi Jon,
>
> The definition is: "Promoted" is objects that are promoted (or 
> tenured) during yGC while "PRE-tenured" is objects that are allocated 
> directly in old gen. I believe this is so, right?
>
> Thanks.
> Tao Mao
>
>
>
> On Wed, Jun 10, 2015 at 6:48 PM, Jon Masamitsu 
> <jon.masamitsu at oracle.com <mailto:jon.masamitsu at oracle.com>> wrote:
>
>
>
>     On 6/10/2015 5:51 PM, Tao Mao wrote:
>>     I think David's right. Promoted objects and pretenured objects
>>     are different guys. This would resolve the second issue in the
>>     ticket JDK-7169803.
>
>     Tao,
>
>     How would you define each?
>
>     Jon
>
>
>>
>>     Thanks.
>>     Tao Mao
>>
>>     On Wed, Jun 10, 2015 at 5:08 PM, Jon Masamitsu
>>     <jon.masamitsu at oracle.com <mailto:jon.masamitsu at oracle.com>> wrote:
>>
>>
>>
>>         On 6/10/2015 1:30 AM, David Lindholm wrote:
>>
>>             Jon,
>>
>>             Thanks for taking a look at this. No, I don't think this
>>             will lead to double counting. This calculation is already
>>             there, it is just buggy. Before this patch the code added
>>             the total amount of promoted memory this collection with
>>             the average size of the pretenured objects, and used this
>>             as a sample. Now the code adds the total amount of
>>             promoted memory with the total size of the pretenured
>>             objects since last collection, and uses this as a sample
>>             instead.
>>
>>
>>         Aren't "promoted" and
>>         "total_pretenured_since_last_promotion()" approximately the same
>>         thing?  In share/vm/gc/parallel/psScavenge.cpp
>>
>>         489       size_t promoted = old_gen->used_in_bytes() -
>>         old_gen_used_before;
>>         490  size_policy->update_averages(_survivor_overflow,
>>         survived, promoted);
>>
>>         so "promoted" is the change in the old gen between the before
>>         and after the
>>         young gen collection.
>>
>>         "total_pretenured_size_last_promotion()" is
>>
>>          258   void tenured_allocation(size_t size) {
>>          259     _avg_pretenured->sample(size);
>>          260  add_pretenured_since_last_promotion(size)
>>
>>
>>         which seems to me to be calculating the same thing (sum of
>>         allocations into the old gen).
>>
>>         Not so?
>>
>>         Jon
>>
>>
>>
>>
>>             Thanks,
>>             David
>>
>>             On 2015-06-09 21:37, Jon Masamitsu wrote:
>>
>>                 David,
>>
>>                 http://cr.openjdk.java.net/~david/JDK-7169803/webrev.00/src/share/vm/gc/parallel/psAdaptiveSizePolicy.cpp.frames.html
>>                 <http://cr.openjdk.java.net/%7Edavid/JDK-7169803/webrev.00/src/share/vm/gc/parallel/psAdaptiveSizePolicy.cpp.frames.html>
>>
>>
>>                 1308  avg_promoted()->sample(promoted +
>>                 total_pretenured_since_last_promotion());
>>
>>
>>                 Is including both "promoted" and
>>                 "total_pretenured_since_last_promotion()"
>>                 double counting?
>>
>>                 Jon
>>
>>                 On 06/09/2015 02:06 AM, David Lindholm wrote:
>>
>>                     Hi,
>>
>>                     Please review this patch that corrects the usage
>>                     of the pretenured value. There were 2 issues:
>>                     words and bytes were mixed up and the addition
>>                     was done with the wrong value. See bug for details.
>>
>>                     Webrev:
>>                     http://cr.openjdk.java.net/~david/JDK-7169803/webrev.00/
>>                     <http://cr.openjdk.java.net/%7Edavid/JDK-7169803/webrev.00/>
>>                     Bug: https://bugs.openjdk.java.net/browse/JDK-7169803
>>
>>
>>                     Testing: Passed JPRT
>>
>>
>>                     Thanks,
>>                     David
>>
>>
>>
>>
>>
>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/hotspot-gc-dev/attachments/20150611/7e37fd18/attachment.html>


More information about the hotspot-gc-dev mailing list