[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: Tue, 10 Nov 2009 12:35:23 +0530
  • Cc: "xen-devel@xxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxx>
  • Delivery-date: Mon, 09 Nov 2009 23:05:44 -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=WzIDkxJ/17CsIL+HhXsUyRoBxxuXWT5InBU2jW/Lj+Dil8TWhTKrhb0RSCE3nkqonW BSNKs02CFKhq3HGex8QiiR1aOJhxURjhiAOYCWh2YIdJLxNiM1YsUfy1RfOT7FqMHuqG Y/v+0FycrkG//UyiwYu24N094HfLe7SALpUcQ=
  • List-id: Xen developer discussion <xen-devel.lists.xensource.com>

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

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