SMP调度背景
在多处理器系统上,内核必须考虑好几个额外的问题,以确保良好的调度。
- CPU负荷必须尽可能公平地在所有处理器上共享。
- 进程与系统中某些处理器的亲合性(affinity)必须是可设置的。
- 内核必须是能够将进程从一个CPU迁移到另一个上。
linux SMP调度就是将进程安排/迁移到合适的CPU中去,保持各CPU负载均衡的过程。如下图所示。
SMP调度时机
- scheduler_tick
- try_to_wake_up(优先选择在唤醒的CPU上运行)
- exec系统调用启动一个新进程时
SMP调度分析
CPU拓扑关系构建
系统启动时开始构建CPU拓扑关系。
<