[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] Scheduler problem in XEN 3.4.0
Hi George, First of all I want to thank you, I am able to run that rr scheduler, wake function was the only problem which was stopping it to run, I still need to improve it. Your review was very very helpful. Also now I have two machine serial console setup which let me see printk s in XEN code. Now I want to manipulate a parameter of policy say quantum of timeslice in runtime. I am unable to find much reference for it. I know that I have to make a entry in domctl.h but what next.. Please guide me through. Thanks a lot again. Regards, Pankaj Parakh. On Mon, Oct 26, 2009 at 8:56 PM, George Dunlap <george.dunlap@xxxxxxxxxxxxx> wrote: > > Pankaj Parakh wrote: >> >> Hi George, >> >> Thanks for showing interest, First of all I'll try to setup debugging >> environment for Xen, I also checked the mailing list of Ananth also I >> know him personally, he has left it some where in middle. >> >> I tried printk's and locking method to find out which function is >> being called in schedule.c, I found the following sequence:- >> >> schedule_init() >> schedule_domain_init() >> schedule_vcpu_init() >> schedule_domain_init() >> schedule_vcpu_init() >> (from here no function is called from schedule.c, but system hangs) >> >> I cant say what the problem is, I am only changing the sched_priv data >> of vcpu struct, also my rr sched has only three functions viz >> init_vcpu, destroy_vcpu, do_schedule. >> >> I have attached the code as well. >> >> Following are my doubts: >> > > [Language point: In many English dialects, such as US and UK, "doubt" implies > something negative. To avoid being misunderstood by speakers of those > dialects, "questions" might be a better word to use.] >> >> 1. Is the above function sequence is right ? Why two times init_domain >> is called during the boot. >> > > I suspect that the idle domain (32727) and domain 0 are the two domains being > initialized. You could easily find out by adding the domain id to the printk. >> >> 2. Do a scheduler policy need to manipulate other part of vcpu struct >> (other than sched_priv) >> > > I don't believe so. You could look through other schedulers (like the credit > scheduler) to see if this is so. >> >> 3. Is it necessary to maintain domain information inside scheduler policy >> > > I don't know. > > A quick scan through the attached file turn up a couple of points: > + It appears that the algorithm adds *all* vcpus to a single global runqueue, > and scans through them looking for "runnable" vcpus on schedule. This seems > pretty pointless: why not add them to the global runqueue on wake? > + Furthermore, I'm not sure your linked-list implementation is sound; for > example, the initial v->sched_priv is not initialized to NULL. (Not going to > spend a lot of time trying to figure out if that's OK or not.) > + There is some missing logic regarding the v->processor field and > sync_vcpu_execstate(). Xen is designed expecting a per-cpu runqueue with > explicit migrations of vcpus between pcpus. One of the reasons for this is > so that when switching between a vcpu and the idle domain, it doesn't > actually need to do a full context switch. As a result, if you run a vcpu on > one cpu, and then run it on another without an explicit sync, you may have > stale data in the vcpu struct (and Xen will throw a BUG). > + You don't implement a .wake() method. I think that Xen will wake() dom0 > when it's ready, expecting the .wake() method to raise a SCHEDULE softirq on > the appropriate pcpu (from which the .do_schedule() method is called). So no > wake method means no schedule(), and no schedule means it just runs the idle > domain. > > It might be best to start with just one pcpu, and adding multiple cpus once > you get things running. Try adding a wake() method that will check to see if > cpu 0 is idle; if it is, raise SCHEDULE_SOFTIRQ on that cpu, and see what you > get. After that, try adding some logic to figure out which other cpu to wake > instead; but be advised that you'll probably hit the BUG() relating to > sync_vcpu_execstate() not being properly called. > > -George >> >> On Tue, Oct 13, 2009 at 5:17 PM, George Dunlap >> <George.Dunlap@xxxxxxxxxxxxx> wrote: >> >>> >>> Pankaj, >>> >>> I haven't used the round-robin scheduler code in that book, but >>> another guy named Ananth tried to use it unsuccessfully as well. You >>> can see some of that thread here (not sure why I can't find the >>> original post): >>> http://lists.xensource.com/archives/html/xen-devel/2009-05/msg00004.html >>> >>> Most of us are not so interested in finding the bug in the books' >>> code, but we are interested in helping *you* find it. If you continue >>> to do hypervisor work (and especially if you do anything with the >>> scheduler), you're going to have to learn how to debug a hypervisor, >>> which is often rather a pain in the neck. >>> >>> There is some advice in the thread linked to above about setting up a >>> serial console. You can add printk()'s around to find out what the >>> sched_rr code is doing and where it's going wrong, and ask more >>> questions on the list if you get stuck. (Feel free to cc me to bring >>> it to my attention, but always send it to the whole list.) >>> >>> Good luck, >>> -George >>> >>> >>> On Mon, Oct 12, 2009 at 6:15 PM, Pankaj Parakh >>> <me.pankajparakh@xxxxxxxxx> wrote: >>> >>>> >>>> Hi All, >>>> >>>> I am trying to learn about schedulers of XEN, so for a start I am >>>> using XEN 3.4.0 and using book - The Definitive Guide to the Xen >>>> Hypervisor - by David Chisnall, I have followed its steps to add >>>> scheduler which is there in Chap. 12 >>>> But I dont know what is the problem, I am unable to boot with that >>>> scheduler selected, I have been trying to debug this problem, but >>>> kinda stuck in it. >>>> The scheduler given in that book is a trivial round robin scheduler. >>>> >>>> Is the problem is with the code or with the procedure, I dont know that >>>> also. >>>> >>>> Plzz help me out of this. >>>> >>>> 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
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |