我在我的 Macbook Pro 上安装了这个应用程序,它允许我禁用 CPU 上的核心。这让我想知道:禁用核心如何影响正在运行的进程?
如果禁用核心对以下内容有影响,我也很感兴趣
- 电池寿命
- 发热
- 当处理器通常使用少于 40% 的两个内核时提高性能?
它不会,除非你使用的程序写得非常糟糕。操作系统调度程序将收到处理器不再可用的警报,并将简单地停止将进程调度到该处理器中。将一个进程从“运行”转变为“等待”需要几微秒,因此切换将出现在瞬间。当进程可用且优先级允许时,该进程将继续在另一个核心上运行。
它将产生可衡量但不显着的影响——在某些情况下,它会增加。换句话说,您不应该看到能源使用量减少超过 5%,因为现代处理器已经采用了积极的节能技术。处理器不会运行空闲循环——当没有准备好运行的进程时它们会停止。如果整个系统负载较低,操作系统会减慢处理器速度而不是停止它们,这具有类似的节省效果。
在某些非常具体的使用场景中,由于操作系统使用处理器的方式(更多的任务切换,这会导致更低的性能和更高的处理器利用率),能源使用量会上升。
与功率一样,它是可测量的,但如果不仔细测量就不会注意到。同样,处理器已经具有出色的功率控制,并将调节时钟、电压和处理器空闲以匹配负载,无论有多少处理器处于活动状态。
过程非常“尖峰”。当您按下一个键或移动鼠标时,它会启动数十个等待进程,并希望在很短的时间内达到 100%。
通过强制处理器一次运行一个而不是并行运行,是的,总体平均使用率只有 80%,但它会感觉滞后,这不仅是因为有很多等待进程,还因为任务切换 - 每次一个进程被改变(由于优先级,或者它正在完成,或者中断等)处理器加载操作系统任务,然后运行调度程序,然后加载下一个任务。
您将一个处理器上的任务切换负载加倍,这意味着您要更频繁地运行操作系统代码(调度程序、事件管理器等)以跟上需求。
这很浪费,性能下降实际上可能很明显。例如,如果操作系统可以选择以正常速度的 40% 运行两个处理器,则不一定需要执行这些额外的工作。
-亚当
有趣的问题。这有点涉及。您对“禁用核心的应用程序”的确切含义以及它的作用并没有特别具体,但我从您的问题和对另一个问题的评论中推测该应用程序正在以对操作系统内核友好的方式禁用核心。
因此,通常当 OS X 运行时,有许多不同的可能线程/进程(我会从这里开始说线程)在调度程序中竞争 CPU 资源。当您的 Core 2 Duo 处理器的两个内核都启用时,内核能够同时运行两个线程 - 在需要运行的所有内容中旋转两个内核。当您禁用其中一个内核时,内核将退回到仅将工作分派给单个内核。当然,这不会改变需要完成的工作量......它只会将您的潜在执行性能降低一半。
如果您的核心平均忙碌率低于 50%,您可能认为这并不重要,对吧?好吧,在许多情况下它确实很重要,原因是执行东西的延迟。如果任何时候只有一个线程可以运行,那么第二个核心总是无用的,即使它仍然启用。但是,在两个或多个线程变得可运行的任何情况下......可以利用两个内核,如果其中一个被禁用,那么在第二个线程上完成的工作甚至无法开始,直到前一个线程执行一段时间,然后被换出。假设要完成相同工作的两个线程,显然与双核情况相比,第二个线程完成所需的时间是双核情况的两倍。你可能没有注意到这一点,这取决于我们在这里谈论的工作量,但显然,至少在理论上,延迟(响应能力)将减少一半。显然,随着系统加载越来越多的需要运行的线程或有更多工作要做的线程,一切都在以半速运行——实际上——将变得越来越明显。
这一切都很简单。
那么这对于散热和电池寿命意味着什么呢?
您是否在这里领先......因为事实上,虽然您可能倾向于认为您每单位时间消耗的功率只有一半,但实际上工作需要两倍的时间才能完成。
这里的结论是,最终禁用内核对整体电池寿命的影响非常小,因为操作系统和 CPU 已经在协同工作以降低时钟并有效地关闭不需要的内核。也就是说,在您需要时准备好等待使用的内核几乎没有开销。事实上,一个只使用一个内核的系统实际上可能具有更短的电池寿命,因为主板上的所有其他设备必须保持活动更长时间,因为 CPU 需要更长的时间才能完成所需的工作。
相对于散热来说,效果是差不多的。显然,仅用一个核心就可以显着降低 WATTS 的峰值散热量……因为实际上只有两个核心中的一个处于活动状态。但是,再一次,该核心将运行更长时间,并且净总能量输出(焦耳或瓦特秒)将大致相同......这也是为什么您的电池寿命在单核与两核情况下基本上不受影响的原因。
我假设当您“禁用”核心时,您实际上是在告诉 OS X 不再并行处理。
我还假设操作系统足够聪明,可以在您禁用它们后移动进程:)
但是,我认为您不会真正看到功耗或电池寿命的巨大改善,但这是一个猜测 - CPU 仍在供电,只是其中一部分没有被访问。
另外,这只是一个理论上的问题,除非注意保持热性能恒定,否则只运行一个内核可能不会增加 CPU 烧毁的可能性?只是一个想法。
它不会真正影响您正在运行的进程。调度程序将从核心清除正在运行的进程,并且不会将另一个进程专用于它。
现在你的调度器只需要找到一个很好的策略来找到一个公平的进程分配给剩余的核心。
我不知道功耗,但我希望你会节省一些利润。这取决于 CPU 在 MBP 内使用的功率百分比。
至于对原始处理能力的影响,这取决于您正在运行的应用程序的性质。大多数应用程序并非旨在利用多核,尽管大多数高端应用程序都是。因此,如果您使用的是 Photoshop 或视频编辑软件,那么在性能瓶颈是 CPU(而不是网络 IO 或磁盘 IO)的情况下,您会注意到峰值性能显着降低。