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

Re: [Xen-devel] How to Stop scheduler


  • To: George Dunlap <George.Dunlap@xxxxxxxxxxxxx>
  • From: Pankaj Parakh <me.pankajparakh@xxxxxxxxx>
  • Date: Thu, 5 Nov 2009 23:36:57 +0530
  • Cc: "xen-devel@xxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxx>
  • Delivery-date: Thu, 05 Nov 2009 10:07:22 -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 :cc:content-type:content-transfer-encoding; b=HiCemaw6GUtFSGeBfOnEN+slWNcar/c8FgE5OV5A6GJQcX0fLNXhxHny3oEO0XSQq2 2joGKoOZugy5Ayjh3z7LQgqjYN6lsmIYKO3yKFuzgBTP6PVQOj8hILQKz/2A+Kn4E8/D CCEsX+YZ2UobwNaUfdrH2v2xHKur9eNHHlUdU=
  • List-id: Xen developer discussion <xen-devel.lists.xensource.com>

Yes George,

I'll do that as soon as it is in right shape, there is still some
problems there to which I am unable to give time to.


On Thu, Nov 5, 2009 at 3:57 PM, George Dunlap
<George.Dunlap@xxxxxxxxxxxxx> wrote:
>
> BTW, for the benefit of posterity, would you post a patch with the
> working sched_rr.c to the list, so that if in the future someone tries
> to use the code from that book, we can point them to it?
>
> Thanks,
>  -George
>
> On Thu, Nov 5, 2009 at 9:55 AM, 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

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