<html><head><meta http-equiv="Content-Type" content="text/html charset=windows-1252"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">Hi Jon,<div><br></div><div>Slightly off topic.</div><div><br></div><div>This question triggered me to once again take a closer look at psAdaptiveSizePolicy and CMSAdaptiveSizePolicy. What I saw is that</div><div><br></div><div><div style="margin: 0px; font-size: 11px; font-family: Menlo;">uint PSAdaptiveSizePolicy::compute_survivor_space_size_and_threshold(</div><div style="margin: 0px; font-size: 11px; font-family: Menlo;"> <span style="color: #bb2ca2">bool</span> is_survivor_overflow,</div><div style="margin: 0px; font-size: 11px; font-family: Menlo;"> uint tenuring_threshold,</div><div style="margin: 0px; font-size: 11px; font-family: Menlo;"> size_t survivor_limit) {</div><div style="margin: 0px; font-size: 11px; font-family: Menlo;"><br></div><div style="margin: 0px;">and</div><div style="margin: 0px; font-size: 11px; font-family: Menlo;"><br></div><div style="margin: 0px;"><div style="font-family: Menlo; font-size: 11px; margin: 0px;">uint CMSAdaptiveSizePolicy::compute_survivor_space_size_and_threshold(</div><div style="font-family: Menlo; font-size: 11px; margin: 0px;"> <span style="color: #bb2ca2">bool</span> is_survivor_overflow,</div><div style="font-family: Menlo; font-size: 11px; margin: 0px;"> uint tenuring_threshold,</div><div style="font-family: Menlo; font-size: 11px; margin: 0px;"> size_t survivor_limit) {</div><div style="font-family: Menlo; font-size: 11px; margin: 0px;"><br></div><div style="margin: 0px;">are cut and paste copies of each other. In fact the amount of common code in both classes suggests they were a complete cut and paste copy of each other. Yes there are a couple of minor differences but not enough to warrant two separate classes. It’s also a bit scary to see this level of cut and paste in the JVM source code. Maybe it was intentional, if so it should have been justified with a comment but … I’ll say no more on this topic.</div><div style="margin: 0px;"><br></div><div style="margin: 0px;">As I’ve mentioned before, AdaptiveSize can get into this degenerative pathological condition in low free heap conditions. It starts with higher GC frequencies slowing the allocation rates from the mutator threads. These lower allocation rates when feed back into adaptive sizing, are a signal to shrink the size of heap which is exactly the opposite of what you’d like to see in this condition. I have offered to work on a patch to fix this but I’ve been told by several people that they have a patch to correct this behavior so no need to do so.</div><div style="margin: 0px;"><br></div><div style="margin: 0px;">My question is, can we get one of these patches released so that we can correct this behavior?</div><div style="margin: 0px;"><br></div><div style="margin: 0px;">Kind regards,</div><div style="margin: 0px;">Kirk</div><div style="margin: 0px;"><br></div></div><div><div>On Mar 10, 2015, at 7:07 AM, Jon Masamitsu <<a href="mailto:jon.masamitsu@oracle.com">jon.masamitsu@oracle.com</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite">
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
<div bgcolor="#FFFFFF" text="#000000">
<br>
<div class="moz-cite-prefix">On 3/9/2015 10:39 PM, Jungwoo Ha wrote:<br>
</div>
<blockquote cite="mid:CA+n_jhjTTzW5FMxtnUfO3pOi8KNjNU4uYqN6w9QjAuS40w722g@mail.gmail.com" type="cite">
<div dir="ltr">We were investigating some features and figured out
that ParallelScavange and ParNew has different TenuringTreshold
heuristics.
<div>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.</div>
</div>
</blockquote>
<br>
Do you use UsePSAdaptiveSurvivorSizePolicy to turn off the <br>
survivor space resizing and tenuring threshold adaptiveness<br>
for ParallelGC?<br>
<br>
Jon<br>
<br>
<blockquote cite="mid:CA+n_jhjTTzW5FMxtnUfO3pOi8KNjNU4uYqN6w9QjAuS40w722g@mail.gmail.com" type="cite">
<div dir="ltr">
<div>--Jungwoo</div>
</div>
<div class="gmail_extra"><br>
<div class="gmail_quote">On Mon, Mar 9, 2015 at 11:27 AM, Jon
Masamitsu <span dir="ltr"><<a moz-do-not-send="true" href="mailto:jon.masamitsu@oracle.com" target="_blank">jon.masamitsu@oracle.com</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000"> Jungwoo,<span class=""><br>
<br>
<div>On 03/06/2015 06:03 PM, Jungwoo Ha wrote:<br>
</div>
<blockquote type="cite">
<div dir="ltr">I think it is the same for all
JDK{7,8,9}.
<div><br>
</div>
<div>arguments.cpp disabled UseAdaptiveSizePolicy
for CMS.</div>
<div>parallel scavange initializes
_tenuring_threshold with</div>
<div> _tenuring_threshold = (UseAdaptiveSizePolicy)
? InitialTenuringThreshold : MaxTenuringThreshold;</div>
<div>whereas CMS uses</div>
<div> _tenuring_threshold = MaxTenuringThreshold;</div>
<div><br>
</div>
<div>adjust_desired_tenuring_threshold() is called
inside ParNewGeneration::collect(), which calls
compute_tenuring_threshold.</div>
<div>It only uses MaxTenuringThreshold and
TargetSurvivorRatio.</div>
<div>I don't see any other flags here.<br>
</div>
</div>
</blockquote>
<br>
</span> Yes, this is the intended behavior.<br>
<br>
You're saying we're sometimes wasting survivor space?<span class="HOEnZb"><font color="#888888"><br>
<br>
Jon</font></span><span class=""><br>
<br>
<blockquote type="cite">
<div class="gmail_extra"><br>
<div class="gmail_quote">On Fri, Mar 6, 2015 at 4:28
PM, Jon Masamitsu <span dir="ltr"><<a moz-do-not-send="true" href="mailto:jon.masamitsu@oracle.com" target="_blank">jon.masamitsu@oracle.com</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0
0 .8ex;border-left:1px #ccc
solid;padding-left:1ex">This is in jdk9?<span><font color="#888888"><br>
<br>
Jon</font></span>
<div>
<div><br>
<br>
On 3/6/2015 4:21 PM, Jungwoo Ha wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px
#ccc solid;padding-left:1ex"> On CMS when
UseAdaptiveSizePolicy is off, still
tenuring_threshold is being changed.<br>
Is this an intended behavior?<br>
(yes. I know it is not "size" related
heuristics)<br>
<br>
It would be nice to have a flag that can
disable adjusting tenuring threshold,<br>
or at least set minimum threshold. When
the default heuristics doesn't work,<br>
there are nothing much we can do other
than changing the Max.<br>
<br>
--Jungwoo<br>
</blockquote>
<br>
</div>
</div>
</blockquote>
</div>
<br>
</div>
</blockquote>
<br>
</span></div>
</blockquote>
</div>
<br>
</div>
</blockquote>
<br>
</div>
</blockquote></div><br></div></body></html>