Thanks for the explanations. Some more questions
-------------- Original message -------------- 
From: Mats Petersson <mats@xxxxxxxxxxxxxxxxx> 
> At 21:46 12/07/2007, pak333@xxxxxxxxxxx wrote: 
> >Hi Atsushi 
> > 
> >I am still confused, so let me explain what i think should happen 
> >and understand from you why it may not happen. 
> > 
> >I have 2 cpu intensive VMs and 1 IO intensive VM. My system has 4 
> >physical cpus and 8 virtual cpus. 
> > 
> >Now using default parameters for the credit scheduler, the cpu 
> >intersive vcpu should run for 30 millsec. It does not, it runs for 
> >less (few microsecs). 
> > 
> >You said this could be because of softirq which are raised after a 
> >system call. Can i disable the softirqs. What happens if i do? If i 
> >cannot disable is there a way to see what VM is raising the softirq. 
> >If the cpu-VM raises the softirq it ge
ts preempted or does it 
> >continue to run. How can I montior the softirqs raised by this VM. 
> >Can I tell if the premption is from a softirq or from something else. 
> 
> I don't believe you can "disable" a softirq - you could of course 
> avoid doing the call to "do_softirq", but that is most likely just 
> going to completely remove any scheduling capability at all in the 
> system, making the system "single-tasking". Not a recommended way, in 
> my opinion. 
> 
Agreed
if softirq is indeed a problem, and if a cpu-intensive VM is being preempted because of a softirq, then maybe affintizing the interrupts of dom0 to a pcpu will reduce this preemption. Comments?
> > 
> >Also, if the IO VM requests an IO, it will block and dom0 wakes up 
> >and gets scheduled to run to service the IO. Will it preempt the cpu 
> >intensive VM. If so why? Shouldn't the cpuintensiveV M get its 
> >quantum of time. 
> >Or does the IOVM get higher priority to preempt the cpu intensive 
> >VM. How does the scheduler pick which cpu to run dom0 on ( if all 
> >the vcpus running are cpu intensive)? If there is a mix of cpu-vcpus 
> >and Io-vcpus, which will be the victim 
> 
> 
> The whole idea of having separate queues for IO and CPU intensive VMs 
> (or processes in a normal kernel scenario) is to allow the 
> IO-intensive tasks to avoid waiting for the next time-slot when a 
> CPU-hogging VM/process is running [1]. The normal behaviour for the 
> scheduler is to determine dynamically if the current VM/process is IO 
> or CPU intensive. 
> 
> Unless Dom0 is used for doing some silly CPU-intensive task 
> (calculating PI with a million decimal points or compiling Xen + 
> Linux kernel, for example), it will most likely look to the scheduler 
> like a IO-intensive VM. So it will have the same priority as any 
> other IO-intensive VM (assuming Dom0 has equal scheduler parameters 
> as other guests, which I'm pretty sure is the default behaviour). 
> 
Does dom0 have a higher pritority than any CPU intensive VM
> If, like in your example, there are a number of processors busy with 
> CPU-intensive tasks, and others with IO-intensive tasks, the most 
> likely scenario is that any new IO-request will go be run on a 
> "previously CPU-intensive" CPU - but on the other hand, if you have a 
> lot of IO-intensive processing, there should be some processor(s) 
> that are "asleep" - unless all CPU's are busy running CPU-intensive tasks... 
But will it preempt a CPU intensive vcpu if no cpu is available
> 
> Note that scheduling is a complex subject, and there have been dozens 
> of PhD dissertations written on the subject. 
Yes, but what does the Xen credit scheduler actually do
> 
> [1] The idea being that if we process the IO-request that just 
> completed, we can set up another IO-request, and this will get better 
> IO-throughput than waiting a long time (relatively speaking 30ms is 
> an eternity to the processor). 
Don't understand what you mean here.
> 
> -- 
> Mats 
> > 
> >As you see i have a lot of questions, so please bear with me and 
> >help me understand the scheduling behavior of Xen 
> > 
> >Thanks 
> >Prabha 
> > 
> > 
> > 
> > 
> >-------------- Original message -------------- 
> >From: Atsushi SAKAI 
> > 
> > > Hi Prabha 
> > > 
> > > Please check do_softirq in assembler. 
> > > for x86 
> > > call do_softirq 
> > > is in. 
> > > 
> > > And usually do_softirq is executed at the end of system call. 
> > > 
> > > Thanks 
> > > Atsushi SAKAI 
> > > 
> > > 
> > > 
> > > pak333@xxxxxxxxxxx wrote: 
> > > 
> > > > Thanks for the explanation, i am not sure i und
erstood it correctly. 
> > > > 
> > > > 
> > > > when does softirq get set. So when softirq is set a processor enters the 
> > > scheduler every 3 micro secs? where in the source code is this 
> > handled. please 
> > > could you send me some pointers 
> > > > 
> > > > thanks 
> > > > -Prabha 
> > > > 
> > > > 
> > > > 
> > > > 
> > > > -------------- Or iginal message -------------- 
> > > > From: Atsushi SAKAI 
> > > > 
> > > > > Hi,$B!!(BPrabha 
> > > > > 
> > > > > $B!!(B30msec is the maximum time slice. 
> > > > > And I guess your 3 microsecond is the response after 
> > > > > SCHEDULE_SOFTIRQ is set. 
> > > > > As you know, 
> > > >
; > If SCHEDULE_SOFTIRQ is set, 
> > > > > it waits softirq calls schedule(). (this time interval is 3microsec) 
> > > > > 
> > > > > And I/O intensive has higher priority than CPU intensive. 
> > > > > So I/O intensive job is first dispatched domain in runq. 
> > > > > This is because latency improvement for I/O intensive guest. 
> > > > > 
> > > > > So your behavior is not strange. 
> > > > > 
> > > > > Thanks 
> > > > > Atsushi SAKAI 
> > > > > 
> > > > > 
> > > > > pak333@xxxxxxxxxxx wrote: 
> > > &g 
> >t; > 
> > > > > > Hi 
> > > > > > 
> > > > > > I have noticed that VMs are typically spending 3 microsecs 
> > or less before 
> > > 
they 
> > > > > are being prempted. I thought that the credit schduler time 
> > slice was 30 ms. 
> > > I 
> > > > > have 4 VMs running and they are all cpu intensive except for 
> > 1 (which is IO 
> > > > > intensive) but having a VM spend max 3 micro secs before 
> > being kicked out 
> > > seems 
> > > > > strange. 
> > > > > > 
> > > > > > Is there something else going on that i am not aware of. Is 
> > the time slice 
> > > > > really 30 millisecs? I am using default parameters of the 
> > credit scheduler. 
> > > > > > 
> > > > > > Thanks 
> > > > > > -Prabha 
> > > > > 
> > > > > 
> > > 
> > > 
> > > 
> > > ________________________
_______________________ 
> > > Xen-devel mailing list 
> > > Xen-devel@xxxxxxxxx source.com 
> > > http://lists.xensource.com/xen-devel 
> > 
> >_______________________________________________ 
> >Xen-devel mailing list 
> >Xen-devel@xxxxxxxxxxxxxxxxxxx 
> >http://lists.xensource.com/xen-devel 
>