+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.
>
>

Reply via email to