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]

Reply via email to