[omniORB] Performance comparison of OmniEvents and OmniNotifiy

Alex Tingle alex.tingle at bronermetals.com
Tue Mar 1 17:21:41 GMT 2005


Hi Chris,

On 1 Mar 2005, at 16:44, Christopher Petrilli wrote:
> Well, the background is this, and perhaps it will help understand my
> approach.  I was originally using Elvin (http://www.mantara.com/),
> which has an amazingly simple binding to most languages, and is a
> breeze to use.  However, I was using CORBA for all the other services.
>  My goal was to unify on one "architecture" and use CORBA Events or
> Notification framework.  I'm wondering if, however, that's too much
> complexity?

Surely you can't get much simpler than the OMG Event Service? If 
anything it's a bit too simple for the real world.

>> I've done some limited comparison testing between the two. As I 
>> recall,
>> the latency is about the same for isolated individual events. As the
>> volume of events increases, omniEvents starts to pull ahead, but
>> omniNotify's performance is still good.
>
> In this case, I would need some of the capabilities of omniNotify, as
> I'd like to be able to choose which events I see, and perhaps only if
> they meet certain requirements.  THis is something that can be done
> easily in the constraint language in Elvin.

As I mentioned to Fred Prin earlier, omniEvents can filter by CORBA 
type. If you need a constraint language, then you have to use something 
else. Surely though, running a complicated set of constraints against 
each message is going to kill performance in a high volume environment?

>> I think this is to be expected - omniEvents is optimised for high
>> volumes. It starts to batch-up events as the volume increases.
>
> Does it do any form of batching on the edges of the service? In other
> words, does it push/pull 1 event at  a time from the supplier and
> consumers, or does it actually move batches?  The spec seems to imply
> it must be a one at a time method.

The 'batching' to which I refer is entirely within the event channel. 
The specification forces delivery to be one-at-a-time at the edge. 
However I'm free to use any optimisation I like between federated event 
channels. As I said, I plan to use multicast.

Of course you could implement batching even at the edges, but then you 
wouldn't be using the OMG Event Service - you'd be using a proprietary 
interface. I don't think that's necessary - just have omniEvents 
running on each client machine. All the network traffic can then be 
optimised, but the interface you see is still standards compliant. The 
one-at-a-time delivery then always happens over the local loopback (or 
even through a pipe - on Unix).

I prefer this solution to a batching interface, because it keeps the 
complexity in the middleware, where it belongs. The client code remains 
as simple as possible.

> I would love to hear your take on omniEvents v. Elvin?

I'll read up on it.

-Alex Tingle

-- 
:: alex tingle
:: http://www.firetree.net/consulting/
:: alex.tingle AT firetree.net  +44-7901-552763




More information about the omniORB-list mailing list