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

时间:2008-11-20 20:16:00

标签: macos cpu multicore

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

如果禁用核心会对以下内容产生影响,我也很感兴趣

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

5 个答案:

答案 0 :(得分:5)

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

它没有,除非您使用的程序非常糟糕。 OS调度程序将被警告处理器不再可用,并且将简单地停止将进程调度到该处理器中。将进程从“运行”变为“等待”需要几微秒,因此切换将立即显示。该过程将继续在另一个核心上运行,因为它变得可用且优先级允许。

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

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

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

如何禁用核心会影响发热

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

禁用核心如何影响性能(假设处理器使用的核心少于40%)

流程非常“高峰”。当您按下某个键或移动鼠标时,它会启动数十个等待过程,并且在很短的时间内想要100%。

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

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

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

- 亚当

答案 1 :(得分:3)

有趣的问题。这有点牵扯。你对“禁用核心的应用程序”的确切含义以及它的确切含义并不是非常具体,但我从你的问题和对另一个人的评论中推测,这个应用程序以操作系统内核友好的方式禁用了核心。 / p>

因此,通常在OS X运行时,有许多不同的可能线程/进程(我将说明此处的线程)在调度程序中竞争CPU资源。当启用Core 2 Duo处理器的两个内核时,内核可以同时运行两个线程 - 将两个内核旋转到需要运行的所有内核。当您禁用其中一个内核时,内核将回退到仅将调度工作转移到单个内核。当然,这并不会改变需要完成的工作量......它只会将潜在的执行性能降低一半。

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

这一切都很直接。

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

你是否先到这里来......因为事实上你可能倾向于认为你每单位时间的力量减少了一半,所以工作实际上需要两倍的时间来完成。

这里得出的结论是,最终禁用核心对整体电池寿命的影响非常小,因为操作系统和CPU已经在一起工作以节制时钟并有效地关闭非核心需要。也就是说,在等待中准备好在需要时使用核心时,几乎没有任何开销。事实上,系统可能实际上具有更短的电池寿命,只使用一个核心,因为主板上的所有其他设备必须保持更长时间,因为CPU需要更长时间才能完成所需的工作。

相对于散热,效果类似。很明显,WATTS的峰值散热量只有一个核心大幅减少....因为两个核心中只有一个实际上是活跃的。然而,同样,该核心将运行更长时间,净总能量输出(JOULES或WATT SECONDS)将大致相同......这也是为什么在一个核心与两个核心情况下电池寿命基本不受影响的原因。

答案 2 :(得分:1)

我认为当你“禁用”核心时,你真的告诉OS X不再并行处理。

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

但是,我认为你并没有真正看到功耗或电池续航时间的巨大改善,但这是一个猜测 - CPU仍在获得电源,只是其中一部分没有被访问。

另外,这只是一个理论问题,可能不会只运行一个Core会增加CPU烧毁的可能性,除非注意保持热属性不变?只是一个想法。

答案 3 :(得分:1)

它不会真正影响您的正在运行的进程。调度程序将从核心清除正在运行的进程,并且不会将其他进程专用于它 现在,您的调度程序必须找到一个很好的策略,以便为剩余的核心找到公平的进程分配。

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

答案 4 :(得分:0)

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

对于原始处理能力的影响,它取决于您运行的应用程序的性质。尽管大多数高端应用程序都是使用多个应用程序,但大多数应用程因此,如果您使用的是Photoshop或视频编辑软件,那么在性能瓶颈是CPU(而不是网络IO或磁盘IO)的情况下,您会发现性能显着下降。