<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""><div><blockquote type="cite" class=""><div class="">On May 22, 2018, at 11:20 AM, Ruslan Synytsky <<a href="mailto:synytskyy@jelastic.com" class="">synytskyy@jelastic.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><br class="Apple-interchange-newline"><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><div class="gmail_quote" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;">On 22 May 2018 at 03:50, Kirk Pepperdine<span class="Apple-converted-space"> </span><span dir="ltr" class=""><<a href="mailto:kirk@kodewerk.com" target="_blank" class="">kirk@kodewerk.com</a>></span><span class="Apple-converted-space"> </span>wrote:<br class=""><blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-style: solid; border-left-color: rgb(204, 204, 204); padding-left: 1ex;"><div style="word-wrap: break-word;" class=""><div style="word-wrap: break-word;" class=""><br class=""><div class=""><span class="gmail-"><blockquote type="cite" class=""><div class="">On May 21, 2018, at 6:15 PM, Ruslan Synytsky <<a href="mailto:synytskyy@jelastic.com" target="_blank" class="">synytskyy@jelastic.com</a>> wrote:</div><br class="gmail-m_4259843214953830785Apple-interchange-newline"><div class=""><div class=""><div dir="auto" class="">Dear Kirk, thank you for the feedback. Please see inline.</div><br class=""><div class="gmail_quote"><div dir="auto" class="">On Mon, May 21, 2018 at 07:45 Kirk Pepperdine <<a href="mailto:kirk@kodewerk.com" target="_blank" class="">kirk@kodewerk.com</a>> wrote:<br class=""></div><blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-style: solid; border-left-color: rgb(204, 204, 204); padding-left: 1ex;"><div style="word-wrap: break-word;" class="">Hi Rodrigo,<div class=""><br class=""></div><div class="">Interesting idea. IMHO, this solution is too simplistic as it focuses on the needs of providers at the detriment of the goals of the consumers.</div></div></blockquote><div dir="auto" class="">I’m very concerned on this statement. Which part of the patch description gives you the feeling that this work has been done in favor of providers? Believe me, based on my experience of working with hosting providers worldwide, cloud vendors are least interested in resource usage optimization, because more resources customers use more money they pay. So, please give us a hint how the description can be improved.<br class=""></div></div></div></div></blockquote><div class=""><br class=""></div></span>Well, I do have to apologize as my comment seems a bit harsh.<span class="Apple-converted-space"> </span></div></div></div></blockquote><div class=""> </div><blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-style: solid; border-left-color: rgb(204, 204, 204); padding-left: 1ex;"><div style="word-wrap: break-word;" class=""><div style="word-wrap: break-word;" class=""><div class=""><u class="">Of course reducing resources is a good thing<span class="Apple-converted-space"> </span></u></div></div></div></blockquote><div class=""><span style="color: rgb(34, 34, 34); font-family: arial, sans-serif; font-size: small; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; background-color: rgb(255, 255, 255); float: none; display: inline;" class="">Kirk, no problem. Good that we both agree on that. The main goal of this work is to make Java less greedy on the memory usage and more cost effective for applications with not very intensive load.    </span></div></div></div></blockquote><div><br class=""></div>Great, there are three aspects to G1 that you need to be concerned about; allocation rates, mutation rates and live data set size. Pause time is a function of LDSS, GC frequency a function of allocation rate, and run time overhead is a combination of allocation and mutation.<br class=""><blockquote type="cite" class=""><div class=""><div class="gmail_quote" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><div class=""><span style="color: rgb(34, 34, 34); font-family: arial, sans-serif; font-size: small; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; background-color: rgb(255, 255, 255); float: none; display: inline;" class=""> </span></div><blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-style: solid; border-left-color: rgb(204, 204, 204); padding-left: 1ex;"><div style="word-wrap: break-word;" class=""><div style="word-wrap: break-word;" class=""><div class="">however I have this aversion to full stop the world collections when using a concurrent collection. It feels like there should be a solution that doesn’t require calling for a full. I’m sure it won’t be as easy as calling for a full.</div></div></div></blockquote><div class=""><span style="color: rgb(34, 34, 34); font-family: arial, sans-serif; font-size: small; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; background-color: rgb(255, 255, 255); float: none; display: inline;" class="">I agree too that it will be great to have a solution w/o calling Full GC. This is why I personally like Shenandoah. </span></div></div></div></blockquote><div><br class=""></div>I think your problems with G1 might be this “bug” that I’ve encountered that leaves regions that should be collected uncollected. The Full GC gives you the illusion that you’ve cleaned things up and there are other cases that I don’t fully understand that result in all regions being cleaned up without a full but one thing I do know is that if you starve G1 for memory, you’re asking for trouble. I’ve seen GC pause time overheads of 40–50%.<br class=""><blockquote type="cite" class=""><div class=""><div class="gmail_quote" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><div class=""><span style="color: rgb(34, 34, 34); font-family: arial, sans-serif; font-size: small; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; background-color: rgb(255, 255, 255); float: none; display: inline;" class=""><br class=""></span></div><div class=""><span style="color: rgb(34, 34, 34); font-family: arial, sans-serif; font-size: small; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; background-color: rgb(255, 255, 255); float: none; display: inline;" class="">From other side, the current patch solves the problem good enough, because customers do not<span style="color: rgb(34, 34, 34); font-family: arial, sans-serif; font-size: small; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; background-color: rgb(255, 255, 255); float: none; display: inline;" class=""><span class=""> </span>really </span>care how it works inside, the mass market users calculate how much money they pay for the cloud hosting and how it compares to the resource usage with another languages. </span>If anyone hits performance issues, it requires a <span style="color: rgb(34, 34, 34); font-family: arial, sans-serif; font-size: small; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; background-color: rgb(255, 255, 255); float: none; display: inline;" class="">deep dive into various of options and</span> a fine tuning of JVM is needed anyway. The desired behavior is to tigger RAM compaction and release<span class="Apple-converted-space"> </span><u class="">only at an idle stage and only when it's enabled</u>. There are additional options that should prevent executing Full GC at an active stage. </div></div></div></blockquote><div><br class=""></div>Ok, but I don’t believe you need a full collection to release memory back to the OS. Released memory should come from high memory regions and those regions will be empty under most circumstances after a young gen collection. A reduction of heap size should put the live data set size over the IHOP meaning you should almost immediately trigger a concurrent mark cycle.</div><div><br class=""></div><div>As for the idle comment, if you’re idle why not simply shutdown JVMs in your cluster?</div><div><br class=""></div><div><blockquote type="cite" class=""><div class=""><div class="gmail_quote" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;"> <i class=""><br class="">MaxLoadGC - Max CPU usage that should still trigger periodic GCs. Above this value, no periodic GC will not be triggered.</i></div><div class="gmail_quote" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><i class="">MaxOverCommitted - guarantees that Full GC is not triggered if memory if not overcommitted and there is nothing to release back to OS. </i><div class=""><table class="gmail-tab-size gmail-highlight gmail-js-file-line-container" style="box-sizing: border-box; border-collapse: collapse; color: rgb(36, 41, 46); font-family: -apple-system, system-ui, 'Segoe UI', Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; background-color: rgb(255, 255, 255);"><tbody style="box-sizing: border-box;" class=""><tr style="box-sizing: border-box;" class=""><td id="gmail-L3196" class="gmail-js-line-number gmail-blob-num" style="box-sizing: border-box; padding: 0px 10px; width: 50px; min-width: 50px; font-family: SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 12px; line-height: 20px; color: rgba(27, 31, 35, 0.298039); text-align: right; white-space: nowrap; vertical-align: top;"></td><td id="gmail-LC3196" class="gmail-js-file-line gmail-blob-code gmail-blob-code-inner" style="box-sizing: border-box; padding: 0px 10px; line-height: 20px; vertical-align: top; overflow: visible; font-family: SFMono-Regular, Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 12px; color: rgb(36, 41, 46); word-wrap: normal; white-space: pre;"></td></tr></tbody></table></div><div class="">Even PHP-FPM implemented options that allow users to choose a most convenient configuration: static - for a high performance, dynamic - for load with predictable spikes, and ondemand - for cost efficiency (<a href="https://community.webcore.cloud/tutorials/php_fpm_ondemand_process_manager_vs_dynamic/" class="">related article</a> and <a href="http://php.net/manual/en/install.fpm.configuration.php#pm" class="">official documentation</a>). Why should we limit Java users and force everyone to think in terms of high performance only and always? Java users are struggling with no solution for cost efficiency for years. </div></div></div></blockquote><div><br class=""></div>This isn’t about highest performance, it’s about minimizing it’s effect on tail latencies.</div><div><br class=""></div><div>Kind regards,</div><div>Kirk</div><div><br class=""></div></body></html>