[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