[omniORB] omniorb/omnievents - How do I improve events/sec throughput

Alex Tingle alex.tingle at bronermetals.com
Wed Oct 5 11:21:38 BST 2005


Hi Ian,

Thanks for trying omniEvents. Sorry it's taken a couple of days to get 
back to you. I've been busy.

> Initially with the above setup I was getting a pretty low events/sec 
> rate (<100
> from memory).
>
> The I discovered CYCLE_PERIOD_NS. Knocking this down to 0 got me up to 
> ~1300
> events/sec. All other omniORB/omniEvents configs are as per a default
> installation.

It sounds like you are using a single supplier and consumer. If you use 
lots more, you'll find that you get more events/sec through the system 
when you increase CYCLE_PERIOD_NS.

> But is it sensible to make CYCLE_PERIOD_NS = 0 ? Are there any gotchas 
> looming
> on the horizon if I do this.

It all depends on how many suppliers/consumers you have, and how 
quickly messages need to be delivered. I suggest you experiment. If you 
make CYCLE_PERIOD_NS=0, then performance might be worse in cases where 
lots of suppliers & consumers are communicating on the same channel.

> I also notice that CPU usage is still only running at around 20% 
> usage. I was
> expecting the above to run the CPU flat out.

CPU use will be higher too with a fast cycle. You are using Linux 
aren't you? One user who was on Solaris found that it was much easier 
to soak up 100% CPU on Solaris than it was on Linux (2.4). At the time 
Linux's threading was a bit crude, and unexpected 10ms sleeps were 
keeping the CPU usage down.

> So is there some other omniEvent / omniORB parameter that is 
> throttling my current
> throughput.

omniEvents is not designed to give you maximum bandwidth between two 
stations on a single channel. Instead it's designed to deliver messages 
from many suppliers to many consumer with a certain maximum latency.

The idea behind CYCLE_PERIOD_NS is that you choose how quickly messages 
must be delivered, and you then set CYCLE_PERIOD_NS to achieve that. 
Most applications will have a requirement that says "A must respond to 
B's trigger within Xms". You would then set CYCLE_PERIOD_NS to X/2 (or 
whatever).

-Alex

-- 
:: Let me solve your problems: http://www.firetree.net/consulting/
:: alex.tingle AT firetree.net  +44-7901-552763




More information about the omniORB-list mailing list