TenuringThreshold being adaptive when UseAdaptiveSizePolicy is off

Jon Masamitsu jon.masamitsu at oracle.com
Tue Mar 10 18:37:01 UTC 2015


On 3/10/2015 4:59 AM, Jungwoo Ha wrote:
> Tao,
>
> CMS no longer use InitialTenuringThreshold.
> IIRC, even before when CMS used InitialTenuringThreshold, setting 
> initial and max the same value didn't turn off the adaptiveness.

I think we're removing that  code from CMS in jdk9

compute_survivor_space_size_and_threshold()

The implementation of adaptive size policy for CMS never
worked correctly.  Too many times it does the exact wrong
thing.

Jon

>
>
> On Tue, Mar 10, 2015 at 12:23 AM, Tao Mao <yiyeguhu at gmail.com 
> <mailto:yiyeguhu at gmail.com>> wrote:
>
>     Hi Jungwoo,
>
>     Would fixing InitialTenuringThreshold and MaxTenuringThreshold to
>     the same value work for you?
>
>     Thanks.
>     Tao Mao
>
>
>     On Mon, Mar 9, 2015 at 10:39 PM, Jungwoo Ha <jwha at google.com
>     <mailto:jwha at google.com>> wrote:
>
>         We were investigating some features and figured out that
>         ParallelScavange and ParNew has different TenuringTreshold
>         heuristics.
>         We thought it would be nice to have a flag that can control
>         the adaptiveness, so that we can fix it on purpose to isolate
>         other performance factors.
>         --Jungwoo
>
>         On Mon, Mar 9, 2015 at 11:27 AM, Jon Masamitsu
>         <jon.masamitsu at oracle.com <mailto:jon.masamitsu at oracle.com>>
>         wrote:
>
>             Jungwoo,
>
>             On 03/06/2015 06:03 PM, Jungwoo Ha wrote:
>>             I think it is the same for all JDK{7,8,9}.
>>
>>             arguments.cpp disabled UseAdaptiveSizePolicy for CMS.
>>             parallel scavange initializes _tenuring_threshold with
>>               _tenuring_threshold = (UseAdaptiveSizePolicy) ?
>>             InitialTenuringThreshold : MaxTenuringThreshold;
>>             whereas CMS uses
>>               _tenuring_threshold = MaxTenuringThreshold;
>>
>>             adjust_desired_tenuring_threshold() is called inside
>>             ParNewGeneration::collect(), which calls
>>             compute_tenuring_threshold.
>>             It only uses MaxTenuringThreshold and TargetSurvivorRatio.
>>             I don't see any other flags here.
>
>             Yes, this is the intended behavior.
>
>             You're saying we're sometimes wasting survivor space?
>
>             Jon
>
>>
>>             On Fri, Mar 6, 2015 at 4:28 PM, Jon Masamitsu
>>             <jon.masamitsu at oracle.com
>>             <mailto:jon.masamitsu at oracle.com>> wrote:
>>
>>                 This is in jdk9?
>>
>>                 Jon
>>
>>
>>                 On 3/6/2015 4:21 PM, Jungwoo Ha wrote:
>>
>>                     On CMS when UseAdaptiveSizePolicy is off, still
>>                     tenuring_threshold is being changed.
>>                     Is this an intended behavior?
>>                     (yes. I know it is not "size" related heuristics)
>>
>>                     It would be nice to have a flag that can disable
>>                     adjusting tenuring threshold,
>>                     or at least set minimum threshold. When the
>>                     default heuristics doesn't work,
>>                     there are nothing much we can do other than
>>                     changing the Max.
>>
>>                     --Jungwoo
>>
>>
>>
>
>
>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.java.net/pipermail/hotspot-gc-dev/attachments/20150310/48eea42f/attachment.htm>


More information about the hotspot-gc-dev mailing list