Skip to main content

[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


Back to the top