Multi-Processor Scheduling
Notes
- Chapter 5.5
- Remember
- Cores share memory (possibly private L1/L2, but everything else is shared)
- Processors that share memory are called symmetric multiprocessors
- Non Uniform Memory Access (NUMA) is where each processor has its own memory
- Distributed/Heterogeneous systems have independent
- Each of these has different needs for a scheduler
- Process migration is the biggest thing
- When a core/cpu/machine is busy, can I ship the work to another core/cpu/machine?
- No real problem between cores
- Very little problem in a SMP
- Slow data transfer in a NUMA
- Problem or impossible in a Distributed system.
- This is related to the memory hierarchy
- Moving between cores is a cache flush, and a compulsory miss, but possibly on l1 and l2
- Moving between processors in SMP is possibly a full cache flush
- On NUMA it is transferring memory between locations
- In Distributed ...
- In core/smp a common ready queue or a per thread/cpu ready queue could work.
- In NUMA and beyond a per cpu/machine queue is more likely.
- With more than one queue, load balancing is desirable
- Different meanings of balance include
- Same sized queue
- Similar distribution of priorities
- And others
- Pull/push question again
- An idle unit may request work
- Or an overloaded unit may push work.
- It appears that in linux an idle processor may pull work from a busy processor (but I can't find a good reference)
- Trying to keep a task on a processor is know as processor affinity