首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么调度cpu内核之间的线程成本很高?

为什么调度cpu内核之间的线程成本很高?
EN

Stack Overflow用户
提问于 2018-11-05 10:28:57
回答 1查看 59关注 0票数 0

有一些文章提到了所谓的核心亲和力,这种技术将线程绑定到内核,这将降低内核之间调度线程的成本。相反,这是我的问题。

为什么操作系统在内核之间调度线程需要花费更多的时间。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-07 01:34:25

你可能误解了你读到的东西。真正的调度不是慢的,而是当任务移动到一个新的核心时会运行得更慢,因为私有的每核心缓存在新内核上会很冷。

(更糟糕的是,旧内核上的脏东西需要在读取之前进行回放。)

在大多数OSes中,与其说任务被“调度到核心”,不如说运行在每个内核上的内核获取当前可运行的最高优先级任务,但受到亲和性掩码的限制。(此核心上的调度程序函数将只考虑其亲和掩码与此核心匹配的任务。)

没有单线程主控程序来决定每个内核应该做什么;普通内核中的调度程序是一个协作的多线程算法。

这主要不是内核调度器功能中CPU时间的实际开销,而是任务在新内核上运行得更慢。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53152546

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档