thiago at kde.org
Sun Mar 1 13:03:39 PST 2009
Schmottlach, Glenn wrote:
>I was wondering if the reference DBus Daemon actually
>marshals and unmarshals the messages that pass through it. Does the
>daemon attempt to validate each message that passes through it rather
>than just decoding the message header so it knows where to route the
>message? Any insights into easy optimization approaches would be
You're correct: the daemon unmarshalls, validates and remarshalls the
messages passing through it. If the incoming message is invalid in any
shape or form, it will disconnect the sender and discard the message.
The rationale is that an invalid message could cause a crash in the
receiver application(s) or worse. Remember that the same D-Bus daemon is
meant to be used in the system bus, where applications can communicate at
different privilege levels.
Also note that the same check is done once again in the receiver
application, to ensure that the message is valid (and since it's the same
library, it's also the same check). The reason there is that the bus could
be a different library or that could be a peer-to-peer connection.
I don't have your device to test with, so the best I can provide is my own
laptop (Linux, Core2 Duo, 1.6 GHz, not fully idle). In that case, my
performance tests give me 713 round-trip method calls in 500 ms where the
call and the reply contain a 1 kB byte-array payload. That's 701 µs/call
in a dual-core system. If I disable one of the cores, I get 683 calls
under the same conditions.
Note that the test includes marshalling and demarshalling the message
entirely, so there's no caching trick.
For comparison, the same code can do 12158 calls in 500 ms if the data
isn't marshalled and sent to another process (the QtDBus loopback call
Thiago Macieira - thiago (AT) macieira.info - thiago (AT) kde.org
PGP/GPG: 0x6EF45358; fingerprint:
E067 918B B660 DBD1 105C 966C 33F5 F005 6EF4 5358
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Size: 189 bytes
Desc: This is a digitally signed message part.
Url : http://lists.freedesktop.org/archives/dbus/attachments/20090301/e3c56b1c/attachment.pgp
More information about the dbus