Keyboard shortcuts

Press or to navigate between chapters

Press ? to show this help

Press Esc to hide this help

第六十一章:多核调度(进阶)

复习

  • 调度器可用反馈和优先级在一个 CPU 上选择任务。

TL;DR

  • 多核调度还要决定任务在哪个核心运行。
  • 负载均衡与缓存亲和性常彼此拉扯。

正文

  多个核心可以真正并行执行不同进程。调度器要避免一个核心空闲、另一个核心排长队,这叫负载均衡。它可以共享就绪队列,也可以让每个核心有自己的队列并在必要时“偷取”任务。

  但频繁迁移任务并不总是好事。一个进程刚用过的数据仍可能留在某个核心的缓存中;继续留在原核心能少等内存,这种倾向叫缓存亲和性。调度器需要在均衡与亲和之间折中。

  多个核心也意味着同一进程内可以同时推进多条执行线。线程由此出现。

思考题

为什么把任务平均分配到核心后仍可能变慢?

小结

  • 多核调度增加了核心选择与负载均衡问题。
  • 缓存亲和性使迁移具有代价。

思考题答案(仅供参考)

  迁移会丢失原核心缓存中的局部性,新的核心可能需要重新从较慢内存取数据。

协议

本文采用 CC BY-NC-SA 4.0 协议发布。