+1 what Yoann said. :-) On SMP systems, all maches share a global run queue, and maches tend to try grabbing procs that have run on it before (affinity). Take a look at port/proc.c in particular, where a lot of the scheduling logic is implemented.
On Sat, Jun 21, 2014 at 6:10 PM, Yoann Padioleau <p...@fb.com> wrote: > if you look in sys/src/9/port > and grep for functions like > > sched() > schedinit() > runproc() > updatecpu() > repriotirize() > > you'll get the logic of the scheduling algorithm. It's mostly > priority queue fair robin I think, with a few hooks to prefer reschedule > on the same CPU. > > Context switching is done with the > gotolabel() > setlabel() > mmuswtich() > taskswitch() > > > On Jun 21, 2014, at 12:30 PM, yan cui <ccuiy...@gmail.com> wrote: > >> Hi all, >> >> On SMP or multicore systems, what algorithm(s) does Plan 9 use to >> schedule(context switching and load balancing) different tasks (process or >> thread) and where is it implemented? I searched some plan9 documents, but >> cannot find some about this topic. Any recommendations? >> >> >> Thanks, Yan >> >> -- >> Think big; Dream impossible; Make it happen. > >