[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] Anyone know how and where the do_sched_op(SCHEDOP_BLOCK) got called? -- Sam


  • To: Ian Campbell <Ian.Campbell@xxxxxxxxxx>
  • From: walmart <vmwalmart@xxxxxxxxx>
  • Date: Tue, 2 Nov 2010 13:16:51 -0500
  • Cc: "xen-devel@xxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxx>
  • Delivery-date: Tue, 02 Nov 2010 11:18:07 -0700
  • Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:sender:in-reply-to:references:from:date :x-google-sender-auth:message-id:subject:to:cc:content-type; b=fgf0hzevZk/b8AmhWpbylpxG5M7JcIjyQLMmKLfgKGdl3dG6XOLS8AUaR3E1fevTmW PnfWP60FfpJgGo8LXWKksyhPnNHjAI6zOcfWrvoz7K9UKi8haiVzHDlL/2Wu3phD6abm 2cuGFdL3yFeHBRBj+ucmdBpCA8hd4A1LhaaQU=
  • List-id: Xen developer discussion <xen-devel.lists.xensource.com>

Hi, Lan:

Thanks for you reply! I appreciate your help very much!  :)

I checked the Linux side of calling the do_sched_op, with parameters
of SCHEDOP_block.

it is called in the following places:
arch/x86/xen/irq.c:
static void xen_safe_halt(void)
{
     /* Blocking includes an implicit local_irq_enable(). */
     if (HYPERVISOR_sched_op(SCHEDOP_block, NULL) != 0)
          BUG();
}

arch/x86/include/mach-xen/asm/hypervisor.h:
static inline int
HYPERVISOR_block(void)
{
     int rc = HYPERVISOR_sched_op(SCHEDOP_block, NULL);
     return rc;
}


Time-xen.c (arch\x86\kernel):
void xen_safe_halt(void)
{
     stop_hz_timer();
     /* Blocking includes an implicit local_irq_enable(). */
     HYPERVISOR_block();
     start_hz_timer();
}


It seems it has something to do with the xen_safe_halt, and
xen_safe_halt is bind with:
static inline void raw_safe_halt(void)
{
     xen_safe_halt();
}

Irq.c (arch\x86\xen):
static void xen_halt(void)
{
     if (irqs_disabled())
          HYPERVISOR_vcpu_op(VCPUOP_down, smp_processor_id(), NULL);
     else
          xen_safe_halt();
}
static const struct pv_irq_ops xen_irq_ops __initdata = {
     .safe_halt = xen_safe_halt,

}


Does anyone know why this is called? why can I only get 95%
utilization with one busy VCPU?

Thanks very much!

best!

Sam

On Mon, Nov 1, 2010 at 3:18 AM, Ian Campbell <Ian.Campbell@xxxxxxxxxx> wrote:
> 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.
>
> Ian.
>
>>
>> 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!
>>
>> best!
>>
>> Sam
>>
>> _______________________________________________
>> Xen-devel mailing list
>> Xen-devel@xxxxxxxxxxxxxxxxxxx
>> http://lists.xensource.com/xen-devel
>
>
>

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.