link to

HP & Open Source

Xenoprof - System-wide profiler for Xen VM

SourceForge Logo


» Overview
» Description
» License
» Download


» Documentation


» Contacts
Content starts here

Project Overview

Xenoprof is a system-wide profiler for Xen virtual machine environments, capable of profiling the Xen virtual machine monitor, multiple Linux guest operating systems, and applications running on them.


  A growing number of users are interested in running their applications on operating systems hosted in Virtual Machine (VM) environments. Users can choose from a number of virtual machine solutions today, including proprietary implementations from VMWare and Microsoft and the open-source implementation Xen.

Users need to study and optimize their application's performance in a virtual machine environment, since it can differ markedly from its performance in a non-virtualized environment because of interactions with the underlying virtual machine monitor (VMM) and other virtual machines. However, suitable tools are not currently available to analyze performance problems in virtual machine environments.

In this project, we provide Xenoprof, a system-wide statistical profiling toolkit implemented for the Xen virtual machine environment. The Xenoprof toolkit supports system-wide coordinated profiling in a Xen environment to obtain the distribution of hardware events such as clock cycles, instruction execution, TLB and cache misses, etc. Xenoprof allows profiling of concurrently executing virtual machines (which includes the operating system and applications running in each virtual machine) and the Xen VMM itself. Xenoprof provides profiling data at the fine granularity of individual processes and routines executing in either the virtual machine or in the Xen VMM. Xenoprof will facilitate a better understanding of the performance characteristics of Xen's mechanisms, optimization of Xen's implementation, and the optimization of applications running on Xen.

Xenoprof is modeled on the OProfile profiling tool available on Linux systems. Xenoprof consists of three components: extensions to the Xen virtual machine environment, an OProfile kernel module adapted to the Xen environment, and OProfile user-level tools adapted to the Xen environment.

Xenoprof is written in C. It works on the x86 version of the Xen virtual machine environment and it supports the profiling of virtual machines running Linux 2.6.


  The Xenoprof code is being released under the GNU General Public License (GPL). This is the same license used by the Xen virtual machine monitor.

Download (for Xen 3.0.3 and later)

  Xenoprof in now included in Xen. You now only need the patch for OProfile user level tools. There is no more patches for the kernel or Xen.

1) OProfile 0.9.1: oprofile-0.9.1-xen-r3.patch.

Add support for system wide profiling in Xen (active and passive modes).

2) OProfile 0.9.2: oprofile-0.9.2-xen-r2.patch.

Add support for passive domain profiling mode. Oprofile 0.9.2 already has Xen support for active domain profiling mode.

3) OProfile 0.9.3: oprofile-0.9.3-xen-r2.patch.

Add support for passive domain profiling mode for Oprofile 0.9.3. It also include support for Xen on IA64 (provided by Isaku Yamahata). This revision (r2) does not require patches to Xen anymore.

4) OProfile 0.9.5: oprofile-0.9.5-xen.patch.

Add support for passive domain profiling mode for Oprofile 0.9.5.

5) Steps

Download OProfile source code from

Untar the file and "cd" to the oprofile directory

Then patch OProfile with the command

  • patch -p1 <  oprofile-0.9.5-xen.patch


Old version (for Xen 3.0.0)

  For Xen 3.0.0,  Xenoprof consisted of four patches: one to Xen, two to Xenolinux (one for Xen Linux sparse tree and one for Xen Linux proper tree), and one to OProfile.

Note that there is no patch available for Xen 3.0.1 and 3.0.2.

Avoid using the old version if you can, since it is not maintained any more. If possible try using the latest version of Xen and Xenoprof.

To apply patches go to the appropriate source directory and run:

  • patch -p2 <  patch_file  (for xen0 and xenU trees)
  • patch -p1 <  pach_file   (for other patches)

Xenoprof version 2.0 patches:

Patch for OProfile version 0.9.1:

  1. oprofile-0.9.1-xen.patch

Apply to OProvile 0.9.1 source tree available from

Patch for Xenolinux (linux 2.6.12 on Xen 3.0.0):

  1. xenoprof-2.0-linux-2.6-sparse.patch

Apply to Linux sparse tree on Xen source tree before generating linux proper trees to ensure modifications are included.

  1. xenoprof-2.0-linux-2.6.12.patch

Apply twice, once to xen0 and once to xenU trees in Xen source tree.

Patch for Xen 3.0.0:

  1.  xenoprof-2.0-xen-3.0.0.patch

Apply to Xen 3.0 source tree



  A brief user guide is available in

The architecture of Xenoprof and initial findings from a performance diagnosis of Xen are described in our paper:

  • Aravind Menon, Jose Renato Santos, Yoshio Turner, G. (John) Janakiraman, Willy Zwaenepoel, Diagnosing Performance Overheads in the Xen Virtual Machine Environment, First ACM/Usenix Conference on Virtual Execution Environments (VEE'05), Chicago, Illinois, June 11-12, 2005.5 [pdf].

Contact Us

  If you have questions, please post your query to the Xen developer mailing list. You can also reach the team through the Xenoprof project page on sourceforge.
Printable version
Privacy statement Using this site means you accept its terms Feedback to
© 2004 Hewlett-Packard Development Company, L.P.