Tim Williams wrote:
On 3/30/06, Ross Gardler <[EMAIL PROTECTED]> wrote:

Tim Williams wrote:

On 3/30/06, Ross Gardler <[EMAIL PROTECTED]> wrote:


Tim Williams wrote:


On 3/30/06, Ross Gardler <[EMAIL PROTECTED]> wrote:



Tim Williams wrote:



On 3/30/06, Ross Gardler <[EMAIL PROTECTED]> wrote:




Tim Williams wrote:

...



I think I'm not explaining it well enough.  "n" (e.g. 315) is not the
number of nodes (SelectNode, MountNode, etc.); "n" is the number of
references to "lm:some-resource" involved in a given request.  In
other words, traversing all of the nodes is actually really fast,
traversing all of the nodes for each of the 315 references to an
lm:some-resource is, in total, slow.

Ahhh... OK, that makes more sense now - sorry for being so thick.

I'm still having real difficulty understanding why a single page results
in 315 "lm:some-resource" requests. Do we have any idea waht these are?
I ask because it appears that in your testing you have set up some
decent profiling.


Well, I haven't been looking at *what* they are really.  No decent
profiling - just basic logging.  We're a victim of our own success I
reckon - we've moved tons of stuff to use the locationmap protocol and
now we're seeing the fruits of it.

My linux command skills leave something to be desired but...
cd $FORREST_HOME/main
grep lm: * | more

and

cd $FORREST_HOME/main
grep lm: * | awk 'END {print NR}'

This returns 223 - which, i think, is the number of references to the
locationmap protocol in our core xmaps.  I reckon some are referenced
multiple times?

I just can't believe that we *need& 315 lm:requests for a single page. I
would expect something like:

- around 10 stylesheets (depends on input format)
- around of 25 images (depends on skin/theme)
- 2 or 3 CSS files
- possibly a javascript file or two

Most of these should be cached by the Cocoon sitemap so only requested
once, but, Cocoon needs to resolve the lm: protocol in order to check
validity.

Then there will be the requests for the content which should be 1 source
file and x image files.

So that (back of the envelope) estimate would see something like 40-50
lm: requests for most pages.

How this gets to 315 is a worry, and needs some investigation.


You're very right.


Are your figures using skins or the dispatcher? If it's easy to do
perhaps you can give a comparison of the numbers with the alternative
(I'd be very suprised if the Dispatcer is lower, but I'd like to see the
amount of difference).


skins; dispatcher turns up ~172 lm: references.

WooHoo!!! Dispatcher team - congratulations on being considerably more efficient.

It's still too high, but quite an improvement.

One of the big culprits that i see is doing Cocoon-selectors vs
Locationmap selectors.  Whenever we do lm: references in Cocoon
selectors, we're duplicating input module requests - one to test for
not null, then the other to pull the actual value.

For example, this snippet causes duplicate lm requests:
           <map:select type="exists">
             <map:when test="{lm:project-skinconf.xsl}">
               <map:transform src="{lm:project-skinconf.xsl}"/>
             </map:when>

I fear this is the tip of the iceberg... when I find time, I'll
continue to pursue this line of investigation, just wanted to send a
note that you're direction was correct.

Glad I could help a little - it's amazing how just throwing out ideas can help sometimes (but can also end up as red herrings). I doubt I'm going to get time to look into this in detail anytime soon, but if you want to bounce things around again - you know where I am ;-)

Ross