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

Fwd: [Xen-devel] How to Stop scheduler


  • To: xen-devel@xxxxxxxxxxxxxxxxxxx
  • From: Pankaj Parakh <me.pankajparakh@xxxxxxxxx>
  • Date: Wed, 11 Nov 2009 17:08:53 +0530
  • Delivery-date: Wed, 11 Nov 2009 03:39:19 -0800
  • Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type:content-transfer-encoding; b=sGSLE4+Lq693AzDc4MZeHY6xv/KXTufLXX6kHfk6QNiuPxToRp8B0/w7EAK2mAb9AQ xspMq58izmVdjFZ2HrRqxTo4pqvD+ENWc71Pxte2eBlZ/0yN18Nm38LydDU8UkAJh5fZ RhA6POEclxYOO+B9tQcTl95eVExQkJwMm4U/8=
  • List-id: Xen developer discussion <xen-devel.lists.xensource.com>

Any answers plzz??


 Also is what schedule_lock in schedlue_data is for ??
 I tried to use it thinking it'll stop further scheduling, but it hangs
 my machine and the function doesnot proceed after that.. is something
 else I have to do to pause scheduling in XEN.

> On Tue, Nov 10, 2009 at 12:18 PM, Pankaj Parakh
> <me.pankajparakh@xxxxxxxxx> wrote:
 How to disable softirq in Xen, if I want that no function should be
 able to raise SCHEDULE_SOFTIRQ, how can I do that??


 > On Thu, Nov 5, 2009 at 3:25 PM, George Dunlap
 > <George.Dunlap@xxxxxxxxxxxxx> wrote:
 >> I assume you mean, once you've paused current(), how do you get into
