<html><body><p><font size="2">Hi David,</font><br><br><font size="2">Thank you for letting me know about CSR. I will send a CSR for my change and revisit here.</font><br><br><font size="2">Best regards,</font><br><font size="2">--</font><br><font size="2">Michihiro,</font><br><font size="2">IBM Research - Tokyo</font><br><br><img width="16" height="16" src="cid:1__=8FBB0B18DFA6BC258f9e8a93df938690918c8FB@" border="0" alt="Inactive hide details for David Holmes ---2017/08/29 15:36:24---Hi Michihiro, Please note that adding a new flag like this requ"><font size="2" color="#424282">David Holmes ---2017/08/29 15:36:24---Hi Michihiro, Please note that adding a new flag like this requires a Compatibility</font><br><br><font size="2" color="#5F5F5F">From:        </font><font size="2">David Holmes <david.holmes@oracle.com></font><br><font size="2" color="#5F5F5F">To:        </font><font size="2">Michihiro Horie <HORIE@jp.ibm.com>, hotspot-dev@openjdk.java.net</font><br><font size="2" color="#5F5F5F">Cc:        </font><font size="2">Hiroshi H Horii <HORII@jp.ibm.com></font><br><font size="2" color="#5F5F5F">Date:        </font><font size="2">2017/08/29 15:36</font><br><font size="2" color="#5F5F5F">Subject:        </font><font size="2">Re: RFR(M) 8186834:Expanding old area without full GC in parallel GC</font><br><hr width="100%" size="2" align="left" noshade style="color:#8091A5; "><br><br><br><tt><font size="2">Hi Michihiro,<br><br>Please note that adding a new flag like this requires a Compatibility <br>and Specification Review request (CSR) [1] to be created and approved <br>before any code changes can be pushed. From the bug click "More" and <br>select "Create CSR".<br><br>Thanks,<br>David<br><br>[1] </font></tt><tt><font size="2"><a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__wiki.openjdk.java.net_display_csr_Main&d=DwICaQ&c=jf_iaSHvJObTbx-siA1ZOg&r=oecsIpYF-cifqq2i1JEH0Q&m=ypbmlPeTxG9ZjfEnFV33xTm4VLn1G39Tfts8mIAPjyU&s=naIH7FCFgTcRxk9E5Sbtfc3z7Im3NbH18BmndxbTeRU&e=">https://urldefense.proofpoint.com/v2/url?u=https-3A__wiki.openjdk.java.net_display_csr_Main&d=DwICaQ&c=jf_iaSHvJObTbx-siA1ZOg&r=oecsIpYF-cifqq2i1JEH0Q&m=ypbmlPeTxG9ZjfEnFV33xTm4VLn1G39Tfts8mIAPjyU&s=naIH7FCFgTcRxk9E5Sbtfc3z7Im3NbH18BmndxbTeRU&e=</a></font></tt><tt><font size="2"> <br><br>On 29/08/2017 1:20 AM, Michihiro Horie wrote:<br>> <br>> Dear all,<br>> <br>> Would you please review the following change?<br>> bug: </font></tt><tt><font size="2"><a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__bugs.openjdk.java.net_browse_JDK-2D8186834&d=DwICaQ&c=jf_iaSHvJObTbx-siA1ZOg&r=oecsIpYF-cifqq2i1JEH0Q&m=ypbmlPeTxG9ZjfEnFV33xTm4VLn1G39Tfts8mIAPjyU&s=PpLj63Y3MSHrAW9Fjdog-5XLFtaTikMSenZIBIjJN3U&e=">https://urldefense.proofpoint.com/v2/url?u=https-3A__bugs.openjdk.java.net_browse_JDK-2D8186834&d=DwICaQ&c=jf_iaSHvJObTbx-siA1ZOg&r=oecsIpYF-cifqq2i1JEH0Q&m=ypbmlPeTxG9ZjfEnFV33xTm4VLn1G39Tfts8mIAPjyU&s=PpLj63Y3MSHrAW9Fjdog-5XLFtaTikMSenZIBIjJN3U&e=</a></font></tt><tt><font size="2"> <br>> webrev: </font></tt><tt><font size="2"><a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__cr.openjdk.java.net_-7Emhorie_8186834_webrev.00_&d=DwICaQ&c=jf_iaSHvJObTbx-siA1ZOg&r=oecsIpYF-cifqq2i1JEH0Q&m=ypbmlPeTxG9ZjfEnFV33xTm4VLn1G39Tfts8mIAPjyU&s=Wtj3oIAlrCMTEA__UeUm57fnM-_WrFOIIT4DQ1r6k2Y&e=">https://urldefense.proofpoint.com/v2/url?u=http-3A__cr.openjdk.java.net_-7Emhorie_8186834_webrev.00_&d=DwICaQ&c=jf_iaSHvJObTbx-siA1ZOg&r=oecsIpYF-cifqq2i1JEH0Q&m=ypbmlPeTxG9ZjfEnFV33xTm4VLn1G39Tfts8mIAPjyU&s=Wtj3oIAlrCMTEA__UeUm57fnM-_WrFOIIT4DQ1r6k2Y&e=</a></font></tt><tt><font size="2"> <br>> <br>> In parallel GC, old area is expanded only after a full GC occurs.<br>> I am wondering if we could give an option to expand old area without full<br>> GC. So, I added an option<br>> UseAdaptiveGenerationSizePolicyBeforeMajorCollection.<br>> <br>> Following is a simple micro benchmark I used to see the benefit of this<br>> change.<br>> As a result, pause time of full GC reduced by 30%. Full GC count reduced by<br>> 54%.<br>> Elapsed time reduced by 7%.<br>> <br>> import java.util.HashMap;<br>> import java.util.Map;<br>> public class HeapExpandTest {<br>>    static Map<Integer, byte[]> map = new HashMap<>();<br>>    public static void main(String[] args) throws Exception {<br>>      long start = System.currentTimeMillis();<br>>      for (int i = 0; i < 2200; ++i) {<br>>        map.put(i, new byte[1024*1024]); // 1MB<br>>      }<br>>      System.out.println("elapsed= " + (System.currentTimeMillis() - start));<br>>    }<br>> }<br>> <br>> JVM options: -XX:+UseParallelGC -XX:+UseAdaptiveSizePolicy<br>> -XX:ParallelGCThreads=8 -Xms64m -Xmx3g<br>> -XX:+UseAdaptiveGenerationSizePolicyBeforeMajorCollection<br>> <br>> <br>> Best regards,<br>> --<br>> Michihiro,<br>> IBM Research - Tokyo<br>> <br><br></font></tt><br><br><BR>
</body></html>