This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
Home Products Support Community News


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

To: Ian Campbell <Ian.Campbell@xxxxxxxxxx>
Subject: Re: [Xen-devel] Anyone know how and where the do_sched_op(SCHEDOP_BLOCK) got called? -- Sam
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
Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:mime-version:sender:received :in-reply-to:references:from:date:x-google-sender-auth:message-id :subject:to:cc:content-type; bh=bPLXuDfDL7GkZqW5fmT4T2GDufRkRJUDxDuwnVM/C8A=; b=K6NlTLDZCHWzMBB1e5vw0YQAjsGzz/oOlLFQssEaFmFvOihjw/ueF3cz2ejojdqM14 FDP49wvYtapALdVUe7ydDqye0imGnvRvB84ZV7a5HQ+IruUGXBnagV92aM02ioyxBC8f 5Ci+QGdFuCWN4WMA6Pnf6E4WXRPn03S602SzM=
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=
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <1288599503.13466.4.camel@xxxxxxxxxxxxxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <AANLkTinfGwgKy0_Y1EBMPJ6qwvHRAziCaACX6zUJpdi8@xxxxxxxxxxxxxx> <1288599503.13466.4.camel@xxxxxxxxxxxxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
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:
static void xen_safe_halt(void)
     /* Blocking includes an implicit local_irq_enable(). */
     if (HYPERVISOR_sched_op(SCHEDOP_block, NULL) != 0)

static inline int
     int rc = HYPERVISOR_sched_op(SCHEDOP_block, NULL);
     return rc;

Time-xen.c (arch\x86\kernel):
void xen_safe_halt(void)
     /* Blocking includes an implicit local_irq_enable(). */

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)

Irq.c (arch\x86\xen):
static void xen_halt(void)
     if (irqs_disabled())
          HYPERVISOR_vcpu_op(VCPUOP_down, smp_processor_id(), NULL);
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!



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

<Prev in Thread] Current Thread [Next in Thread>