我在 Macbook Pro 上安装了这个应用程序,它允许我禁用 CPU 上的核心。这让我想知道:禁用核心如何影响正在运行的进程?

我也感兴趣禁用核心是否会对以下内容产生影响

  • 电池寿命
  • 发热
  • 当处理器通常使用少于 40% 的两个核心时,性能会提高吗?
有帮助吗?

解决方案

禁用核心如何影响正在运行的进程?

事实并非如此,除非你使用的程序写得非常糟糕。操作系统调度程序将收到处理器不再可用的警报,并且将停止将进程调度到该处理器中。将进程从“运行”变为“等待”需要几微秒的时间,因此切换看起来是瞬时的。当另一个核心变得可用并且优先级允许时,该进程将继续在另一个核心上运行。

禁用核心如何影响电池寿命

它将产生可测量但不显着的影响——在某些情况下它会增加。换句话说,您不会看到能源使用量下降超过 5%,因为现代处理器已经采用了积极的节能技术。处理器不会运行空闲循环 - 当没有进程准备运行时它们就会停止。如果整体系统负载较低,操作系统会减慢处理器速度而不是停止它们,这具有类似的节省效果。

在某些非常具体的使用场景中,由于操作系统如何使用处理器(更多的任务切换,这会导致性能降低和处理器利用率更高),能源使用量将会增加。

禁用核心如何影响热量产生

与功率一样,它是可以测量的,但如果不仔细测量,则不会被注意到。同样,处理器已经具有出色的功率控制,并且无论有多少处理器处于活动状态,都会调节时钟、电压和处理器空闲以匹配负载。

禁用核心对性能有何影响(假设处理器使用的两个核心的利用率均低于 40%)

过程非常“高峰”。当您按键或移动鼠标时,它将启动数十个等待过程,并希望在很短的时间内100%。

通过强制处理器一次运行一个而不是并行运行,是的,总体平均使用率只有 80%,但它会感觉滞后,不仅因为大量等待进程,而且还因为每次任务切换进程发生更改(由于优先级、正在完成或中断等),处理器加载操作系统任务,然后运行调度程序,然后调度程序加载下一个任务。

您将一个处理器上的任务切换负载加倍,这意味着您要更频繁地运行操作系统代码(调度程序、事件管理器等)以满足需求。

这是一种浪费,而且性能下降实际上可能是显而易见的。例如,如果操作系统可以选择以正常速度的 40% 运行两个处理器,则不一定需要执行这项额外的工作。

-亚当

其他提示

有趣的问题。这有点涉及。您并没有非常具体地了解“禁用核心的应用程序”的含义以及它的作用,但我从您的问题和对另一个人的评论中推测,该应用程序正在以操作系统内核友好的方式禁用核心。

因此,通常当 OS X 运行时,有许多不同的可能的线程/进程(从这里开始我会说线程)在调度程序中竞争 CPU 资源。当 Core 2 Duo 处理器的两个核心均启用时,内核能够同时运行两个线程 - 轮换两个核心来完成需要运行的所有任务。当您禁用其中一个核心时,内核将恢复为仅将工作分派给单个核心。当然,这不会改变需要完成的工作量……它只是减少了你的工作量。 潜在的 执行性能减半。

如果您的核心平均忙碌率低于 50%,您可能会认为这并不重要,对吧?嗯,在很多情况下这确实很重要,原因是执行东西的延迟。如果任何时候只有一个线程可运行,那么第二个核心总是无用的,即使它仍然启用。然而,在任何两个或多个线程可运行的情况下......都可以利用两个核心,如果其中一个核心被禁用,那么第二个线程上要完成的工作甚至无法开始,直到上一个线程为止执行一段时间然后被换出。假设两个线程需要完成相同的工作,显然与双核情况相比,第二个线程完成所需的时间是双核情况的两倍。您可能没有注意到这一点,具体取决于我们在这里讨论的工作量,但显然延迟(响应能力)至少在理论上将减少一半。显然,随着系统加载越来越多需要运行的线程或有更多工作要做的线程,一切都在以一半的速度运行(实际上)将变得越来越明显。

这一切都很简单。

那么这对于散热和电池寿命来说意味着什么呢?

你是否在这里领先......因为事实上,虽然你可能倾​​向于认为你每单位时间消耗了一半的功率,但实际上工作需要两倍的时间才能完成。

这里的结论是,禁用内核最终对整体电池寿命的影响非常小(如果有的话),因为操作系统和 CPU 已经协同工作来降低时钟速度并有效关闭不需要的内核。也就是说,拥有一个核心几乎没有任何开销 在等待中 准备好在您需要时使用。事实上,仅使用一个核心的系统实际上可能具有较短的电池寿命,因为主板上的所有其他设备必须保持活动更长时间,因为 CPU 需要更长的时间才能完成所需的工作。

相对于散热来说,效果是类似的。显然,仅使用一个核心,以瓦特为单位的峰值散热量就会大幅降低......因为两个核心中只有一个实际上处于活动状态。然而,同样,该核心将运行更长时间,并且净总能量输出(焦耳或瓦秒)将大致相同......这也是为什么您的电池寿命在单核与单核中基本上不受影响的原因。两个核心案例。

我假设当你“禁用”核心时,你实际上是在告诉 OS X 不再并行处理。

我还假设操作系统足够聪明,可以在禁用进程后移动它们:)

不过,我认为您不会真正看到功耗或电池寿命方面的巨大改进,但这只是猜测 - CPU 仍在获得电力,只是其中一部分没有被访问。

另外,这只是一个理论问题,除非注意保持热属性恒定,否则仅运行一个核心是否会增加 CPU 烧坏的可能性?只是一个想法。

它不会真正影响您正在运行的进程。调度程序将从核心中清除正在运行的进程,并且不会专门为其分配另一个进程。
现在你的调度程序只需要找到一个好的策略来将进程公平地分配给剩余的核心。

  1. 电池:边缘
  2. 热差:可以忽略不计...2x40% 负载
  3. 不存在或稍差
    • 更糟糕的是,因为现在所有进程都必须切换到唯一的核心
    • 在一个进程(及其上下文!)可以一直停留在一个核心上之前
    • 所以这会增加 I/O ...你唯一的核心必须等待它(刷新 TLB 和页表)

我不知道功耗,但我希望你能节省一些余量。这取决于 MBP 中 CPU 使用的电量百分比。

至于对原始处理能力的影响,这取决于您正在运行的应用程序的性质。大多数应用程序并不是为利用多核而设计的,尽管大多数高端应用程序都是如此。因此,如果您使用 Photoshop 或视频编辑软件,那么在性能瓶颈是 CPU(而不是网络 IO 或磁盘 IO)的情况下,您会注意到峰值性能显着降低。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top