On Sun, 2010-10-31 at 05:09 +0000, walmart wrote:
> Hi, all:
> In the 64 bit Xen 4.0.1, compiled from the source code,
> under xen/common/schedule.c,
> ret_t do_sched_op(int cmd, XEN_GUEST_HANDLE(void) arg).
> Does anyone know how this function got called?
It is an entry point for a hypercall so it will potentially be called
from any guest OS. See xen/arch/x86/*/entry.S for the hypercall table
entry which points at this function. In the pvops Linux kernel see the
callers of HYPERVISOR_sched_op() for the users of this hypercall.
There are some other callers in the HVM code called in response to
certain events which lead to scheduling type decisions, such as the
guest executing a hlt instruction.
> I raise this question cause I noticed in the default credit based
> scheduler, if I only configure one busy cpu to run(pinned to one
> specific core, it is also the only VCPU on that core). if I run a busy
> loop, I would only get 95% of the utilization.
> I add some printk into the code and found that:
> every 1s, the do_sched_op() would exec, and the cmd is schedop_block.
> which would block the vcpu for 50 ms. (50 ms / 1 s = 5%), causing the
> vcpu can only get 95% of the resources.
> Does anyone know the reason for this?
> Or, does anyone know how and where this do_sched_op() function get
> called? I did a grep and all I can found is the compat_do_sched_op,
> which is not called at all..
> I would highly appreciate your help!
> Thanks very much!
> Xen-devel mailing list
Xen-devel mailing list