> >> the scheduler to actually get it off the cpu?
> >>
> >> In Linux, you can call schedule() because each process has its own
> >> kernel stack allocated to it; the stack "remembers" where each process
> >> was in the kernel, so you can return from schedule() at the same place
> >> in the kernel once you're scheduled again.
> >>
> >> Xen only has one stack per cpu, so it cannot keep track of where *in
> >> the hypervisor* a vcpu is that gets scheduled out.  Therefore, you
> >> can't call schedule() directly, as it would throw away the stack.  You
> >> must raise SCHEDULE_SOFTIRQ on the current cpu, and then return back
> >> to the guest.  On the way out, the softirq will call schedule() and
> >> switch to another vcpu if necessary.  (It will only schedule the idle
> >> process if there are no runnable vcpus.)
> >>
> >> grep for SCHEDULE_SOFTIRQ to see examples of how this is used in Xen.
> >>
> >>  -George
> >>
> >> On Thu, Nov 5, 2009 at 12:43 AM, Pankaj Parakh
> >> <me.pankajparakh@xxxxxxxxx> wrote:
> >>> How can I schedule idle vcpu voluntarily without using schedule() ??
> >>> Is there any function for it already defined, or do I have to follow
> >>> some steps.. ??
> >>>
> >>> On Wed, Nov 4, 2009 at 5:09 PM, George Dunlap
> >>> <George.Dunlap@xxxxxxxxxxxxx> wrote:
> >>>>
> >>>> On Wed, Nov 4, 2009 at 5:59 AM, Pankaj Parakh 
> >>>> <me.pankajparakh@xxxxxxxxx> wrote:
> >>>> > If I take domain_update_lock for  a domain, what will happen to its
> >>>> > interrupts for IO completions or any other type..??
> >>>> > And will it be scheduled if I hold that lock..??
> >>>>
> >>>> Have you looked at the interrupt delivery / IO completion path, or the
> >>>> scheduler path, to see if those are affected by the
> >>>> domain_update_lock()?
> >>>>
> >>>> Xen is a bit of a twisted web; sometimes you just have to follow a web
> >>>> of logic around to find out what you're looking for; then, once you've
> >>>> come to a conclusion, test it by writing some code.
> >>>>
> >>>> For the scheduling question, you might start with looking at 
> >>>> vcpu_runnable().
> >>>>
> >>>> Peace,
> >>>>  -George
> >>>>
> >>>> >
> >>>> > On Wed, Nov 4, 2009 at 11:08 AM, Pankaj Parakh 
> >>>> > <me.pankajparakh@xxxxxxxxx>
> >>>> > wrote:
> >>>> >>
> >>>> >> So is that means there will be no interrupt loss, and also clock in
> >>>> >> the paused domain will be in right and expected time.. ??
> >>>> >>
> >>>> >> On Wed, Nov 4, 2009 at 12:41 AM, George Dunlap
> >>>> >> <george.dunlap@xxxxxxxxxxxxx> wrote:
> >>>> >> > If you call vcpu_pause(), it atomically increments a counter in the 
> >>>> >> > vcpu
> >>>> >> > struct.  While that counter is non-zero, the vcpu *will not* be
> >>>> >> > scheduled,
> >>>> >> > interrupts or no.  Interrupts will be delivered when it's scheduled
> >>>> >> > again.
> >>>> >> >
> >>>> >> > -George
> >>>> >> >
> >>>> >> > Pankaj Parakh wrote:
> >>>> >> >>
> >>>> >> >>  If I pause a vcpu/domain using those functions, say if a domain's 
> >>>> >> >> I/O
> >>>> >> >> request over then its interrupt will raise and it can restart its
> >>>> >> >> scheduling rite..?? How this interrupts are/ can be queued so that
> >>>> >> >> when the vcpu is in pause state, it should nat change its state and
> >>>> >> >> when it come back to wait state, those interrupt will not be lost..
> >>>> >> >>
> >>>> >> >> On Tue, Nov 3, 2009 at 5:18 PM, George Dunlap
> >>>> >> >> <George.Dunlap@xxxxxxxxxxxxx> wrote:
> >>>> >> >>
> >>>> >> >>>
> >>>> >> >>> Do you mean that you want to stop one specific vcpu / domain from
> >>>> >> >>> being scheduled?
> >>>> >> >>>
> >>>> >> >>> If so, you're looking for the following functions:
> >>>> >> >>> vcpu_pause(), vcpu_unpause()
> >>>> >> >>> domain_pause(), domain_unpause().
> >>>> >> >>>
> >>>> >> >>> They're defined in xen/common/domain.c.
> >>>> >> >>>
> >>>> >> >>>  -George
> >>>> >> >>>
> >>>> >> >>>
> >>>> >> >>> On Mon, Nov 2, 2009 at 9:02 PM, Pankaj Parakh
> >>>> >> >>> <me.pankajparakh@xxxxxxxxx>
> >>>> >> >>> wrote:
> >>>> >> >>>
> >>>> >> >>>>
> >>>> >> >>>> Hi All,
> >>>> >> >>>>
> >>>> >> >>>> I am working on a project wherein I wanted to stop the scheduling
> >>>> >> >>>> activity in hypervisor through 'generic' part of scheduler, I 
> >>>> >> >>>> have
> >>>> >> >>>> lil
> >>>> >> >>>> confusion as to what all things I need to mask/stop for disabling
> >>>> >> >>>> hypervisor to schedule any vcpu untill I want.
> >>>> >> >>>>
> >>>> >> >>>> Issues which I can think are about I/O waits or Zombie VCPUs. 
> >>>> >> >>>> But how
> >>>> >> >>>> to tackle them... I dont know..
> >>>> >> >>>>
> >>>> >> >>>> I wanted to know what all responsibility the generic scheduler 
> >>>> >> >>>> holds
> >>>> >> >>>> in hypervisor,
> >>>> >> >>>>
> >>>> >> >>>> Any type of info or pointer can be useful.
> >>>> >> >>>>
> >>>> >> >>>> Thanks
> >>>> >> >>>> Pankaj Parakh
> >>>> >> >>>>
> >>>> >> >>>> _______________________________________________
> >>>> >> >>>> Xen-devel mailing list
> >>>> >> >>>> Xen-devel@xxxxxxxxxxxxxxxxxxx
> >>>> >> >>>> http://lists.xensource.com/xen-devel
> >>>> >> >>>>
> >>>> >> >>>>
> >>>> >> >>
> >>>> >> >>
> >>>> >> >>
> >>>> >> >>
> >>>> >> >
> >>>> >> >
> >>>> >>
> >>>> >>
> >>>> >>
> >>>> >> --
> >>>> >> Pankaj Parakh
> >>>> >
> >>>> >
> >>>> >
> >>>> > --
> >>>> > Pankaj Parakh
> >>>> >
> >>>> > _______________________________________________
> >>>> > Xen-devel mailing list
> >>>> > Xen-devel@xxxxxxxxxxxxxxxxxxx
> >>>> > http://lists.xensource.com/xen-devel
> >>>> >
> >>>> >
> >>>
> >>>
> >>>
> >>> --
> >>> Pankaj Parakh
> >>>
> >>> _______________________________________________
> >>> Xen-devel mailing list
> >>> Xen-devel@xxxxxxxxxxxxxxxxxxx
> >>> http://lists.xensource.com/xen-devel
> >>>
> >>
> >
> >
> >
> > --
> > Pankaj Parakh
> >
>
>
>
> --
> Pankaj Parakh



--
Pankaj Parakh



-- 
Pankaj Parakh

_______________________________________________
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®.