Re: Orbit Performance Questions
- From: Michael Meeks <michael ximian com>
- To: anil kumar <anilk cdotd ernet in>
- Cc: orbit-list gnome org
- Subject: Re: Orbit Performance Questions
- Date: 31 Dec 2001 10:36:51 +0000
Hi Anil,
On Fri, 2001-12-28 at 13:54, anil kumar wrote:
> I am new to ORBIT and CORBA, right now i am looking at the
> performance of ORBIT so that i can use it for Real Time
> Software Development. We are also planning to put
> ORB code into Linux Kernel also if some performance issues
> come(So we need Open Source ORB ).Some ORB i have found
> from Internet are ORBIT,MICO,TAO.
Sure.
> I have some basic doubt how communication takes
> place when the client and server both are running on the same
> machine.
Well - that is moderately pluggable ;-) if you have some brilliant plan
for how to do this, it should be easy to plug a new approach in - after
all in Kernel land you have more possibilities.
Essentialy there are two approaches - if we are in-proccess we invoke
the C method via a direct function pointer cast from the vtable - if it
is non NULL doh - I'll just paste the stub. This is all for ORBit2 BTW.
ORBit1 uses a somewhat more bloated and to my mind inferior approach.
Bonobo_Canvas_ArtUTA *
Bonobo_Canvas_Component_update(Bonobo_Canvas_Component _obj,
const Bonobo_Canvas_State * state,
const Bonobo_Canvas_affine aff,
const Bonobo_Canvas_SVP * clip_path,
const CORBA_long flags, CORBA_double * x1,
CORBA_double * y1, CORBA_double * x2,
CORBA_double * y2, CORBA_Environment * ev)
{
Bonobo_Canvas_ArtUTA *_ORBIT_retval;
#ifndef ORBIT_STUB_DEBUG_LOCAL
if (ORBIT_STUB_IsBypass(_obj, Bonobo_Canvas_Component__classid)) {
ORBIT_STUB_PreCall(_obj);
_ORBIT_retval =
((POA_Bonobo_Canvas_Component__epv *)
ORBIT_STUB_GetEpv(_obj,
Bonobo_Canvas_Component__classid))->
update(ORBIT_STUB_GetServant(_obj), state, aff, clip_path, flags, x1,
y1, x2, y2, ev);
ORBIT_STUB_PostCall(_obj);
} else
#endif /* ORBIT_STUB_DEBUG_LOCAL */
{ /* remote marshal */
gpointer _args[] = {
(gpointer) state, (gpointer) aff, (gpointer) clip_path,
(gpointer) & flags, &x1, &y1, &x2, &y2
};
ORBit_small_invoke_stub(_obj,
&Bonobo_Canvas_Component__iinterface.methods.
_buffer[0], &_ORBIT_retval, _args, NULL, ev);
}
return _ORBIT_retval;
}
So you see we can pass it straight off through the Entry Point Vector
(epv - a sort of vtable ) to the method - OR
we push the args into a normalized form [ defined in
interface-indirection.gnumeric ] and call the generic
'ORBit_small_invoke_stub' method. If this is called in-proc then these
arguments [ in the standard form ] are passed to the pluggable 'Skel'
code for that object / interface. This is to allow trivial cross
language method invocation - you could plug a marshaler there for the
client side I think. Otherwise if it is out of proc the code genericaly
marshals the arguments to the Common Data Representation (CDR) AFAIR;
see orbit-small.c.
> a: Whether the data is converted to the XDR format or not?
XDR - no idea, it is always converted to IIOP in the remote case, the
in-proc case is rather different.
> b: What IPC mechanism ORBIT uses for communication?
Fast Unix Domain Sockets on the same machine, otherwise we can use
IPv6/IPv4 sockets / IRDA etc. + SSL ( in theory ) so ... a number of IPC
mechanisms.
> c: How Communication takes place when the Client and Server
> both are running on different machine?
as above really.
> d: Is Corba suited for Real Time Application or not?
Possibly - with the new non-blocking code going into ORBit2 it might
become more suitable; it depends how hard your realtime requirements are
I suppose.
> I am also interested in orbit source code so that
> if some performance bottleneck is found then optimisation
> of code can be done. So , please let me know from which point i
> should start reading code.
You should checkout the 'linc' and 'ORBit2' modules from Gnome CVS [
see http://developer.gnome.org for details ]. Most of the ORB can be
understood by a little reading of:
orbit-small.c, corba-any.c, poa.c, corba-object.c all in
ORBit2/src/orb/orb-core & src/orb/poa.
> If anyone of you have some ORBs performance document then
> please send me the URL.
Sadly not - we do however have a set of known optimizations that we
should make sometime - with the bincompat overhead to make them as
ORBit2 stabilizes.
HTH,
Michael.
--
mmeeks@gnu.org <><, Pseudo Engineer, itinerant idiot
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]