[prev in list] [next in list] [prev in thread] [next in thread] 

List:       freedesktop-dbus
Subject:    Re: Performance: (was Re: [Accessibility] Re:
From:       Michael Meeks <michael.meeks () novell ! com>
Date:       2007-12-14 15:49:03
Message-ID: 1197647343.18678.84.camel () localhost ! localdomain
[Download RAW message or body]


On Thu, 2007-12-13 at 12:15 -0500, Havoc Pennington wrote:
> Rob Taylor wrote:
> > The interesting thing here is even when doing no marshalling and with
> > validation disabled, its still at about 2x against ORBit. What other
> > design decisions do you think might be influencing this?
> 
> I would say first, raw sockets are super fast. There just is not a lot 
> of work the kernel is doing; when we write(), we switch into the kernel 
> and I believe basically memcpy() into the read() buffer on the other 
> side.

	Yes; it's odd - both ORBit2 and gconf seem to use writev (according to
strace), and ORBit2 tries hard, but is perhaps less careful about
getting a single block of memory for the write than d-bus.

> If you trace through what happens to send and receive dbus messages, 
> there is quite a bit of code. We have the whole message queue 
> abstraction with DBusConnection, the DBusPendingCall machinery, thread 
> locking, parsing and marshaling messages, and so forth. None of this 
> code is what I would call micro-optimized; there are lots of function 
> calls, lots of abstractions, plenty of malloc().

	We have a fair bit of this in ORBit2 too though of course; and I
de-soptimised much of that as I wrote it. Having said that, we use
alloca a fair bit - wrt. allocating each de-marshaled parameter eg. but
that has it's own cost in complexity.

> Example protocol features that I think are potentially slow:
>   2) strings are used instead of integer IDs for various things, such as
>      object paths and interfaces

	This is true with a vengance for CORBA - an object id is hideously
verbose & complicated.

> If that speculation is right then it will be tough to get close to raw 
> socket performance, since so many of the above decisions are embedded in 
> the API or protocol.

	I thought we were comparing ORBit2 & d-bus, is a raw socket a trivial
ping character back/forth type app ? [ it'd be interesting to know what
the theoretical maximum was for that for sure ].

	HTH,

		Michael.	

-- 
 michael.meeks@novell.com  <><, Pseudo Engineer, itinerant idiot


_______________________________________________
dbus mailing list
dbus@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dbus
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic