Local communication



Hi, 

I'm currently searching for a CORBA ORB for an embedded project, and
ORBit2 seems not the worst choice to me, especially as it supports C.

ORBit2 is said to be optimized for local use, which is good for my
design. It has several parts which are normally local but can, in some
cases, be on another machine. However, I was wondering about the
performance for purely local calls, so I wrote a little testcase which
defines an object with only one method (print out one character to
stdout) which is called from a client in a loop. I compared the
per-call-times with a normal function call and found it to be about 300
times slower; compared with a "transfer data over named pipe" testcase
there is still a factor of 15 between the ORBit variant and the native
one. 

I'm wondering where this huge differences come from. I had expected
that, when the ORB notices that an object is local, it tries to do the
IOP communication as fast as possible (shared memory?). Having a short
look into the source it seems like it uses Unix Domain Sockets via linc
for local communication. 

My question now is: where does this difference come from? Can it be
completely explained by the fact that ORBit2 does things I have not
thought of in my stupid test cases (like locking)? Shouldn't Unix Domain
Sockets be implemented by recent kernels in a way to be pretty fast? Or
is it just the overhead by using the IOP vs. just a call? Would a IOP
implemtation based on shared memory be faster, or would it be a waste of
time?  

I'm aware of the fact that it is surely not the best idea to use CORBA
for non-IPC calls; the argument here is that it will probably be
difficult enough to teach the people who shall write the code how to use
a C based object model (it is generally difficult to teach embedded
people into thinking in well designed software patterns instead of bit
banging). It will probably be not easier to teach them to learn two
object models, one for non-IPC and one for IPC calls. 

I hope that some of you ORBit2 gurus can give me some hints... :-) 

Robert 
-- 
 Dipl.-Ing. Robert Schwebel | http://www.pengutronix.de
 Pengutronix - Linux Solutions for Science and Industry
   Handelsregister:  Amtsgericht Hildesheim, HRA 2686
     Hornemannstraße 12,  31137 Hildesheim, Germany
    Phone: +49-5121-28619-0 |  Fax: +49-5121-28619-4


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]