[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
[tracecompass-dev] New feature: Virtual Machine Analysis
|
Hello all,
I want to introduce a new feature I will start pushing soon: the Virtual
Machine Analysis, developed by Mohamad Gebai as his master's project at
Dorsal.
I have opened the following feature request (bug) to discuss the feature [1]
The full patch series has a few pre-requisites patch series:
* The Event Criterion concept series by Alexandre Montplaisir, discussed
in bugzilla, needed by the Virtual Machine unit tests [2]. Series starts
here [3]
* The event request coalescing series by Bernd Huffman, discussed in the
thread "Event requets precendence" on this mailing list, needed to make
sure of the consistency and correctness of the analysis. Series starts
here [4]
* Description of the feature:
The Virtual Machine Analysis correlates the traces from a VM host and
guest machines. Typically, kernel and/or UST traces are taken from all
hosts and guests and the traces are put in an experiment, synchronized
(somehow, either with TCP events or hypervisor-specific way), then the
analysis takes place.
The analysis tracks the state of each virtual CPU, which can be either
running guest code, running code from the hypervisor, or not running at
all on the host machine.
This information from the virtual CPU is then correlated with that from
that of the LTTng Kernel Analysis to see the real status of a thread (it
can be running from the guest's point of view, but actually preempted on
the host machine). The first view that will be pushed shows the status
of virtual CPUs and virtual threads.
* Implementation details:
Changes to the Lttng Kernel Analysis: Some methods have been added to
this analysis, so that instead of directly using its state system (that
would require the Virtual Machine Analysis to know about the internal
structure of the state system), we can query the analysis and it will
return its data. Those methods can also be reused by views and other
analysis to retrieve analysis-specific data.
Hypervisor models: Any hypervisor (Qemu/KVM, VirtualBox, LXC, vmware,
etc) will share some concepts, like virtual CPUs, virtual machines,
hypervizor-mode vs running, finding out who is a guest on which host,
etc. But how to link trace data to those concept will vary for each. A
generic model has been described with some base classes and interfaces,
but each hypervisor needs to implement it for itself.
QEMU/KVM implementation of the model: The hypervisor used to develop
this analysis is Qemu, with KVM. KVM being a kernel module, some
tracepoints are integrated in the lttng kernel traces.
The analysis itself: The Virtual Machine Analysis has a state system to
track the status of each virtual CPU. It also depends on each machine's
Lttng Kernel Analysis. Some methods of the analysis use data from both
these analysis and return the required information.
Unit Tests: The analysis is unit tested with stub traces.
Virtual CPU View: A first view will be introduced that displays each
virtual machine on a host, the status of its Virtual CPUs and the
correlated status of its threads.
Documentation: of course!
As I push patches, they will be available under the "virtual machine"
topic [5]. In the meantime, the not split development branch is
available here [6].
[1] https://bugs.eclipse.org/bugs/show_bug.cgi?id=452581
[2] https://bugs.eclipse.org/bugs/show_bug.cgi?id=451411
[3] https://git.eclipse.org/r/#/c/36131/
[4] https://git.eclipse.org/r/#/c/35965/
[5]
https://git.eclipse.org/r/#/q/status:open+project:tracecompass/org.eclipse.tracecompass+branch:master+topic:%22virtual+machine%22,n,z
[6]
http://git.dorsal.polymtl.ca/~gbastien?p=org.eclipse.tracecompass.git;a=shortlog;h=refs/heads/vm_analysis
Question: Where shall I put it? In the lttng.kernel.* plugins? Knowing
that some hypervisors might use UST traces or other trace types to
implement the model... Or in new plugins [lttng|tmf].analysis.vm.*?
Thanks,
Geneviève