Thread (30 messages) 30 messages, 9 authors, 2012-08-21

Re: Re: [Qemu-devel] [RFC PATCH 0/6] virtio-trace: Support virtio-trace

From: Blue Swirl <hidden>
Date: 2012-07-27 18:59:13
Also in: lkml, qemu-devel

On Wed, Jul 25, 2012 at 8:15 AM, Masami Hiramatsu
[off-list ref] wrote:
(2012/07/25 5:26), Blue Swirl wrote:>
quoted
quoted
The following patch set provides a low-overhead system for collecting kernel
tracing data of guests by a host in a virtualization environment.

A guest OS generally shares some devices with other guests or a host, so
reasons of any problems occurring in a guest may be from other guests or a
host.
Then, to collect some tracing data of a number of guests and a host is needed
when some problems occur in a virtualization environment. One of methods to
realize that is to collect tracing data of guests in a host. To do this,
network
is generally used. However, high load will be taken to applications on guests
using network I/O because there are many network stack layers. Therefore,
a communication method for collecting the data without using network is
needed.
I implemented something similar earlier by passing trace data from
OpenBIOS to QEMU using the firmware configuration device. The data
format was the same as QEMU used for simpletrace event structure
instead of ftrace. I didn't commit it because of a few problems.
Sounds interesting :)
I guess you traced BIOS events, right?
Yes, I converted a few DPRINTFs to tracepoints as a proof of concept.
quoted
I'm not familiar with ftrace, is it possible to trace two guest
applications (BIOS and kernel) at the same time?
Since ftrace itself is a tracing feature in the linux kernel, it
can trace two or more applications (processes) if those run on linux
kernel. However, I think OpenBIOS runs *under* the guest kernel.
If so, ftrace currently can't trace OpenBIOS from guest side.
No, OpenBIOS boots the machine and then passes control to boot loader
and that to kernel. The kernel will make a few calls to OpenBIOS at
start but not later. OpenBIOS is used by QEMU as Sparc and PowerPC
BIOS.
I think it may need another enhancement on both OpenBIOS and linux
kernel to trace BIOS event from linux kernel.
Ideally both OpenBIOS and Linux should be able to feed trace events
back to QEMU independently.
quoted
Or could this be
handled by opening two different virtio-serial pipes, one for BIOS and
the other for the kernel?
Of course, virtio-serial itself can open multiple channels, thus, if
OpenBIOS can handle virtio, it can pass trace data via another
channel.
Currently OpenBIOS probes the PCI bus and identifies virtio devices
but ignores them, adding virtio-serial support shouldn't be too hard.
There's a time window between CPU boot and PCI probe when the the
device will not be available though.
quoted
In my version, the tracepoint ID would have been used to demultiplex
QEMU tracepoints from BIOS tracepoints, but something like separate ID
spaces would have been better.
I guess your feature notifies events to QEMU and QEMU records that in
their own buffer. Therefore it must have different tracepoint IDs.
On the other hand, with this feature, QEMU just passes trace-data to
host-side pipe. Since outer tracing tool separately collects trace
data, we don't need to demultiplex the data.

Perhaps, in the analyzing phase (after tracing), we have to mix events
again. At that time, we'll add some guest-ID for each event-ID, but
it can be done offline.
Yes, the multiplexing/demultiplexing is only needed in my version
because the feeds are not independent.
Best Regards,

--
Masami HIRAMATSU
Software Platform Research Dept. Linux Technology Center
Hitachi, Ltd., Yokohama Research Laboratory
E-mail: masami.hiramatsu.pt@hitachi.com
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help