<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]--><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Aptos;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
@font-face
        {font-family:Garamond;
        panose-1:2 2 4 4 3 3 1 1 8 3;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        font-size:12.0pt;
        font-family:"Aptos",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
span.EmailStyle20
        {mso-style-type:personal-reply;
        font-family:"Aptos",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;
        mso-ligatures:none;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=en-CH link=blue vlink=purple style='word-wrap:break-word'><div class=WordSection1><p class=MsoNormal><span style='font-size:11.0pt;mso-fareast-language:EN-US'>Hi Gaurav,<br><br>I’ve invited you to the JMC slack.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;mso-fareast-language:EN-US'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;mso-fareast-language:EN-US'>Kind regards,<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;mso-fareast-language:EN-US'>Marcus<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;mso-fareast-language:EN-US'><o:p> </o:p></span></p><div><div style='border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm'><p class=MsoNormal><b><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri",sans-serif'>From:</span></b><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri",sans-serif'> jmc-dev <jmc-dev-retn@openjdk.org> <b>On Behalf Of </b>Erik Gahlin<br><b>Sent:</b> Saturday, 24 February 2024 11:09<br><b>To:</b> Gaurav Gupta <geniusgaurav27@gmail.com>; hotspot-jfr-dev@openjdk.org; jmc-dev@openjdk.org<br><b>Subject:</b> Re: JFR causes spike in HeapMemoryAfterGC in prod ssystems<o:p></o:p></span></p></div></div><p class=MsoNormal><o:p> </o:p></p><div><p class=MsoNormal><span style='color:black'>Hi Guarav,<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='color:black'><o:p> </o:p></span></p></div><div><p class=MsoNormal><span style='color:black'>>  it is claimed to be safe in prod systems with continuous JFR profiling.</span><o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal><span style='color:black'>The overhead should be less than 1% by default (-XX:StartFlightRecording, no other options) and it should not crash, cause memory leaks etc. if you run it for a long time.</span><o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal><span style='color:black'>I don't know where the HeapMemoryAfterGC metric comes from. Is it something shown in JMC? We don't have targets for memory usage. That said, JFR should probably not use more than 50 MB of the Java heap, so if 30% is normal or not depends on how large heap you are using.</span><o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal><span style='color:black'>There is a slack channel for JMC developers. I don't manage it and I'm not sure if this is really a bug.</span><o:p></o:p></p></div><div><p class=MsoNormal><span style='color:black'><a href="https://wiki.openjdk.org/display/jmc/Contributing">https://wiki.openjdk.org/display/jmc/Contributing</a></span><o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal><span style='color:black'>Best regards,</span><o:p></o:p></p></div><div><p class=MsoNormal><span style='color:black'>Erik</span><o:p></o:p></p></div><div><p class=MsoNormal><span style='color:black'><o:p> </o:p></span></p></div><div class=MsoNormal align=center style='text-align:center'><hr size=2 width="98%" align=center></div><div id=divRplyFwdMsg><p class=MsoNormal><b><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:black'>From:</span></b><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:black'> hotspot-jfr-dev <<a href="mailto:hotspot-jfr-dev-retn@openjdk.org">hotspot-jfr-dev-retn@openjdk.org</a>> on behalf of Gaurav Gupta <<a href="mailto:geniusgaurav27@gmail.com">geniusgaurav27@gmail.com</a>><br><b>Sent:</b> Friday, February 23, 2024 6:26 AM<br><b>To:</b> <a href="mailto:hotspot-jfr-dev@openjdk.org">hotspot-jfr-dev@openjdk.org</a> <<a href="mailto:hotspot-jfr-dev@openjdk.org">hotspot-jfr-dev@openjdk.org</a>>; <a href="mailto:jmc-dev@openjdk.org">jmc-dev@openjdk.org</a> <<a href="mailto:jmc-dev@openjdk.org">jmc-dev@openjdk.org</a>><br><b>Subject:</b> JFR causes spike in HeapMemoryAfterGC in prod ssystems</span> <o:p></o:p></p><div><p class=MsoNormal> <o:p></o:p></p></div></div><div><p class=MsoNormal><span style='color:black'>Hi Team, </span><o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal><span style='color:black'>I am Gaurav Gupta, Principal Engineer at Amazon India (<a href="mailto:gagup@amazon.com">gagup@amazon.com</a>). My team is trying to enable JFR on production systems for studying any issues using custom events in JMC. Also we plan to study the impact of code changes in our application on system performance by studying JFR dumps using JMC and Flamescope (sub-second profiling).</span><o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal><span style='color:black'>We tried enabling JFR in our prod system by adding following JVM args in our application startup (we have not yet added any custom event in our code:</span><o:p></o:p></p></div><div><p class=MsoNormal><span style='font-size:9.0pt;font-family:Consolas;color:#E01E5A'>-XX:+FlightRecorder -XX:StartFlightRecording=name=SomeServiceJFR,disk=false,path-to-gc-roots=false -XX:FlightRecorderOptions=stackdepth=256,memorysize=60M,numglobalbuffers=2,globalbuffersize=30M,old-object-queue-size=64</span><o:p></o:p></p></div><div><p class=MsoNormal><span style='color:black'>(The reason we turned off the disk parameter is to avoid disk space issues during spiky traffic. We plan to take JFR dump on demand basis by running JFR.dump command line option to study application behavior and keep JFR recording on all the time).</span><o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal style='margin-bottom:12.0pt'><span style='color:black'>We saw the system performance metrics on HeapMemoryAfterGC rising from 5% to 30% (on our test fleet) after starting our application with above JVM args (i.e. with JFR enabled). As per our reading about JFR, it is claimed to be safe in prod systems with continuous JFR profiling. But the rise of the HeapMemory use raised concern.</span><o:p></o:p></p></div><div><p class=MsoNormal><span style='color:black'>I seek your advice in this regard, if we are missing anything (wrt parameter configuration above) or are there other options to try without affecting the prod system.</span><o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal><span style='color:black'>Also, is there a slack channel that I join for live discussion in this regard? How can I get added?</span><o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal><span style='color:black'>PS: I won't be able to share the JFR dump file outside Amazon as it records events and stack traces for our proprietary software. But I am happy to come to a meeting on slack or other means and discuss this. Slack email: <a href="mailto:gagup@amazon.com">gagup@amazon.com</a></span><o:p></o:p></p></div><div><p class=MsoNormal><span style='color:black'><br>--</span><o:p></o:p></p></div><div><p class=MsoNormal><span style='font-family:"Garamond",serif;color:black'>Best regards,</span><span style='color:black'><br></span><b><span style='font-size:10.0pt;font-family:"Garamond",serif;color:#00CCCC'>Gaurav Gupta</span></b><span style='color:black'><br><br></span><span style='font-family:"Garamond",serif;color:#330099'>-------------------------------------------------------------------------------------------------------------------------------</span><span style='color:black'><br></span><i><span style='font-family:"Garamond",serif;color:#330099'>"Perfection is achieved not when there is nothing more to add,but rather when there is nothing more to take away."</span></i><o:p></o:p></p></div></div></body></html>