[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] Questions about the use of idle_vcpu[]
On Mon, 2016-01-18 at 10:47 +0000, George Dunlap wrote: > On Fri, Jan 15, 2016 at 1:04 AM, Tianyang Chen <tiche@xxxxxxxxxxxxxx> > > > If an idle vcpu is picked, the ret.time is set accordingly in both > > credit > > and credit2 by checking whether snext is idle. if so, credit > > returns -1 and > > credit2 returns 2ms. However, there is no corresponding code in the > > RTDS > > scheduler to handle this. When an idle_vcpu is picked, the value of > > ret.time > > would be 0 and the scheduler would be invoked again. What is the > > logic > > behind this? > > No real logic, as far as I can tell. :-)ÂÂThe ret.time return value > tells the generic scheduling code when to set the next scheduler > timer.ÂÂAccording to the comment in xen/common/schedule.c:schedule(), > returning a negative value means "don't bother setting a timer" > (e.g., > no time limit).ÂÂSo credit1 does the right thing. > It does. > It looks like credit2's behavior will probably prevent the processor > from going into deeper power-saving states, and rtds' behavior might > cause it to essentially busy-wait. > RTDS behavior is broken in many respect, including this, and in fact, Meng andÂTianyang are sending patches already to fix it (I'll let you guys have my comments shortly :-P). Credit2, AFAICR, could also avoid _always_ re-setting the timer, but it does need to do that at least a few times, even when idle is selected, because of the dynamic load tracking mechanism it includes. In fact, that is based on a 'decaying average', which in turns relies on csched2_schedule() to run and update the statistics, even when the cpu is idle. If we don't do that, the load tracking mechanism will never see that the cpu (well, it's actually the runqueue) is idle, and the load will never go down! :-/ I've got patches for: Â- extending the dynamic load tracking logic to all scheduler (iff  Âthey want to use it, of course) Â- only call {csched,csched2,rtds}_schedule() if necessary. That  Âmeans, if the pcpu/runqueue is idle (and if the dynamic tracking is  Âin use by the specific scheduler), only return a positive value  Âand set the timer if the dynamic load is >0, to allow it to decay  Â(if the pcpu/runqueue stays idle enough). But they are on hold, while I'm finishing some other work. > Dario / Meng, am I reading things right?ÂÂIf so, we should probably > fix that... > Yep, and in fact, we're on it already. I hope to be able to post my patches soon. :-) Regards, Dario -- <<This happens because I choose it to happen!>> (Raistlin Majere) ----------------------------------------------------------------- Dario Faggioli, Ph.D, http://about.me/dario.faggioli Senior Software Engineer, Citrix Systems R&D Ltd., Cambridge (UK) Attachment:
signature.asc _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |