[omniORB] omniORB performance

David Riddoch djr@uk.research.att.com
Wed, 16 Feb 2000 13:06:28 +0000 (GMT)


On Wed, 16 Feb 2000, Zeljko Rajic wrote:

> Armin Gerritsen wrote:
> 
> > "The omniORB server is unable to process requests sent in parallel over a
> > single connection, thus it serializes requests from multi-threaded clienst
> > that send requests over a single connection."
> > But if I remember a post in this list three weeks or so agao,  I believe
> > that is better solved now.

Actually the mod I make a while ago improved the situation when a heavily
multi-threaded omniORB client talked to a server (omniORB or otherwise).
The mod ensured that all available connections were fully utilised.  This
doesn't help if a client other than omniORB is connecting -- see below.


> Well, Sai-Lai Lo wrote this in an older mailing to this list:
> 
> > If during the time the thread holds exclusive access to the network
> > connection another thread invokes on an object (which may or may not be the
> > same object) that is in the same remote address space as the previous one,
> > a new network connection will be created on-the-fly and will be used
> > for delivering the new request. 
> 
> So I guess omniORB does NO multiplexing of requests over one connection.
> It opens a new connection when necessary.

Absolutely right.  The problem however is that if another ORB talks to an
omniORB server, then it is likely that its requests will be multiplexed
over a single connection (eg VisiBroker does this), and omniORB will
process them serially.


> However, I always thought there is quite a big overhead for creating a
> new (socket) connection and that is more efficient to multiplex the
> request onto one connection instead of creating new connections. But it
> seems I am wrong !!

I guess that depends on how many requests you are amortising the cost
over.  omniORB only creates a new connection if there are no free
connections available at the time.


David