RE: SMP Kernel

From: David Schwartz
Date: Fri Feb 20 2009 - 18:58:34 EST



> 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?

Right.

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

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.

DS


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/