[lkml]   [2009]   [Feb]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
SubjectRE: SMP Kernel

> Hi,
> Ok, since the memory is shared between all the cores the Kernel can be
> invoked by any core receiving an interrupt and thus executed by that core?


> If the above is right then how come that two separate CPUs can wake up,
> schedule and context-switch completely in parallel?
> Are there an independent scheduler per cpu?

There is a scheduler that can run on any CPU that needs to schedule.
However, the scheduler is designed to be scalable across large numbers of

There is meaningful distinction between "there is one scheduler that can run
on any CPU" and "each CPU has its own scheduler". Whether you look at the
scheduler running on one CPU as the same scheduler or a different scheduler
as the scheduler running on another CPU is purely a question of semantics.

If I run two copies of 'ls', are they the same program or not?

> Directly from the sched-design.txt
> - 'perfect' SMP scalability. With the new scheduler there is no 'big'
> runqueue_lock anymore - it's all per-CPU runqueues and locks - two
> tasks on two separate CPUs can wake up, schedule and context-switch
> completely in parallel, without any interlocking. All
> scheduling-relevant data is structured for maximum scalability.

So the scheduler operates on per-CPU data structures, allowing multiple CPUs
to run the scheduler code at the same time without slowing each other down.


 \ /
  Last update: 2009-02-21 01:01    [W:0.030 / U:5.068 seconds]
©2003-2018 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site