giacomo wrote: > On Wed, 13 Feb 2002, Berin Loritsch wrote: > > Berin, > > Thanks giving us background information from Avalon land. It sounds very > interesting and I am very curious to see Cocoon performance number with > those new or rewritten classes.
I am in the process of writing a Profile test that compares ContainerManager code and ECM code. One of the coolest things is that the ContainerManager and AbstractContainer implementations have a constant startup time (i.e. initialization is done asynchronously). This allows expensive operations like initializing the DataSourceComponent to not affect startup times. With only three components in an Xconf file, I am seeing the ECM consistently in the 1.5 second range and ContainerManager in the 600-700 ms range. I haven't gotten to the point where I pound the ECM and ContainerManager's ComponentManager with 100 threads simultaneously, performing lookup and release on all three components. Currently, just startup times are pretty cool. There are usability issues, so I need to simplify the maintenance of ContainerManager (it is somewhat of a bear right now), but it absolutely rocks from the client perspective. > > Giacomo > > >>I have been performing some performance analysis of the Avalon Excalibur code, and I >discovered >>some serious points of thread contention. In a web environment, there can be as >many as 150 >>threads (or more) if the web server uses simple thread per connection technology >>(most common aproach for Java based servers like Tomcat). I expanded the Profile >tests to work >>using 100 threads. The default pooling implementation has some serious slowdown due >to thread >>contention. >> >>A new Avalon committer named Leif Mortenson has created a new Pool implementation >called >>ResourceLimitingPool. This pool implementation is very flexible, and many orders of >magnitude >>more efficient than the current pooling implementations. I have posted a VOTE to >promote it >>from scratchpad to production. When that happens, there will be less thread >contention on >>Pooled components. >> >>Another, more serious point of contention is the ExcaliburComponentManager >implementation itself. >>The reason is that there are some *potentially* long stretches of code that are >blocking. This >>is particularly true if the ECM needs to initialize a PoolableComponent. I have >tried to make >>the blocking portions as small as possible, but we still have some work to do. >> >>I am also in the process of the new ContainerManager/Container abstraction. The >current CVS >>version is functional (not in Cocoon's CVS, but Avalon's), but the API needs some >sprucing up. >>I also need to put in some Profiling tests. In the new ContainerManager/Container >abstraction >>we make use of a new ManagedPool. The pooling implementation for the managed pool >is even more >>efficient than Leif's excellent ResourceLimitingPool. It is less deterministic as >to the >>precise number of instances available, which the ResourceLimitingPool is better >suited for. >>The alternative FixedSizePool is both ThreadSafe and the fastest implementation. >> >>The new ContainerManager/Container abstraction does have a new Role configuration >format, and >>does not pay attention to lifestyle interfaces. It is an experiment to see if we >can live without >>them--and seems to be working well. The RoleManager will match the ComponentHandler >implementation >>to the Component implementation. This is much more flexible, and I believe it will >work better >>in the long run. The default ComponentHandler has been changed from Factory to >PerThread (Using >>a ThreadLocal to manage component instances). >> >>I am very interested in making Cocoon much better, and the best way I can do that is >to work >>on the core Avalon stuff. The future will require changes, but the payoff will be >worth it. >>I wanted to point out the hotspots that Cocoon is facing, and why it is having a >hard time scaling. >> >>In the interim, I would suggest limiting the number of threads that your Servlet >container will >>allow to be used on Cocoon to around 40--but when the core is made better, we won't >need to have >>those limitations. >> >> >> >> > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, email: [EMAIL PROTECTED] > > . > > -- "They that give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety." - Benjamin Franklin --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, email: [EMAIL PROTECTED]