On Mon, May 29, 2017 at 7:30 AM, Luca Burgazzoli <lburgazz...@gmail.com> wrote: > It may be worth adding a small number of JMH micro benchmarks - not to > be used as performances metrics - on camel core so we can spot > potential regressions. >
A candidate for JMH micro benchmark would be the org.apache.camel.impl.ActiveMQUuidGenerator#generateUuid which is used a lot for generating all the uuids in Camel. We may look at trying to optimise that method. Contributions is welcome. Maybe the JMH tests need to be separated from camel-core and placed in eg, tests/jmh-tests or something. > --- > Luca Burgazzoli > > > On Sun, May 28, 2017 at 11:31 AM, Claus Ibsen <claus.ib...@gmail.com> wrote: >> Hi >> >> I have found some more spots for optimisations which I have committed >> over the last couple of days. >> >> Its been several years since we last did such things last, and I have >> to admit we have introduced some code that add more object allocation >> and a few performance drawbacks since then. >> >> So with the help of profilers we should be able to improve the >> situation for the Camel 2.20 release. >> >> I have to give credit to Luca for bring this idea up about making >> Camel startup faster and look into the number of objects allocated >> etc. Usually Camel has negligible performance overhead in the grand >> scheme of things. But we have more fine grained performance statistics >> today which records the time taken in every step messages are routed. >> This uses the StopWatch object which we frankly create too many new >> instances. So by reducing those we can reduce the object allocations >> and therefore the JVM GC characteristics. >> >> In the stuff I have optimised you can find the JIRA tickets with >> Optimise as prefix. I usually have attached some screenshots from the >> profiler so you can see before vs after situations). >> >> >> We have two areas that can be improved >> >> 1) startup Camel faster (jndi registry, caffine lru cache, and the >> uuid generator is a bit slow in their constructors) >> 2) faster routing per message at runtime (potential optimise by >> reducing object allocations, turn off some features less/seldom in >> use, optimise code logic in hot-spot areas, reduce size of internal >> state objects, avoid thread contention from synchronized methods, >> etc.) >> >> >> >> On Fri, May 26, 2017 at 3:59 PM, Claus Ibsen <claus.ib...@gmail.com> wrote: >>> Hi >>> >>> We have found a few spots to optimize the camel-core source code for >>> thread contention and something else. >>> >>> You can use a profile tool such as YourKit which is excellent at >>> identifying spots and visualizing what goes on in the JVM. >>> >>> We have used it in the past to optimise stuff. However recently Luca >>> asked about making Camel startup faster: >>> https://issues.apache.org/jira/browse/CAMEL-11321 >>> >>> And although fast startup is not excatly the same as runtime >>> performance then they are still related. A profile can help identify >>> places for improvements. >>> >>> I have pushed a sample project at >>> https://github.com/davsclaus/camel-profile-sample >>> >>> You can then run this via >>> >>> mvn spring-boot:run >>> >>> And then attach YourKit profiler. >>> >>> However if you use IDEA then you can start YourKit, then from YourKit >>> you can choose Integrate with IDE ... and then chose IDEA and then say >>> ok even if IDEA is also running. >>> >>> In IDEA you should see a YourKit icon if you right-click on the >>> SampleCamelApplication to run this application, then you can chose >>> that to profile, and it run the app with profiler. >>> >>> You then switch to YourKit and you should start see data. >>> To check for thread contention, then select the "Monitor Usage" tab, >>> and then click the gear button with the play icon "Start Monitor >>> Profile" which then starts capture data. >>> >>> For YourKit you can request a trial license that works for 2 weeks. >>> >>> >>> -- >>> Claus Ibsen >>> ----------------- >>> http://davsclaus.com @davsclaus >>> Camel in Action 2: https://www.manning.com/ibsen2 >> >> >> >> -- >> Claus Ibsen >> ----------------- >> http://davsclaus.com @davsclaus >> Camel in Action 2: https://www.manning.com/ibsen2 -- Claus Ibsen ----------------- http://davsclaus.com @davsclaus Camel in Action 2: https://www.manning.com/ibsen2