第六十一章:多核调度(进阶)
复习
- 调度器可用反馈和优先级在一个 CPU 上选择任务。
TL;DR
- 多核调度还要决定任务在哪个核心运行。
- 负载均衡与缓存亲和性常彼此拉扯。
正文
多个核心可以真正并行执行不同进程。调度器要避免一个核心空闲、另一个核心排长队,这叫负载均衡。它可以共享就绪队列,也可以让每个核心有自己的队列并在必要时“偷取”任务。
但频繁迁移任务并不总是好事。一个进程刚用过的数据仍可能留在某个核心的缓存中;继续留在原核心能少等内存,这种倾向叫缓存亲和性。调度器需要在均衡与亲和之间折中。
多个核心也意味着同一进程内可以同时推进多条执行线。线程由此出现。
思考题
为什么把任务平均分配到核心后仍可能变慢?
小结
- 多核调度增加了核心选择与负载均衡问题。
- 缓存亲和性使迁移具有代价。
思考题答案(仅供参考)
迁移会丢失原核心缓存中的局部性,新的核心可能需要重新从较慢内存取数据。
协议
本文采用 CC BY-NC-SA 4.0 协议发布。