[omniORB] Measuring omniorb's footprint. New footprint benchmark.

Dan Kegel dank@kegel.com
Fri, 22 Feb 2002 08:20:52 -0800


Duncan Grisby wrote:
> 
> On Thursday 21 February, Dan Kegel wrote:
> 
> > The benchmark measures how long it takes to do a parallel echo
> > (i.e.
> >   for all servers do
> >      invoke_deferred echo request
> >   for all servers do
> >      collect results )
> > as a function of the number of echo servers running on the
> > computer (both the client and all servers are running locally).
> 
> Perhaps I'm being dim, but I don't see how this benchmark measures
> anything to do with footprint at all. You are measuring how well
> send_deferred() works.

I'm doing both.  The send_deferred() part should be easy compared to
the other part of the benchmark, which is forking N copies of the
echo server.   And there's some evidence for that: the benchmark does
fine, with response time increasing slowly with N, until the system
almost runs out of memory.  At which point response time shoots
above 100ms rather quickly.

> In omniORB, send_deferred() doesn't scale very well at all, since it
> creates a new thread for each deferred request. Almost all the latency
> you are seeing will be in thread switching. Improving deferred sends
> might be a nice thing to do in a future omniORB version, but there has
> never been any demand for it.

Given my 'it measures when you run out of memory' observation above,
do you feel a little better about the benchmark, at least on limited-memory
systems?
 
> Your pipe based server also has the huge advantage that the pipes are
> already opened before you do the "calls". omniORB opens a connection
> to the server on the first invocation. If you do a call to each server
> before the calls that you time, you'll find it goes quite a lot
> faster, since the TCP connections will already be open.

That's a good point.  I should do a version that includes the time
to open a tcp socket in the measurement, that would be much more fair.
 
> Anyway, all of this performance stuff is interesting, but it has
> absolutely nothing to do with memory footprint.

Still think so?  I wish it were true, but corba programs do use
a lot of memory, and simply forking 28 of them does seem to exhaust
all available memory on my 64 MB embedded system.  I'd be overjoyed
to hear that I was building omniorb or the app wrong, and that the
overhead was actually a lot lower...

- Dan