Bustle – someone's favourite D-Bus profiler
Bustle is a better
dbus-monitor. It records and draws sequence diagrams of
D-Bus activity, showing signal emissions,
method calls and their corresponding returns, with timestamps for each
individual event and the duration of each method call. This can help you check
for unwanted D-Bus traffic, and pinpoint why your D-Bus-based application isn't
performing as well as you like. It also provides statistics like signal
frequencies and average method call times.
You can also get the latest source from Hackage.
With luck, Bustle itself should be self-explanatory: run it, click the button to record some D-Bus traffic, explore it, save or export the log.
If you want to record traffic without running the UI (maybe on an embedded platform which doesn't have Gtk+ and/or a Haskell compiler), you can use the stand-alone logger, which is just a C program:
You can then open
logfile.bustle in Bustle.
You can also get some ASCII-art version of the statistics shown in the UI:
bustle --count logfile.bustle bustle --time logfile.bustle
Logging System Bus Traffic
If you want to log all system bus traffic, you need to edit
/etc/dbus/system.conf to enable eavesdropping, and then remove the include of
/etc/dbus-1/system.conf.d which seems to re-enable strictness. Then you can run
the stand-alone logger against the system bus:
bustle-pcap --system system-log.bustle
Please remember to undo these changes when you're done.
You will need a C compiler, a Haskell compiler and many libraries. Try:
cabal sandbox init cabal install alex happy gtk2hs-buildtools cabal install
To just build the C-only
bustle-pcap logger, run
In new code, try to follow this Haskell style guide.
Bustle is written and maintained by Will Thompson (originally courtesy of Collabora Ltd.), with contributions by Alex Merry, Arnaud Bonatti, Chris Lamb, Cosimo Alfarano, Dafydd Harries, Lennart Poettering, Marc Kleine-Budde, Philip Withnall, Sergei Trofimovich, and Αποστολίδου Χρυσαφή. It was originally inspired by a similar tool by Alban Crequy.