[ltt-dev] UST use case: Tracing QEMU/KVM

Stefan Hajnoczi stefanha at gmail.com
Sun May 23 15:54:42 EDT 2010


Here is feedback from adding UST tracing to QEMU/KVM.  Hopefully this
will be useful to developers and maybe I can learn a more about LTTng
UST from discussing hurdles I encountered.

The architecture of UST looks good: pure userspace tracing support,
tracepoints can be enumerated, enabled, and disabled at runtime.  The
manual at http://lttng.org/files/ust/manual/ust.html is a nice
quickstart although I suspect it only scratches the surface.

One note about the manual: the TP_PROTO() versus TPPROTO() change was
confusing.  Perhaps a note can be added to the manual that ust.git
uses TP_PROTO() but libust 0.4 uses TPPROTO()?

When running the instrumented binary, the listener thread outputs
noisy error messages:
libust[28133/28134]: Error: poll: Interrupted system call (in
multipoll_poll() at ../libustcomm/multipoll.c:84)
libust[28133/28134]: Error: error in multipoll_poll (in
listener_main() at tracectl.c:1015)

Strace shows:
poll([{fd=3, events=POLLIN}], 1, -1)    = ? ERESTART_RESTARTBLOCK (To
be restarted)
restart_syscall(<... resuming interrupted call ...>) = ?
ERESTART_RESTARTBLOCK (To be restarted)

Finally, I had to add #undefs to get QEMU to build after including UST
headers.  Unfortunately the UST headers include headers that pollute
the (macro) namespace.

Any thoughts on these issues?

My patch enabling UST sent to the QEMU mailing list:
http://www.mail-archive.com/kvm@vger.kernel.org/msg34830.html

Stefan




More information about the lttng-dev mailing list