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

    > 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




    \
     
     \ /
      Last update: 2009-02-21 01:01    [W:0.021 / U:1.056 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site