I&#39;ve worked on several projects that use D-Bus (system daemon, if you care) for commercial embedded consumer electronics. Throughput hasn&#39;t really been a problem, but we have tended to use it for control/business-logic messaging, not as a high-throughput data path.<br>
<br>--Matt<br><br><div class="gmail_quote">On Mon, Mar 2, 2009 at 9:48 AM, Schmottlach, Glenn <span dir="ltr">&lt;<a href="mailto:glenn.schmottlach@harman.com">glenn.schmottlach@harman.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
I disabled validation in the D-Bus library by hard-coding<br>
<br>
mode = DBUS_VALIDATION_MODE_WE_TRUST_THIS_DATA_ABSOLUTELY;<br>
<br>
in dbus-message.c. From what Havoc has said (at least in the past), this<br>
*should* disable the bulk of the validation logic. Likewise, I&#39;ve turned<br>
off API checks and assertions. For my simple test case on the Beagle<br>
Board, the above actions save me roughly 2 msec in round-trip time. At<br>
10 msec per call (down from 12 msec), it&#39;s still not the number I was<br>
looking for. In the embedded world, that&#39;s enough to make most<br>
developers cringe . . . even more so on a &quot;high-end&quot; embedded processor<br>
like the TI OMAP 3530 (500 MHz). Perhaps this overhead isn&#39;t even<br>
noticed on a multi-core, 2+ GHz Pentium where D-Bus was originally<br>
intended to be used (since it is an application bus). I was hoping that<br>
with a little tweaking and some consideration for performance improving<br>
measures, there might be an opportunity to leverage it more effectively<br>
in the embedded space. Certainly, with the rise of connected embedded<br>
Linux devices, this could be a huge market that ultimately eclipses the<br>
desktop.<br>
<br>
Perhaps the mailing-list lurkers out there already using D-Bus on an<br>
embedded platform could chime in with their experiences, offer any<br>
optimization techniques, or provide real-world performance statistics on<br>
their platforms. I wonder if I am alone in seeing these rather dismal<br>
round-trip access times.<br>
<div class="im"><br>
<br>
<br>
<br>
-----Original Message-----<br>
From: <a href="mailto:dbus-bounces@lists.freedesktop.org">dbus-bounces@lists.freedesktop.org</a><br>
[mailto:<a href="mailto:dbus-bounces@lists.freedesktop.org">dbus-bounces@lists.freedesktop.org</a>] On Behalf Of Havoc<br>
Pennington<br>
Sent: Sunday, March 01, 2009 11:39 PM<br>
To: Thiago Macieira<br>
Cc: <a href="mailto:dbus@lists.freedesktop.org">dbus@lists.freedesktop.org</a><br>
</div><div class="im">Subject: Re: DBus-Daemon Optimizations<br>
<br>
</div><div><div></div><div class="h5">Hi,<br>
<br>
On Sun, Mar 1, 2009 at 4:03 PM, Thiago Macieira &lt;<a href="mailto:thiago@kde.org">thiago@kde.org</a>&gt; wrote:<br>
&gt; You&#39;re correct: the daemon unmarshalls, validates and remarshalls the<br>
&gt; messages passing through it. If the incoming message is invalid in any<br>
&gt; shape or form, it will disconnect the sender and discard the message.<br>
&gt;<br>
<br>
I&#39;m pretty sure that isn&#39;t *quite* true; in particular I&#39;m not sure<br>
it&#39;s right to say it unmarshals and remarshals. It should be getting a<br>
DBusMessage object off the wire and then writing the same DBusMessage<br>
object to the recipient. It&#39;s true that it does a fair bit of<br>
validation in converting the incoming bytes to a DBusMessage, but<br>
DBusMessage does store the bytes in marshaled form, so unless<br>
something is broken there should not be an unmarshal/remarshal.<br>
<br>
There is some modification of the message (adding more headers, such<br>
as sender) so that could have some cost. One possible optimization is<br>
to have the sender client include the sender header to begin with and<br>
then the bus would just check it. But, doubtful that&#39;s a big win.<br>
<br>
Bottom line, would need to start with some profiling. Pretty obvious I<br>
guess.<br>
<br>
Best I remember, the validation and marshaling code just isn&#39;t that<br>
fast. I remember more a constant-factor distributed-bloat problem than<br>
a fundamental design problem like extra copies. But, if nobody has<br>
profiled lately, for all we know some really bad f-up has been<br>
introduced in the last few years accidentally. In the past, there have<br>
been things like reparsing /etc/group on every message... you never<br>
know until you profile.<br>
<br>
Havoc<br>
_______________________________________________<br>
dbus mailing list<br>
<a href="mailto:dbus@lists.freedesktop.org">dbus@lists.freedesktop.org</a><br>
<a href="http://lists.freedesktop.org/mailman/listinfo/dbus" target="_blank">http://lists.freedesktop.org/mailman/listinfo/dbus</a><br>
<br>
_______________________________________________<br>
dbus mailing list<br>
<a href="mailto:dbus@lists.freedesktop.org">dbus@lists.freedesktop.org</a><br>
<a href="http://lists.freedesktop.org/mailman/listinfo/dbus" target="_blank">http://lists.freedesktop.org/mailman/listinfo/dbus</a><br>
</div></div></blockquote></div><br>