有一些文章提到了所谓的核心亲和力,这种技术将线程绑定到内核,这将降低内核之间调度线程的成本。相反,这是我的问题。
为什么操作系统在内核之间调度线程需要花费更多的时间。
发布于 2018-11-07 01:34:25
你可能误解了你读到的东西。真正的调度不是慢的,而是当任务移动到一个新的核心时会运行得更慢,因为私有的每核心缓存在新内核上会很冷。
(更糟糕的是,旧内核上的脏东西需要在读取之前进行回放。)
在大多数OSes中,与其说任务被“调度到核心”,不如说运行在每个内核上的内核获取当前可运行的最高优先级任务,但受到亲和性掩码的限制。(此核心上的调度程序函数将只考虑其亲和掩码与此核心匹配的任务。)
没有单线程主控程序来决定每个内核应该做什么;普通内核中的调度程序是一个协作的多线程算法。
这主要不是内核调度器功能中CPU时间的实际开销,而是任务在新内核上运行得更慢。
https://stackoverflow.com/questions/53152546
复制相似问题