Date: Sun, 28 Nov 1999 08:41:57 -0800 (PST) From: Matthew Dillon <dillon@apollo.backplane.com> To: Arun Sharma <adsharma@sharmas.dhs.org> Cc: freebsd-arch@freebsd.org Subject: Re: Threads Message-ID: <199911281641.IAA44909@apollo.backplane.com> References: <Pine.SUN.3.91.991124134533.26314A-100000@pcnet1.pcnet.com> <199911241905.LAA20045@apollo.backplane.com> <14396.15070.190669.25400@avalon.east> <199911241941.LAA20231@apollo.backplane.com> <19991124212521.W301@sturm.canonware.com> <199911280338.TAA40637@apollo.backplane.com> <19991127205752.A7145@sharmas.dhs.org>
next in thread | previous in thread | raw e-mail | index | archive | help
:current BSD scheduler. : :(a) schedcpu() is called every hz ticks. This requires locking the runqueues. : On a SMP system, all other processors are completely locked out. Clearly, : someone needs to redesign the system such that priorities get recomputed : in an event driven fashion. Uresh Vahalia's book (Ch 5.5.6) talks about : this. I think we are already operating under the assumption that the current scheduler must be rewritten, or at least significantly modified. Amoung other things we have to get rid of all the extra junk that is in assembler that could easily be C (I seem to recall someone actually working towards that goal, was any of that ever committed? It seemed pretty good). Ideas have already been put forth. For example, giving the scheduler its own lock (or locks) independant of the MP lock. :(b) If you want to implement processor binding, the implementation is simpler : with per cpu runqueues. A multi-queue implementation would scale better for this situation. I wouldn't go as far as to say that it would be necessarily easier from an implementation point of view. I think of it in these terms: You have a process which may have no binding restrictions, loose binding restrictions, or hard binding restrictions. Most of the thread support is going to be classified as having loose binding restrictons or none at all (i.e. a general purpose setup). Hard binding is easiest with multiple queues for obvious reasons, but loose/no binding is easiest with a single queue. From an implementation point of view. :(c) Although not a justification by itself, I remember reading that the most : recent version of AIX uses per cpu runqueues to scale better on SMP. : :On the other hand, implementing scheduler activations and SMP scaling :simultaneously would be too much of a change. It might be a good idea :to do one thing at a time. : : -Arun I'm thinking that it would be easier to augment the single run queue we currently have first and then redo it later after the rest of the system has been made more SMP aware. In regards to performance, right now the scheduler is the least of our worries. -Matt Matthew Dillon <dillon@backplane.com> To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-arch" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199911281641.IAA44909>