【发布时间】:2014-11-05 15:03:59
【问题描述】:
有很多文章讨论多核神话。也就是说,为了真正从多核中受益,需要编写并行算法。他们中的许多人都提到了Amdahl's law。
为简单起见,假设我们有一台配备 4 核商用 CPU 的台式计算机。并假设目标是提高我们的应用程序性能以及整体系统性能。
我想知道 CPU 内核是如何用于执行任务的。
- 是否为单个进程的线程分配了所有内核
- 或者来自不同进程的线程被安排在不同的内核上运行。
如果是后者,那为什么还要讨论神话?即使所有进程都是单线程的,多任务操作系统不会总是受益于多核 CPU 吗?来自同一进程的线程是否更有可能同时在多个内核上调度?
- 哪些因素很重要? CPU缓存可能吗?可能与某些应用程序相关?为什么?
- 为什么要使用并行库/算法?毕竟,CPU 资源是在所有正在运行的进程之间共享的,而且总是足够的。
是否存在“活动进程”的概念?即最受调度程序关注的进程。如果是这样,那么这个过程通常会得到多少关注?
【问题讨论】:
-
这是一个非常广泛的话题,我认为不适合 Stackoverflow。对你的问题的回答会很长而且很复杂:肯定比这里适合的时间要长得多。您最好对操作系统进行一些研究,然后在了解它们如何工作的基础知识后再提出具体问题。对您的问题的简短回答是,现代操作系统尽可能利用多核 CPU。大多数都是按线程而不是按进程进行调度的。
-
操作系统调度线程,而不是进程。当线程由作为“前台”的进程拥有时,可以提高线程的优先级,并与用户进行交互。如果您没有编写使用线程的代码,那么多核处理器仅在您同时运行多个进程并且这些进程烧毁核心时才有用。在个人电脑上并不常见。
-
对没有明显编程影响的广泛问题投票 -1 (stackoverflow.com/help/on-topic) 并且显示的研究工作很少。您可以尝试在Theoretical Computer Science Stack Exchange 提问或使用stackoverflow.com/questions/26675766/… 中的指针来了解更多信息,然后再尝试构建一个实用的问题
-
我不是学生,除了有很多工作要做之外,我还有很多其他的事情要研究。我不是那些被极客包围并且可以回答棘手问题的幸运者之一。无论这个问题多么广泛(而且没有一个),如果您知道答案,那么回答一些问题有什么问题? “是否为单个进程的线程分配了所有内核”,太难回答了……“是否存在“活动进程”的概念?”哦,太难了……投反对票很容易。回答问题不是...
-
@user2248972 有趣的是,许多 SO 贡献者都是熟练且经验丰富的开发人员,他们“有很多工作要做”,他们的报酬是 $$$/小时。试图把你研究得很糟糕的问题交给他们可能只会惹恼他们。
标签: multithreading performance operating-system multicore