[omniORB] Performance monitoring

Tim Ward timw@lsl.co.uk
Tue, 6 Nov 2001 17:28:57 -0000


Hi

We have an application with a dozen or so more or less complicated servers
all of which are busy making various calls to each other in only slightly
predictable orders. What's important is response time, as there are real
live people waiting for things to happen and costing money for each second
of delay - we don't care overmuch about things like CPU loading, we can
always add more computers.

When we ramp up the volume of transactions on the system we will expect that
things will start getting slower. But how to get positive identification of
the bottlenecks so we know where to start fixing things?

Sure we could put instrumentation into every piece of client code round
every remote call to capture and log the time the call took. But there are
sufficiently many applications and sufficiently many remote calls that this
would be something of a nightmare. Sure we could guess where the bottlenecks
are likely to be and only instrument those suspect calls: that will work
fine so long as our guesses are actually right.

(I'm assuming that putting code into the server side to measure how long
particular method calls take would be less helpful, as there will be some
queuing in OmniORB due to the fact that several of the servers have to be
single threaded because of the third party libraries they're using?)

So the question is:

Is there either

(1) already something in the OmniORB code that will instrument the time each
remote invocation takes, or:

(2) any suggestions as to where in the OmniORB code I should insert my own
instrumentation code?

And of course the usual other question:

(3) If the above is nonsense what question should I have asked?

Thanks

Tim Ward
Brett Ward Limited - www.brettward.co.uk