<div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote">On Mon, May 15, 2017 at 4:13 PM, Brian Stansberry <span dir="ltr">&lt;<a href="mailto:brian.stansberry@redhat.com" target="_blank">brian.stansberry@redhat.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">So why does adding two more make such a big difference?</blockquote></div><br></div><div class="gmail_extra">Main reason is that this two threads load most of later required classes which can later be quickly loaded from multiple parallel threads.<br><br></div><div class="gmail_extra">Currently concurrency causes that 8 -16 threads (on 4-8 logical core systems) try to load same classes at same time.<br></div><div class="gmail_extra">this leads to lots of contention as result. &quot;preloading&quot; some of this classes reduces contention.<br><br></div><div class="gmail_extra">Looking at the list in the current &quot;hack impl&quot; there are lots of classes that don&#39;t need to be there, stuff like subsystem parsers which are only loaded once in any case.<br><br></div><div class="gmail_extra">Main pressure is on classes from jboss-modules, controller, server &amp; xml parsers modules, all others are not as problematic.<br></div><div class="gmail_extra">This is also reason why lots of contention is happening on JDK classes as well as those are shared between all parts of server code.<br></div><div class="gmail_extra"><br></div><div class="gmail_extra"><br></div><div class="gmail_extra"><br><br></div></div>