Let be virtual machines that share the host node, where is a privileged management domain (Domain0) that hosts the device drivers. Let denote a special idle domain that ``executes'' on the CPU when there are no other runnable domains (i.e. there is no virtual machine that is not-blocked and not-idle). is the analog to the ``idle-loop'' executed by an OS when there are no other runnable processes.
At any point of time, guest domain can be
in one of the following three states:
As was mentioned in Section 2, in order to avoid the overhead of copying I/O data to/from the guest virtual machine Xen implements the ``page-flipping'' technique, where the memory page containing the I/O data is exchanged with an unused page provided by the guest OS. Thus, in order to account for different I/O related activities in (that ``hosts'' the unmodified device drivers), we observe the memory page exchanges between and . We measure the number of memory page exchanges performed over time interval when is in execution state. We derive the CPU cost (CPU time processing) of these memory page exchanges as . After that, if there are memory page exchanges between and virtual machine then is ``charged'' for of CPU time processing of Domain0. In this way, we can partition the CPU time used by Domain0 for processing the I/O related activities of different VMs sharing the same device driver, and ``charge'' the corresponding virtual machine that caused these I/O activities. Within the monitoring system, we use a time interval of 100 ms to aggregate overall CPU usage across different virtual machines.