I contacted Ravi already offline -M
On Tue, Jan 12, 2010 at 7:59 PM, Jan-Kees van Andel <jankeesvanan...@gmail.com> wrote: > Apache officially doesn't provide support, see: > http://httpd.apache.org/docs/1.3/misc/FAQ.html#support > But you can try to contact a commercial company that does provide support. > > It's an issue Apache can't really help you with. > > Depending on where you're located, it shouldn't be very hard to find > Trinidad experience. There are a lot of followers on this list, so > maybe...? > > Regards, > Jan-Kees > > > 2010/1/12 Ravi Kapoor <ravikapoor...@gmail.com>: >> I found that link as well 10 seconds ago and was going to email you :). Yes >> you are right, I cannot run this app in tomcat, this is enterprise app with >> tons of dependency on websphere. >> >> Anyways, how can I get onsite support? Who provides such support? Apache? >> Can you send me contact info or a link? >> >> Thanks >> Ravi >> >> On Tue, Jan 12, 2010 at 1:28 PM, Jan-Kees van Andel < >> jankeesvanan...@gmail.com> wrote: >> >>> Hrm, it looks like the IBM JVM doesn't support VisualVM. See: >>> http://www.ibm.com/developerworks/forums/thread.jspa?messageID=14210263 >>> Sorry. It would be nice if it worked. >>> You're probably not able to run your app on i.e. Tomcat, JBoss or >>> Glassfish, just for testing? If you are, things are easier. >>> >>> But I'm afraid we're not solving problems here. I think you'd better >>> look for on-site support... >>> >>> /JK >>> >>> >>> 2010/1/12 Ravi Kapoor <ravikapoor...@gmail.com>: >>> > Jan-Kees, thanks for this info. I got the settings in order. But I am >>> having >>> > another problem. >>> > >>> > When I launch the server from within RAD, VisualVM is not able to detect >>> the >>> > process at all. Can you tell me what do I need to do so VisualVM can >>> detect >>> > my server so that I can get profiling information for my classes? >>> > >>> > >>> > >>> > On Tue, Jan 12, 2010 at 10:02 AM, Jan-Kees van Andel < >>> > jankeesvanan...@gmail.com> wrote: >>> > >>> >> Hey Ravi, >>> >> >>> >> First you need to connect to your server. If that's done, depending on >>> >> the type of connection, profiling becomes possible (AFAIK local >>> >> applications always work, but JMX based connections don't). >>> >> If profiling is possible, you should see a Profiler tab. In the >>> >> Profiler tab, on the right you can see a checkbox called "settings". >>> >> Check it. >>> >> >>> >> In the first textarea, called: "Start profiling from classes", enter >>> >> the following: >>> >> javax.faces.** >>> >> org.apache.myfaces.** >>> >> com.yourcompany.** >>> >> >>> >> The other settings should be ok, or maybe you need to apply some >>> >> additional filter to prevent OOME's. >>> >> >>> >> When done, you can hit the Profile button and start generating load on >>> >> your webapp. Note the small button in the Profiler tab to create >>> >> snapshots. This is a useful one, because you have extra profiling >>> >> features on snapshots that aren't available on the realtime data. >>> >> >>> >> Note: It might be smart to increase the max heap size in >>> >> [VISUALVM_HOME]/etc/visualvm.conf. 512MB should be enough ( -J-Xmx512m >>> >> ). >>> >> >>> >> I hope these steps work for you and maybe a different graph gives some >>> >> more insight... >>> >> >>> >> Regards, >>> >> Jan-Kees >>> >> >>> >> >>> >> 2010/1/12 Ravi Kapoor <ravikapoor...@gmail.com>: >>> >> > Oh I see what you are saying. We only create and populate the hashmap >>> >> once, >>> >> > we never clear or delete from it. So that endless loop is not the >>> >> problem. >>> >> > Also in that case the CPU wouldnt show up for org.apache.* classes. >>> >> > >>> >> > I guess you are looking for how to specify packages in VisualVM. This >>> >> would >>> >> > give me another point of reference to validate my numbers. >>> >> > >>> >> > - Ravi >>> >> > >>> >> > >>> >> > On Mon, Jan 11, 2010 at 6:00 PM, Jakob Korherr < >>> jakob.korh...@gmail.com >>> >> >wrote: >>> >> > >>> >> >> Ravi, >>> >> >> >>> >> >> To your question: Can you explain little bit how lack of >>> synchronization >>> >> >> can >>> >> >> add to CPU? >>> >> >> >>> >> >> I don't know exactly, but maybe it is possible that the internal >>> >> structure >>> >> >> of a Map (e.g. HashMap) can be destroyed when there are multiple >>> change >>> >> >> operations (put, remove, clear) at the same time, because of lack of >>> >> >> synchronization. But that's really just a guess! >>> >> >> >>> >> >> Regards, >>> >> >> Jakob >>> >> >> >>> >> >> 2010/1/11 Ravi Kapoor <ravikapoor...@gmail.com> >>> >> >> >>> >> >> > Jakob, >>> >> >> > >>> >> >> > I did install VisualVM but it is not capturing org.apache.* classes >>> or >>> >> >> > com.mycompany.* classes. I did not find a setting on how to enable >>> >> >> > capturing >>> >> >> > data for all the classes I want. Can you tell me where to specity >>> the >>> >> >> > packages for which I want to capture CPU usage? >>> >> >> > >>> >> >> > Vinay >>> >> >> > >>> >> >> > >>> >> >> > On Mon, Jan 11, 2010 at 4:05 PM, Ravi Kapoor < >>> ravikapoor...@gmail.com >>> >> >> > >wrote: >>> >> >> > >>> >> >> > > Jakob, >>> >> >> > > >>> >> >> > > The beans are not big. Also these tests have been performed under >>> a >>> >> >> > single >>> >> >> > > user to measure the CPU timing. So I doubt >>> locking/synchronization >>> >> is >>> >> >> an >>> >> >> > > issue. >>> >> >> > > >>> >> >> > > I would think that if there is synchronization, then the threads >>> >> could >>> >> >> be >>> >> >> > > waiting for long time, but lack of synchronization can only lead >>> to >>> >> >> > corrupt >>> >> >> > > data not to higher CPU. Can you explain little bit how lack of >>> >> >> > > synchronization can add to CPU? >>> >> >> > > >>> >> >> > > I have never used VisualVM, I can try it sometime this week. I am >>> >> >> > assuming >>> >> >> > > it will work with Websphere 6.1 >>> >> >> > > >>> >> >> > > Regards >>> >> >> > > Ravi >>> >> >> > > >>> >> >> > > >>> >> >> > > On Mon, Jan 11, 2010 at 3:03 PM, Jan-Kees van Andel < >>> >> >> > > jankeesvanan...@gmail.com> wrote: >>> >> >> > > >>> >> >> > >> Hi Ravi, >>> >> >> > >> >>> >> >> > >> Just a stupid question. Are your beans extremely big? Since >>> >> FacesBean >>> >> >> > >> doesn't do much locking/synchronizing (none if I'm correctly), >>> the >>> >> >> > >> only reason I can imagine it to eat CPU cycles is because of its >>> >> >> > >> size... >>> >> >> > >> >>> >> >> > >> Also, is it possible for you to do a profiling run using >>> VisualVM? >>> >> >> > >> I've been profiling Trinidad with VisualVM myself and maybe we >>> can >>> >> >> > >> compare numbers... Using the same tool might make it easier to >>> >> >> > >> compare... >>> >> >> > >> >>> >> >> > >> /JK >>> >> >> > >> >>> >> >> > >> >>> >> >> > >> 2010/1/11 Ravi Kapoor <ravikapoor...@gmail.com>: >>> >> >> > >> > I am thinking if that was the case, I would see high CPU in >>> >> >> > >> > java.util.HashMap instead of org.apache.faces.* >>> >> >> > >> > >>> >> >> > >> > If you disagree, please explain and I can try using HashTable >>> to >>> >> >> store >>> >> >> > >> data >>> >> >> > >> > and get fresh numbers. >>> >> >> > >> > >>> >> >> > >> > >>> >> >> > >> > On Mon, Jan 11, 2010 at 10:00 AM, Jakob Korherr < >>> >> >> > >> jakob.korh...@gmail.com>wrote: >>> >> >> > >> > >>> >> >> > >> >> Maybe it happens when accessing the value from the Map with >>> >> >> > >> >> "#{bean.get['memid']}", because the Map is not properly >>> >> >> synchronized, >>> >> >> > >> thus >>> >> >> > >> >> its internal structure is broken and thus it is running in >>> >> infinite >>> >> >> > >> loops. >>> >> >> > >> >> >>> >> >> > >> >> Are your resources properly synchronized? >>> >> >> > >> >> >>> >> >> > >> >> Just a guess in the blue... >>> >> >> > >> >> >>> >> >> > >> >> Regards, >>> >> >> > >> >> Jakob Korherr >>> >> >> > >> >> >>> >> >> > >> >> 2010/1/11 Ravi Kapoor <ravikapoor...@gmail.com> >>> >> >> > >> >> >>> >> >> > >> >> > Another thing, most of our EL expressions are one of the >>> >> >> following >>> >> >> > >> types >>> >> >> > >> >> > >>> >> >> > >> >> > "#{bean.active}" >>> >> >> > >> >> > or >>> >> >> > >> >> > "#{bean.get['memid']}" >>> >> >> > >> >> > >>> >> >> > >> >> > Parsing of these expressions probably happens within >>> >> >> > >> org.apache.myfaces.* >>> >> >> > >> >> > classes. These are fairly basic EL expressions and should >>> not >>> >> be >>> >> >> > >> taking >>> >> >> > >> >> > much >>> >> >> > >> >> > time. We know, the final getter method is not taking much >>> >> time. >>> >> >> > >> >> > >>> >> >> > >> >> > Do you know if the page (and EL expressions) are parsed >>> each >>> >> time >>> >> >> a >>> >> >> > >> page >>> >> >> > >> >> is >>> >> >> > >> >> > rendered? If pages are parsed only once, then the parsing >>> time >>> >> >> > should >>> >> >> > >> >> also >>> >> >> > >> >> > be almost negligible. >>> >> >> > >> >> > >>> >> >> > >> >> > - Ravi >>> >> >> > >> >> > >>> >> >> > >> >> > On Mon, Jan 11, 2010 at 8:28 AM, Ravi < >>> >> ravikapoor...@gmail.com> >>> >> >> > >> wrote: >>> >> >> > >> >> > >>> >> >> > >> >> > > >>> >> >> > >> >> > > Matthias, >>> >> >> > >> >> > > >>> >> >> > >> >> > > If the issue is in bean, it should show up in my >>> analysis. >>> >> Also >>> >> >> > >> >> > getProperty >>> >> >> > >> >> > > is only 40% CPU, there is additional 45% cpu consumed by >>> >> rest >>> >> >> of >>> >> >> > >> the >>> >> >> > >> >> > > trinidad classes totaling 85% total CPU, all within >>> >> >> > >> >> org.apache.myfaces.* >>> >> >> > >> >> > > classes >>> >> >> > >> >> > > >>> >> >> > >> >> > > Ravi >>> >> >> > >> >> > > >>> >> >> > >> >> > > >>> >> >> > >> >> > > >>> >> >> > >> >> > > Matthias Wessendorf wrote: >>> >> >> > >> >> > > >>> >> >> > >> >> > >> Ravi, >>> >> >> > >> >> > >> >>> >> >> > >> >> > >> spoke to a guy that does performance testing/improvement >>> >> for >>> >> >> > >> Oracle >>> >> >> > >> >> > >> Applications. He said that there is some % CPU in >>> Trindad >>> >> but >>> >> >> I >>> >> >> > >> would >>> >> >> > >> >> > >> not give it more them 20%. The heavy hitters is >>> getClientId >>> >> >> > (Blake >>> >> >> > >> - >>> >> >> > >> >> > >> see dev@ thread - is doing some optimization there). >>> >> >> > >> >> > >> >>> >> >> > >> >> > >> Now if getProperty is some el expression and expression >>> is >>> >> >> > >> expensive >>> >> >> > >> >> > >> the problem is in expression not in Trinidad (perhaps >>> that >>> >> is >>> >> >> > the >>> >> >> > >> case >>> >> >> > >> >> > >> where you have el epression but beans behind it are not >>> >> that >>> >> >> > >> good). >>> >> >> > >> >> > >> >>> >> >> > >> >> > >> -Matthias >>> >> >> > >> >> > >> >>> >> >> > >> >> > >> On Mon, Jan 11, 2010 at 6:45 AM, Ravi Kapoor < >>> >> >> > >> ravikapoor...@gmail.com >>> >> >> > >> >> > >>> >> >> > >> >> > >> wrote: >>> >> >> > >> >> > >> >>> >> >> > >> >> > >>> Hi Jan-Kees, >>> >> >> > >> >> > >>> >>> >> >> > >> >> > >>> You are right, the getProperty method is only taking 2K >>> >> >> units. >>> >> >> > >> >> However >>> >> >> > >> >> > if >>> >> >> > >> >> > >>> I >>> >> >> > >> >> > >>> dig deeper, I find that most of the cumulative time is >>> >> being >>> >> >> > >> spent >>> >> >> > >> >> > within >>> >> >> > >> >> > >>> Trinidad classes. The final call to java getters >>> consumes >>> >> >> > >> negligible >>> >> >> > >> >> > >>> time. >>> >> >> > >> >> > >>> >>> >> >> > >> >> > >>> I was unable to create thread structure like you showed >>> >> >> (JProbe >>> >> >> > >> keeps >>> >> >> > >> >> > >>> getting crashed). But I took another screenshot that >>> shows >>> >> >> > almost >>> >> >> > >> >> > similar >>> >> >> > >> >> > >>> details you are looking for. It highlights the classes >>> >> that >>> >> >> are >>> >> >> > >> >> taking >>> >> >> > >> >> > >>> maximum time (cumulative time again) but as you can >>> see, >>> >> all >>> >> >> > the >>> >> >> > >> >> > classes >>> >> >> > >> >> > >>> are >>> >> >> > >> >> > >>> just trinidad classes. >>> >> >> > >> >> > >>> >>> >> >> > >> >> > >>> >>> >> >> > >> >> > >>> >> >> > >> >> >>> >> >> > >> >>> >> >> > >>> >> >> >>> >> >>> http://docs.google.com/Doc?docid=0AbuQsSDG0X9_ZGhraHFwejJfNGRjcGNiN2hk&hl=en >>> >> >> > >> >> > >>> >>> >> >> > >> >> > >>> Regards, >>> >> >> > >> >> > >>> Ravi >>> >> >> > >> >> > >>> >>> >> >> > >> >> > >>> On Sun, Jan 10, 2010 at 12:54 PM, Jan-Kees van Andel < >>> >> >> > >> >> > >>> jankeesvanan...@gmail.com> wrote: >>> >> >> > >> >> > >>> >>> >> >> > >> >> > >>> Hey Ravi, >>> >> >> > >> >> > >>>> >>> >> >> > >> >> > >>>> Looking at your JProbe screenshots for the second >>> time, I >>> >> >> > think >>> >> >> > >> >> you're >>> >> >> > >> >> > >>>> misinterpreting the graphs (but I haven't used JProbe >>> >> >> before, >>> >> >> > so >>> >> >> > >> I >>> >> >> > >> >> > >>>> might be mistaking ;-) ). >>> >> >> > >> >> > >>>> >>> >> >> > >> >> > >>>> In your first screenshot (upper left corner) you can >>> see >>> >> the >>> >> >> > >> total >>> >> >> > >> >> > >>>> time the getProperty method takes. >>> >> >> > >> >> > >>>> This includes its self time and the time taken by its >>> >> >> > children. >>> >> >> > >> Its >>> >> >> > >> >> > >>>> self time is 2781 and the child time is 29609. >>> >> >> > >> >> > >>>> A large portion (around 85%) comes from the >>> >> getLocalProperty >>> >> >> > and >>> >> >> > >> >> > >>>> ValueBinding.getValue methods. >>> >> >> > >> >> > >>>> >>> >> >> > >> >> > >>>> However, these two methods don't do much, since they >>> >> >> delegate >>> >> >> > to >>> >> >> > >> >> other >>> >> >> > >> >> > >>>> methods to do the real work. Maybe even invoking >>> >> application >>> >> >> > >> code, >>> >> >> > >> >> > >>>> like managed beans. >>> >> >> > >> >> > >>>> >>> >> >> > >> >> > >>>> Can you provide a more detailed call tree with more >>> info >>> >> >> about >>> >> >> > >> the >>> >> >> > >> >> > >>>> child methods that are invoked? I'm especially >>> interested >>> >> in >>> >> >> > the >>> >> >> > >> >> > >>>> methods that are called by getLocalProperty and >>> >> >> > >> >> ValueBinding.getValue >>> >> >> > >> >> > >>>> and their children. I'm not that familiar with JProbe, >>> >> but >>> >> >> I'm >>> >> >> > >> sure >>> >> >> > >> >> it >>> >> >> > >> >> > >>>> supports something like a call tree >>> >> >> > >> >> > >>>> ( >>> >> >> > >> >> > >>>> >>> >> >> > >> >> > >>>> >>> >> >> > >> >> > >>> >> >> > >> >> >>> >> >> > >> >>> >> >> > >>> >> >> >>> >> >>> http://www.ej-technologies.com/products/jprofiler/images/whatsnew/exceptional_methods_calltree.png >>> >> >> > >> >> > >>>> ), >>> >> >> > >> >> > >>>> so you can see the problematic method. >>> >> >> > >> >> > >>>> >>> >> >> > >> >> > >>>> Regards, >>> >> >> > >> >> > >>>> Jan-Kees >>> >> >> > >> >> > >>>> >>> >> >> > >> >> > >>>> >>> >> >> > >> >> > >>>> 2010/1/10 Ravi <ravikapoor...@gmail.com>: >>> >> >> > >> >> > >>>> >>> >> >> > >> >> > >>>>> Matthias, I think websphere 6.1 does not support JSF >>> >> 1.2. I >>> >> >> > >> will >>> >> >> > >> >> > >>>>> doublecheck, let me know if this is incorrect. This >>> mans >>> >> I >>> >> >> > >> cannot >>> >> >> > >> >> try >>> >> >> > >> >> > >>>>> trinidad version 1.2.12 >>> >> >> > >> >> > >>>>> >>> >> >> > >> >> > >>>>> I will try out 1.0.11 release, but that is a minor >>> >> release >>> >> >> > >> update >>> >> >> > >> >> and >>> >> >> > >> >> > I >>> >> >> > >> >> > >>>>> seriously doubt if it will fix such a performance >>> issue. >>> >> >> > >> >> > >>>>> >>> >> >> > >> >> > >>>>> What other options do we have? Is there a way we can >>> get >>> >> >> > >> somebody >>> >> >> > >> >> > >>>>> >>> >> >> > >> >> > >>>> familiar >>> >> >> > >> >> > >>>> >>> >> >> > >> >> > >>>>> with trinidad architecture/code to look at this >>> issue? >>> >> This >>> >> >> > can >>> >> >> > >> >> even >>> >> >> > >> >> > be >>> >> >> > >> >> > >>>>> a >>> >> >> > >> >> > >>>>> paid assignment. >>> >> >> > >> >> > >>>>> >>> >> >> > >> >> > >>>>> Regards >>> >> >> > >> >> > >>>>> Ravi >>> >> >> > >> >> > >>>>> >>> >> >> > >> >> > >>>>> >>> >> >> > >> >> > >>>>> Matthias Wessendorf wrote: >>> >> >> > >> >> > >>>>> >>> >> >> > >> >> > >>>>>> Hello Ravi, >>> >> >> > >> >> > >>>>>> >>> >> >> > >> >> > >>>>>> I wonder what our last release for JSF 1.1 (1.0.11) >>> >> does? >>> >> >> > >> >> > >>>>>> >>> >> >> > >> >> > >>>>>> Not sure, perhaps you may also try the JSF 1.2 >>> version >>> >> ? >>> >> >> > >> (1.2.12) >>> >> >> > >> >> > >>>>>> The JSF 1.2 version is the one that is best >>> supported, >>> >> >> these >>> >> >> > >> days. >>> >> >> > >> >> > >>>>>> >>> >> >> > >> >> > >>>>>> Trinidad 2.0 is now in alpha stage, and I can >>> >> understand >>> >> >> > that >>> >> >> > >> you >>> >> >> > >> >> > >>>>>> don't want to update on that version, now >>> >> >> > >> >> > >>>>>> >>> >> >> > >> >> > >>>>>> -Matthias >>> >> >> > >> >> > >>>>>> >>> >> >> > >> >> > >>>>>> On Sun, Jan 10, 2010 at 4:56 AM, Ravi < >>> >> >> > >> ravikapoor...@gmail.com> >>> >> >> > >> >> > >>>>>> wrote: >>> >> >> > >> >> > >>>>>> >>> >> >> > >> >> > >>>>>>> Scott, we do not have CPUs available. The time >>> >> trinidad >>> >> >> is >>> >> >> > >> >> > consuming >>> >> >> > >> >> > >>>>>>> is >>> >> >> > >> >> > >>>>>>> supposed to be doing some other work. Hence this is >>> >> >> costing >>> >> >> > >> us >>> >> >> > >> >> real >>> >> >> > >> >> > >>>>>>> dollars >>> >> >> > >> >> > >>>>>>> and hence our time and effort to resolve this. >>> >> >> > >> >> > >>>>>>> >>> >> >> > >> >> > >>>>>>> This is not initial hit of page. I always ignore >>> the >>> >> >> first >>> >> >> > >> hit on >>> >> >> > >> >> > all >>> >> >> > >> >> > >>>>>>> pages, >>> >> >> > >> >> > >>>>>>> I am only measuring CPU from 2nd hit onwards. >>> >> >> > >> >> > >>>>>>> >>> >> >> > >> >> > >>>>>>> Ravi >>> >> >> > >> >> > >>>>>>> >>> >> >> > >> >> > >>>>>>> >>> >> >> > >> >> > >>>>>>> Scott O'Bryan wrote: >>> >> >> > >> >> > >>>>>>> >>> >> >> > >> >> > >>>>>>>> I don't know. I'm of the camp that if the CPU >>> time >>> >> is >>> >> >> > >> >> available, >>> >> >> > >> >> > >>>>>>>> use >>> >> >> > >> >> > >>>>>>>> it. That said, is this load consistant or are you >>> >> just >>> >> >> > >> testing >>> >> >> > >> >> an >>> >> >> > >> >> > >>>>>>>> initial hit of each page. >>> >> >> > >> >> > >>>>>>>> >>> >> >> > >> >> > >>>>>>>> Sent from my iPhone >>> >> >> > >> >> > >>>>>>>> >>> >> >> > >> >> > >>>>>>>> On Jan 8, 2010, at 11:25 PM, Ravi < >>> >> >> > ravikapoor...@gmail.com> >>> >> >> > >> >> > wrote: >>> >> >> > >> >> > >>>>>>>> >>> >> >> > >> >> > >>>>>>>> Hi Jan-Kees, >>> >> >> > >> >> > >>>>>>>>> >>> >> >> > >> >> > >>>>>>>>> Now that I am reading your message again, I do >>> want >>> >> to >>> >> >> > >> answer >>> >> >> > >> >> > your >>> >> >> > >> >> > >>>>>>>>> questions in detail. First I agree reflection is >>> >> cheap, >>> >> >> > >> that is >>> >> >> > >> >> > why >>> >> >> > >> >> > >>>>>>>>> reflection is not my concern. Time being spent in >>> >> >> > >> reflection is >>> >> >> > >> >> > >>>>>>>>> almost negligible compared to time being spent in >>> >> >> > trinidad >>> >> >> > >> >> > classes. >>> >> >> > >> >> > >>>>>>>>> >>> >> >> > >> >> > >>>>>>>>> Secondly IO and locking etc contribute to clock >>> time >>> >> >> but >>> >> >> > >> not to >>> >> >> > >> >> > CPU >>> >> >> > >> >> > >>>>>>>>> time. e.g. for IO, the thread may be in a wait >>> state >>> >> >> > >> waiting >>> >> >> > >> >> for >>> >> >> > >> >> > >>>>>>>>> data to arrive. In this case, the clock keeps >>> >> ticking >>> >> >> but >>> >> >> > >> such >>> >> >> > >> >> a >>> >> >> > >> >> > >>>>>>>>> wait does not need CPU. My numbers are >>> specifically >>> >> CPU >>> >> >> > >> time. >>> >> >> > >> >> > Which >>> >> >> > >> >> > >>>>>>>>> means trinidad is not waiting but executing CPU >>> >> >> > >> instructions. >>> >> >> > >> >> > >>>>>>>>> >>> >> >> > >> >> > >>>>>>>>> This is why the user load is also irrelevant >>> (high >>> >> load >>> >> >> > >> leads >>> >> >> > >> >> to >>> >> >> > >> >> > >>>>>>>>> adding clock time but not to CPU time). But since >>> >> you >>> >> >> > >> asked, to >>> >> >> > >> >> > get >>> >> >> > >> >> > >>>>>>>>> these numbers, I am not doing a load testing. I >>> am >>> >> >> simply >>> >> >> > >> >> loading >>> >> >> > >> >> > 4 >>> >> >> > >> >> > >>>>>>>>> screens 4 times in order (total 16 screens). >>> >> >> > >> >> > >>>>>>>>> >>> >> >> > >> >> > >>>>>>>>> Regards >>> >> >> > >> >> > >>>>>>>>> Ravi >>> >> >> > >> >> > >>>>>>>>> >>> >> >> > >> >> > >>>>>>>>> >>> >> >> > >> >> > >>>>>>>>> >>> >> >> > >> >> > >>>>>>>>> Jan-Kees van Andel wrote: >>> >> >> > >> >> > >>>>>>>>> >>> >> >> > >> >> > >>>>>>>>>> I'm not sure, but I doubt the mailing list >>> supports >>> >> >> > >> >> attachments. >>> >> >> > >> >> > >>>>>>>>>> Maybe you could provide a link to some image >>> >> hosting >>> >> >> > site? >>> >> >> > >> >> > >>>>>>>>>> My first thought, reflection is darn cheap, >>> >> especially >>> >> >> > >> since >>> >> >> > >> >> > Java >>> >> >> > >> >> > >>>>>>>>>> 5 >>> >> >> > >> >> > >>>>>>>>>> and even more since Java 6. I'm no IBM JVM >>> >> specialist, >>> >> >> > but >>> >> >> > >> I >>> >> >> > >> >> > don't >>> >> >> > >> >> > >>>>>>>>>> think there are major differences with >>> HotSpot... >>> >> >> > Compared >>> >> >> > >> >> with >>> >> >> > >> >> > >>>>>>>>>> SQL >>> >> >> > >> >> > >>>>>>>>>> queries, backend transactions, web service >>> calls, >>> >> etc. >>> >> >> > >> >> > reflective >>> >> >> > >> >> > >>>>>>>>>> method invocations really don't make a >>> difference. >>> >> >> > >> >> > >>>>>>>>>> Having said that, what kind of application are >>> you >>> >> >> > >> testing? >>> >> >> > >> >> Does >>> >> >> > >> >> > >>>>>>>>>> >>> >> >> > >> >> > >>>>>>>>> this >>> >> >> > >> >> > >>>> >>> >> >> > >> >> > >>>>> application have any I/O, locking or other expensive >>> >> things >>> >> >> > >> that >>> >> >> > >> >> may >>> >> >> > >> >> > >>>>>>>>>> be the cause of the CPU-time imbalance? >>> >> >> > >> >> > >>>>>>>>>> Also, what kind of load are you simulating on >>> your >>> >> >> > >> >> application? >>> >> >> > >> >> > >>>>>>>>>> Long >>> >> >> > >> >> > >>>>>>>>>> sessions with not much users? Lots of short >>> >> sessions? >>> >> >> > >> >> > Hyperactive >>> >> >> > >> >> > >>>>>>>>>> users without any pauses? >>> >> >> > >> >> > >>>>>>>>>> /JK >>> >> >> > >> >> > >>>>>>>>>> Ps. How did you configure your profiler? >>> Sampling >>> >> or >>> >> >> > >> >> > >>>>>>>>>> tracing/instrumentation? Although I don't think >>> it >>> >> >> makes >>> >> >> > a >>> >> >> > >> >> > >>>>>>>>>> >>> >> >> > >> >> > >>>>>>>>> difference >>> >> >> > >> >> > >>>> >>> >> >> > >> >> > >>>>> in this case, sampling is less accurate... >>> >> >> > >> >> > >>>>>>>>>> 2010/1/8 Ravi Kapoor <ravikapoor...@gmail.com>: >>> >> >> > >> >> > >>>>>>>>>> >>> >> >> > >> >> > >>>>>>>>>>> The actual call to getter method is only using >>> 2% >>> >> >> CPU. >>> >> >> > >> Rest >>> >> >> > >> >> 38% >>> >> >> > >> >> > >>>>>>>>>>> is >>> >> >> > >> >> > >>>>>>>>>>> being >>> >> >> > >> >> > >>>>>>>>>>> used within trinidad classes. >>> >> >> > >> >> > >>>>>>>>>>> I am attaching two screenshots to give you more >>> >> >> > details. >>> >> >> > >> >> > >>>>>>>>>>> >>> >> >> > >> >> > >>>>>>>>>>> In first screenshot, you can see at the top >>> left >>> >> >> > corner, >>> >> >> > >> >> total >>> >> >> > >> >> > >>>>>>>>>>> CPU >>> >> >> > >> >> > >>>>>>>>>>> units >>> >> >> > >> >> > >>>>>>>>>>> taken by getProperty are 32391 >>> >> >> > >> >> > >>>>>>>>>>> getProperty calls >>> >> >> javax.faces.el.ValueBinding.getValue >>> >> >> > >> which >>> >> >> > >> >> > >>>>>>>>>>> calls >>> >> >> > >> >> > >>>>>>>>>>> >>> >> org.apache.myfaces.el.PropertyResolverImpl.getValue >>> >> >> > which >>> >> >> > >> >> calls >>> >> >> > >> >> > >>>>>>>>>>> >>> >> >> org.apache.myfaces.el.PropertyResolverImpl.getProperty >>> >> >> > >> which >>> >> >> > >> >> > >>>>>>>>>>> calls >>> >> >> > >> >> > >>>>>>>>>>> java.lang.reflect.Method.invoke. >>> >> >> > >> >> > >>>>>>>>>>> >>> >> >> > >> >> > >>>>>>>>>>> In second screenshot you can see that >>> >> Method.invoke >>> >> >> is >>> >> >> > >> using >>> >> >> > >> >> > only >>> >> >> > >> >> > >>>>>>>>>>> 1781 units >>> >> >> > >> >> > >>>>>>>>>>> of CPU. Rest of the time is being spent within >>> >> >> trinidad >>> >> >> > >> >> > classes. >>> >> >> > >> >> > >>>>>>>>>>> >>> >> >> > >> >> > >>>>>>>>>>> Does this help? Also the rest of trinidad using >>> >> 45% >>> >> >> CPU >>> >> >> > >> usage >>> >> >> > >> >> > is >>> >> >> > >> >> > >>>>>>>>>>> also highly >>> >> >> > >> >> > >>>>>>>>>>> concerning. >>> >> >> > >> >> > >>>>>>>>>>> >>> >> >> > >> >> > >>>>>>>>>>> Thanks >>> >> >> > >> >> > >>>>>>>>>>> Ravi >>> >> >> > >> >> > >>>>>>>>>>> >>> >> >> > >> >> > >>>>>>>>>>> >>> >> >> > >> >> > >>>>>>>>>>> On Fri, Jan 8, 2010 at 1:47 PM, Jan-Kees van >>> Andel >>> >> >> > >> >> > >>>>>>>>>>> <jankeesvanan...@gmail.com> wrote: >>> >> >> > >> >> > >>>>>>>>>>> >>> >> >> > >> >> > >>>>>>>>>>>> Hey, >>> >> >> > >> >> > >>>>>>>>>>>> >>> >> >> > >> >> > >>>>>>>>>>>> Is it possible that the getProperty indirectly >>> >> >> invokes >>> >> >> > >> some >>> >> >> > >> >> > >>>>>>>>>>>> expensive >>> >> >> > >> >> > >>>>>>>>>>>> computation? For example, do you have lots of >>> >> logic >>> >> >> > >> inside >>> >> >> > >> >> > your >>> >> >> > >> >> > >>>>>>>>>>>> getters? >>> >> >> > >> >> > >>>>>>>>>>>> >>> >> >> > >> >> > >>>>>>>>>>>> Regards, >>> >> >> > >> >> > >>>>>>>>>>>> Jan-Kees >>> >> >> > >> >> > >>>>>>>>>>>> >>> >> >> > >> >> > >>>>>>>>>>>> >>> >> >> > >> >> > >>>>>>>>>>>> 2010/1/8 Ravi Kapoor <ravikapoor...@gmail.com >>> >: >>> >> >> > >> >> > >>>>>>>>>>>> >>> >> >> > >> >> > >>>>>>>>>>>>> Hi Matthias, >>> >> >> > >> >> > >>>>>>>>>>>>> >>> >> >> > >> >> > >>>>>>>>>>>>> Here are the details: >>> >> >> > >> >> > >>>>>>>>>>>>> >>> >> >> > >> >> > >>>>>>>>>>>>> Server: Websphere 6.1 >>> >> >> > >> >> > >>>>>>>>>>>>> >>> >> >> > >> >> > >>>>>>>>>>>>> Trinidad version: 1.0.7 (We cant upgrade to >>> 2.0 >>> >> >> > until >>> >> >> > >> we >>> >> >> > >> >> > >>>>>>>>>>>>> upgrade >>> >> >> > >> >> > >>>>>>>>>>>>> websphere >>> >> >> > >> >> > >>>>>>>>>>>>> which will happen in due course. Even then if >>> >> this >>> >> >> > >> issue >>> >> >> > >> >> has >>> >> >> > >> >> > >>>>>>>>>>>>> not >>> >> >> > >> >> > >>>>>>>>>>>>> been >>> >> >> > >> >> > >>>>>>>>>>>>> addressed, the problem may exist in 2.0 as >>> >> well.) >>> >> >> > >> >> > >>>>>>>>>>>>> >>> >> >> > >> >> > >>>>>>>>>>>>> OS: Windows (Even though I am measuring >>> numbers >>> >> on >>> >> >> > >> windows >>> >> >> > >> >> > but >>> >> >> > >> >> > >>>>>>>>>>>>> I >>> >> >> > >> >> > >>>>>>>>>>>>> do not >>> >> >> > >> >> > >>>>>>>>>>>>> think this is OS specific) >>> >> >> > >> >> > >>>>>>>>>>>>> >>> >> >> > >> >> > >>>>>>>>>>>>> >>> >> >> > >> >> > >>>>>>>>>>>>> Let me know if you need to know anything >>> else. >>> >> >> > >> >> > >>>>>>>>>>>>> >>> >> >> > >> >> > >>>>>>>>>>>>> Regards >>> >> >> > >> >> > >>>>>>>>>>>>> Ravi >>> >> >> > >> >> > >>>>>>>>>>>>> >>> >> >> > >> >> > >>>>>>>>>>>>> >>> >> >> > >> >> > >>>>>>>>>>>>> >>> >> >> > >> >> > >>>>>>>>>>>>> On Fri, Jan 8, 2010 at 1:09 AM, Matthias >>> >> Wessendorf >>> >> >> > >> >> > >>>>>>>>>>>>> <mat...@apache.org>wrote: >>> >> >> > >> >> > >>>>>>>>>>>>> >>> >> >> > >> >> > >>>>>>>>>>>>> Hello Ravi, >>> >> >> > >> >> > >>>>>>>>>>>>>> >>> >> >> > >> >> > >>>>>>>>>>>>>> some more background would be good, e.g. >>> what >>> >> >> > version >>> >> >> > >> of >>> >> >> > >> >> > >>>>>>>>>>>>>> Trinidad etc. >>> >> >> > >> >> > >>>>>>>>>>>>>> >>> >> >> > >> >> > >>>>>>>>>>>>>> -Matthias >>> >> >> > >> >> > >>>>>>>>>>>>>> >>> >> >> > >> >> > >>>>>>>>>>>>>> On Thu, Jan 7, 2010 at 11:25 PM, Ravi Kapoor >>> >> >> > >> >> > >>>>>>>>>>>>>> <ravikapoor...@gmail.com >>> >> >> > >> >> > >>>>>>>>>>>>>> wrote: >>> >> >> > >> >> > >>>>>>>>>>>>>> >>> >> >> > >> >> > >>>>>>>>>>>>>>> Has anybody done performance tests on >>> trinidad >>> >> >> > >> >> application. >>> >> >> > >> >> > I >>> >> >> > >> >> > >>>>>>>>>>>>>>> have an >>> >> >> > >> >> > >>>>>>>>>>>>>>> application and it appears that it is >>> taking >>> >> >> 80-90% >>> >> >> > >> of >>> >> >> > >> >> CPU >>> >> >> > >> >> > in >>> >> >> > >> >> > >>>>>>>>>>>>>>> >>> >> >> > >> >> > >>>>>>>>>>>>>> my >>> >> >> > >> >> > >>>> >>> >> >> > >> >> > >>>>> application, thus killing performance. >>> >> >> > >> >> > >>>>>>>>>>>>>>> >>> >> >> > >> >> > >>>>>>>>>>>>>>> We ran load tests and our CPU went to 100% >>> >> usage. >>> >> >> > At >>> >> >> > >> this >>> >> >> > >> >> > >>>>>>>>>>>>>>> point we >>> >> >> > >> >> > >>>>>>>>>>>>>>> >>> >> >> > >> >> > >>>>>>>>>>>>>> measured >>> >> >> > >> >> > >>>>>>>>>>>>>> >>> >> >> > >> >> > >>>>>>>>>>>>>>> how much time was being taken by each >>> >> >> class/method. >>> >> >> > >> Here >>> >> >> > >> >> > are >>> >> >> > >> >> > >>>>>>>>>>>>>>> some >>> >> >> > >> >> > >>>>>>>>>>>>>>> interesting figures: >>> >> >> > >> >> > >>>>>>>>>>>>>>> >>> >> >> > >> >> > >>>>>>>>>>>>>>> CPU usage by all Trinidad + myfaces classes >>> = >>> >> >> > 80-90% >>> >> >> > >> >> > >>>>>>>>>>>>>>> Myfaces CPU usage (without trinidad) = 8% >>> >> (which >>> >> >> > >> implies >>> >> >> > >> >> > >>>>>>>>>>>>>>> trinidad is >>> >> >> > >> >> > >>>>>>>>>>>>>>> >>> >> >> > >> >> > >>>>>>>>>>>>>> taking >>> >> >> > >> >> > >>>>>>>>>>>>>> >>> >> >> > >> >> > >>>>>>>>>>>>>>> 70-80% of CPU) >>> >> >> > >> >> > >>>>>>>>>>>>>>> Total time taken by one method >>> >> >> > >> >> > >>>>>>>>>>>>>>> >>> >> >> > >> >> > >>> (org.apache.myfaces.trinidad.bean.FacesBeanImpl.getProperty) >>> >> >> > >> >> > >>>>>>>>>>>>>>> = >>> >> >> > >> >> > >>>>>>>>>>>>>>> 40% >>> >> >> > >> >> > >>>>>>>>>>>>>>> >>> >> >> > >> >> > >>>>>>>>>>>>>>> Can anybody confirm that they have seen >>> this >>> >> >> > >> behavior? >>> >> >> > >> >> > >>>>>>>>>>>>>>> Or if somebody can confirm that this does >>> not >>> >> >> > happen >>> >> >> > >> in >>> >> >> > >> >> > their >>> >> >> > >> >> > >>>>>>>>>>>>>>> performance >>> >> >> > >> >> > >>>>>>>>>>>>>>> tests, that should help too. >>> >> >> > >> >> > >>>>>>>>>>>>>>> >>> >> >> > >> >> > >>>>>>>>>>>>>>> Thanks >>> >> >> > >> >> > >>>>>>>>>>>>>>> Ravi >>> >> >> > >> >> > >>>>>>>>>>>>>>> >>> >> >> > >> >> > >>>>>>>>>>>>>>> -- >>> >> >> > >> >> > >>>>>>>>>>>>>> Matthias Wessendorf >>> >> >> > >> >> > >>>>>>>>>>>>>> >>> >> >> > >> >> > >>>>>>>>>>>>>> blog: >>> http://matthiaswessendorf.wordpress.com/ >>> >> >> > >> >> > >>>>>>>>>>>>>> sessions: >>> >> http://www.slideshare.net/mwessendorf >>> >> >> > >> >> > >>>>>>>>>>>>>> twitter: http://twitter.com/mwessendorf >>> >> >> > >> >> > >>>>>>>>>>>>>> >>> >> >> > >> >> > >>>>>>>>>>>>>> >>> >> >> > >> >> > >>>>>> >>> >> >> > >> >> > >>>>>> >>> >> >> > >> >> > >>>>> >>> >> >> > >> >> > >> >>> >> >> > >> >> > >> >>> >> >> > >> >> > >> >>> >> >> > >> >> > > >>> >> >> > >> >> > >>> >> >> > >> >> >>> >> >> > >> > >>> >> >> > >> >>> >> >> > > >>> >> >> > > >>> >> >> > >>> >> >> >>> >> > >>> >> >>> > >>> >> > -- Matthias Wessendorf blog: http://matthiaswessendorf.wordpress.com/ sessions: http://www.slideshare.net/mwessendorf twitter: http://twitter.com/mwessendorf