在现代多核系统上,如果用户能够将某个核心分配给某个应用程序,那么效率会不会很低?
答案1
首先,对你的问题的真正回答是,你作为用户为什么要关心这个问题?操作系统的开发是为了以最有效的方式利用提供给它们的资源。除非你有特殊要求,否则你的机器不太可能在自己做这项工作时表现得更好。
话虽如此,我认为大多数操作系统都会为您提供选项。在 Windows 中,您可以打开任务管理器应用程序,选择一个进程,上下文菜单中的选项之一是“设置关联性”。这将允许您选择进程将在哪些核心上运行。
答案2
这是一个很难的问题,每种情况都是不同的。
任何操作系统中的线程/进程调度程序都比您复杂和高效得多,它可以非常快速地对不同的工作负载做出反应。用户不应该知道“我的进程如何调度”背后的所有机制,以及(我个人的注释)这对您来说为什么真的很重要?
您将面临让 3 个核心处于休眠状态的风险,而唯一工作的核心将在您的应用程序中调度 2132121 个线程。
顺便说一句,如果您真的想这样做,您可以在任何操作系统中为每个进程定义“CPU 亲和性”。
在 Windows 中,您可以在“任务管理器”中更改进程可以使用的核心,右键单击进程(而不是应用程序),然后单击“亲和性”。
编辑:我曾经用过它,当时我有一个“非常重要的应用程序”:在一台超载的服务器上,该应用程序必须每隔几分钟(当客户要求时)以高优先级运行一次。我们强制操作系统将两个核心(总共超过 8 个核心)专门分配给该应用程序。我们得到了结果,但 90% 的时间里两个核心处于休眠状态。