This is the mail archive of the
systemtap@sourceware.org
mailing list for the systemtap project.
Re: systemtap probe points for Xen hypervisor
Xenprobes is a low-level mechanism for debugging guest kernels from a
specialized user-space debugging application running on dom0. This is
the same in its essential character to the normal procedure of debugging
one normal user process from another user process (i.e. a debugger). A
guest kernel is equivalent to a user process, and a Xenprobes-based
debugger equivalent to a process debugger based on kernel facilities for
controlling another process. For non-hypervisor virtualization systems
such as Linux's KVM, the same mapping applies even more directly, as
there guest kernels are actual user processes and the debugger controls
them via the host kernel directly (as a process debugger uses the kernel
directly) without the separate steps through the hypervisor layer.
Xenprobes is thus directly analogous to a facility developed for Linux
kernels called "uprobes", which does the same "kprobes-style" breakpoint
insertion techniques for user processes. (kprobes, uprobes, and xenprobes
share an essential machine-specific implementation technique, but they
apply it in three disparate contexts.)
Systemtap is a high level tool that uses uprobes among many other low-level
building blocks in its (still developing) support for instrumentation of
user processes. As other debugging tools are developed they will build on
the same low-level facilities that Systemtap uses. Once such things get to
be well-developed, it will be straightforward to adapt them to similar
low-level facilities that operate in different contexts. i.e. things like
xenprobes. It is up those developing Xen and those developing things like
Xenprobes, to integrate the hooks for such facilities, and then support the
facilities and them make available.
Separately, Systemtap supports (now) self-instrumentation by Linux kernels,
using kprobes. You can do that on a dom0 or domU Linux kernel just like
with any other. But that is self-instrumentation, while Xenprobes is
purely about instrumentation from the outside (which is just like
instrumentation of user processes).
Thanks,
Roland