有些文章提到了所谓的核心亲缘关系,该技术会将线程绑定到核心,这将减少核心之间调度线程的成本。相反,这是我的问题。
为什么操作系统在内核之间调度线程时会花费更多时间。
答案 0 :(得分:3)
您可能会误解所读内容。并不是真正的 scheduling 慢,而是任务移至新内核时运行速度会变慢,因为专用的每内核缓存在该新内核上会很冷。
(更糟糕的是,在旧内核上很脏,需要回写才能读取它们。)
在大多数操作系统中,将任务“调度到内核”并不是很多,因为运行在每个内核上的内核都可以抓取当前当前可运行的最高优先级任务,但受相似性掩码的限制。 (此核心上的调度程序功能将仅考虑其亲和力掩码与此核心匹配的任务。)
没有一个单线程的主控制程序来决定每个内核应该做什么。普通内核中的调度程序是一种协作多线程算法。
在内核的调度程序函数中,这主要不是CPU时间的实际花费,而是任务在新内核上的运行速度较慢。