On Mon, Jun 28, 2010 at 4:59 AM, Yuyang Du <duyuyang@xxxxxxxxx> wrote:
> Hi,
>
> By xentrace, I saw there are many offline states in VCPU scheduling, more in
> HVMs than PV kernels. The comments say that offline means the VCPU is not
> runnable but not blocked (like hotplug and pauses by the system administrator
> or for critical sections in the hypervisor).
>
> Can anyone explain it to me what are the circumstances except for hotplug and
> pauses by the system administrator? And what are the critical sections in the
> hypervisor?
Essentially, offline means "Not runnable for any reason other than the
guest voluntarily blocking" (either with the SCHED_block hypercall or
executing the HLT instruction).
The main reason for HVM vcpus going offline is to do QEMU-related I/O:
the guest vcpu executes the PIO or MMIO instruction, it traps to Xen,
Xen decides to pass it on to QEMU. So it pauses the vcpu, and sends
info about the instruction to QEMU. QEMU in dom0 wakes up, handles
the event, and completes the I/O, making the vcpu runnable again.
When the vcpu runs again, Xen moves the IP forward and does whatever
is appropriate to the registers (e.g., fills them with the value of
the read supplied by QEMU).
If you use xenalyze (http://xenbits.xensource.com/ext/xenalyze.hg), it
will give you a break-down of exactly how much time is spent per vcpu
in running, runnable, blocked, and offline states. It will also tell
you how much time is spent handling MMIO and PIO per vcpu. The time
spent in offline state for HVM domains should closely correlate to the
time offline.
-George
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|