These are all good notes, and I was certainly thinking about Ben's tests when I wrote my initial email.
The scope of this can expand dramatically. What I really want, for a first pass, is an answer to the question: Is Tapestry 5.2 faster than 5.1? Does it use less memory? On Thu, Sep 2, 2010 at 11:33 PM, Kalle Korhonen <kalle.o.korho...@gmail.com> wrote: > Ben, what you are talking about seems to be geared more towards > testing readiness and scalability of a production application. For > benchmarking multiple versions of the framework, I'd assume data > access would never come to play as there should be no database > whatsoever. Maintaining a fully synthetic test should also be far > easier than maintaining a scalability test for a real world > application. Also, standardized, guaranteed QoS VMs are great for > scalability testing when you are mostly looking for "good enough" as > an answer but if you are really comparing versions of the framework > over time, the differences should be measured in milliseconds even > with thousands of repeated executions, so it's critical that extra > variables are reduced to minimum just the same way as if we > benchmarked specific features of JVM against different versions. On > the other hand, creating and benchmarking a close-to-real-world > blueprint application is always good marketing, which Tapestry > certainly needs. > > Howard expressed a desire for doing both type of testing, but I don't > think its a good idea to try and combine the different goals into the > same test suite. In a fully synthetic test, the absolute numbers don't > matter, only the differences do. And you certainly couldn't compare > results of a synthetic test implemented in one framework to test > results implemented in another framework, but only to different > versions of itself. Seems that the first thing to do is to decide what > exactly we want to measure. > > Kalle > > > On Thu, Sep 2, 2010 at 10:55 PM, Ben Gidley <b...@gidley.co.uk> wrote: >> I did a comparative load test >> http://blog.gidley.co.uk/2009/05/tapestry-load-testing-round-up.html a while >> back and we do a lot of load testing for SeeSaw.com (mainly to compare >> versions). I did create a 'comparative' struts application for that >> evaluation (source code >> http://sites.google.com/a/gidley.co.uk/tapestryloadtest/Home/test-5) >> >> We use Grinder as our load test tool - as it handles clustered load >> generating agents well and the Jython scripting makes it easy to share steps >> between 'journeys' in the application. You probably don't need to worry >> about clustering - as it isn't a core tapestry 'feature' (rather an >> environmental one), but even without that feature grinder is easy to work >> and powerful. >> >> If your goal is to test tapestry the first issue you will hit is any Data >> Access - in our apps the data access piece is 90% of the page time. In >> SeeSaw we 'solve' this by heavily caching data so most pages only access >> data from a Cache. I would suggest to get a test that focused on tapestry >> you load you data from in memory caches. That way you won't be measuring how >> fast Hibernate or your DB(etc) performs. >> >> Another big issue we hit is breaking/maintaining our load test scripts - as >> they effectively reverse engineer some tapestry behaviours (especially AJAX >> ones) they can get broken quite easily. Our solution is to run them single >> threaded as part of our CI builds. This usually catches obvious changes. >> >> Another thing to watch out for is your app server. Jetty is an excellent >> high load container - but depending on how it is configured it can >> 'throttle' throughput (this is excellent thing in production). This can skew >> your test as you end up measuring the throttling and not the application. >> The trick is to set the thread pools in Jetty far higher than you would in >> production so you can be sure you are not maximising them. >> >> I would advise trying to use controlled hardware for your test - slight >> environmental differences can totally adjust the results. EC2 and its like >> are popular for this - do Apache have anything similar? I can get you time >> on (but not direct access to) the ioko cloud (which is a VMWare VSphere >> cluster), which does let you nearly guarantee QOS. >> >> It may be a good idea to build the test as something that can be easily >> deployed as a Virtual machine as it would let you easily deploy it anywhere. >> I have previously used Suse Studio (http://susestudio.com/) to build a very >> small VM with a maven script on it that updates/runs my app. The VM's built >> there will run pretty much anywhere. >> >> To find issues with a load test I recommend YourKit. It gives you a ton of >> monitoring and via its 'probes' you can see right inside tapestry. It is >> free for open source projects. I would also recommend enabling JMX in your >> application and periodically writing the stats somewhere. You can do this >> simply with VisualVM or you can get more advanced and store them in a >> database and graph them - ioko use Cacti http://www.cacti.net/ and >> http://jmxmonitor.sourceforge.net/ (though it may be a bit more complex for >> what you want). >> >> >> Ben Gidley >> >> On Thu, Sep 2, 2010 at 11:07 PM, Thiago H. de Paula Figueiredo < >> thiag...@gmail.com> wrote: >> >>> On Thu, 02 Sep 2010 18:30:49 -0300, Howard Lewis Ship <hls...@gmail.com> >>> wrote: >>> >>> One of my long term and unrealized goals for Tapestry is to have a >>>> legitimate performance testing lab. >>>> >>> >>> Cool! >>> >>> >>> I'd like the ability to run a "standard" application through its >>>> paces, collect statistics, and see how well each new Tapestry release >>>> compares to its predecessor in terms of general performance: response >>>> time, memory utilization, saturation and recovery. Ideally, it would >>>> be nice to create equivalent JSP/Spring MVC/Struts/Wicket >>>> implementations of the same app. >>>> >>> >>> I've done something a little similar, but in a smaller scope, for a >>> presentation comparing Struts 1, Struts 2, JSF and Tapestry 5. I implemented >>> a simple application, DAOs and simple business rules layer, and them >>> implemented its web interface using each of the frameworks. >>> >>> >>> I'm really concerned with ensuring that 5.2 out-performs 5.1, and uses >>>> less memory. The singleton pages approach should lower the memory >>>> utilization ... but I'm concerned that the new AOP stuff inside >>>> ClassTransformation (which has a tendency to create lots of little >>>> one-off classes) will overshadow the other improvements. >>>> >>> >>> Someone in the mailing list mentioned Parfait ( >>> http://code.google.com/p/parfait/wiki/IntroductionToParfait). It could be >>> helpful for that. >>> >>> -- >>> Thiago H. de Paula Figueiredo >>> Independent Java, Apache Tapestry 5 and Hibernate consultant, developer, >>> and instructor >>> Owner, Ars Machina Tecnologia da Informação Ltda. >>> http://www.arsmachina.com.br >>> >>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: dev-unsubscr...@tapestry.apache.org >>> For additional commands, e-mail: dev-h...@tapestry.apache.org >>> >>> >> >> >> -- >> Ben Gidley >> >> www.gidley.co.uk >> b...@gidley.co.uk >> > > --------------------------------------------------------------------- > To unsubscribe, e-mail: dev-unsubscr...@tapestry.apache.org > For additional commands, e-mail: dev-h...@tapestry.apache.org > > -- Howard M. Lewis Ship Creator of Apache Tapestry The source for Tapestry training, mentoring and support. Contact me to learn how I can get you up and productive in Tapestry fast! (971) 678-5210 http://howardlewisship.com --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tapestry.apache.org For additional commands, e-mail: dev-h...@tapestry.apache.org