English 中文(简体)
禁用一个内核会如何影响运行中的进程?
原标题:
  • 时间:2008-11-20 20:16:00
  •  标签:

我在我的Macbook Pro上安装了这个应用程序,它允许我禁用CPU上的一个核心。这让我想起了一个问题:禁用一个核心会对运行中的进程产生什么影响?

我也很感兴趣,如果禁用一个内核是否会影响以下内容。

  • Battery Life
  • Heat generation
  • Increased performance when the processor would normally be using less than 40% of both cores?
最佳回答

How does disabling a core affect the running processes?

除非您使用的程序写得极其糟糕,否则不会出现问题。操作系统调度程序会警告处理器不再可用,并停止将进程调度到该处理器。将进程从“运行”状态切换到“等待”状态只需微秒级别的时间,因此切换看起来是瞬间完成的。进程将在其他核心上继续运行,直到该核心可用且具有优先级为止。

How does disabling a core affect battery Life

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

在某些非常特定的使用场景中,由于操作系统使用处理器的方式(更多的任务切换导致性能降低和处理器利用率更高),能源消耗将会增加。

How does disabling a core affect heat generation

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

How does disabling a core affect performance (assuming the processor is using less than 40% of both cores)

进程非常峰值化。当你按下键盘或移动鼠标时,会启动数十个等待进程,并希望在很短的时间内达到100%。

通过强制处理器逐个运行它们而不是并行运行,整体平均使用率仅为80%,但会感觉卡顿,不仅因为有许多等待进程,而且还因为任务切换 - 每当进程更改(由于优先级或完成或中断等原因),处理器会加载操作系统任务,然后运行调度程序,然后加载下一个任务。

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

这很浪费,并且性能的减少可能会明显可见。 如果操作系统有同时以正常速度的40%运行两个处理器的选项,则不一定需要执行此额外的工作。

亚当

问题回答

有趣的问题。这会变得有些复杂。您对“禁用核心的应用程序”具体是什么意思,以及它的确切作用并没有非常具体,但我认为根据您的问题和对另一个问题的评论,这个应用程序以操作系统内核友好的方式禁用了核心。

所以,通常情况下,当OS X运行时,有许多不同的可能性线程/进程(以下简称线程)正在调度程序中竞争CPU资源。当您的Core 2 Duo处理器的两个内核都启用时,内核有能力同时运行两个线程-将两个内核通过需要运行的所有内容旋转。当您禁用其中一个内核时,内核将回退到仅向单个内核分派工作的状态。当然,这并不会改变需要完成的工作量...它只是将您的潜在执行性能减半。

如果你的核心平均忙碌度低于50%,你可能会认为这并不重要,对吧?但是,在许多情况下,它确实很重要,原因是执行任务的延迟。如果一次只有一个线程可以运行,那么第二个核心总是无用的,即使它仍然启用。但是,在任何两个或更多线程变为可运行状态的情况下……可以利用两个核心的优势,如果其中一个被禁用,则需要在前一个线程执行一段时间后才能开始在第二个线程上完成要做的工作,然后将其替换出来。假设有两个要完成相同工作量的线程,显然第二个线程完成所需的时间将比双核情况下多一倍。你可能没有注意到这一点,这取决于我们在这里讨论的工作量是多少,但显然响应时间(响应能力)至少从理论上讲会缩短一半。显然,随着系统的负载越来越多地需要运行的线程或需要完成更多工作量的线程,一切都会变得愈发明显,即所有事情运行的速度实际上是一半。

那都挺直觉的。

那么这与散热和电池续航有何关系?

在这里,你是获得利益还是不赚钱呢……事实上,尽管你可能倾向于认为你每个单位时间绘制了一半的功率,工作实际上需要两倍的时间才能完成。

这里的结论是,最终禁用一个核心对整体电池寿命的影响非常小,因为操作系统和CPU已经在协同工作,通过降低时钟频率和有效地关闭不需要的核心来降低电压。也就是说,准备好一个核心以在需要时立即使用实际上几乎没有任何额外开销。事实上,如果只使用一个核心,系统的电池寿命可能会更短,因为主板上的所有其他设备必须保持活动状态更长时间,因为CPU需要更长时间来完成所需的工作。

相对于散热来说,效果类似。显然,只有一个核心时,以瓦特为单位的峰值散热量大大降低...因为只有两个核心中的一个是真正活跃的。然而,再次强调,该核心将运行更长时间,净总能量输出(焦耳或瓦秒)将大致相同...这也是为什么单核心与双核心情况下电池寿命基本不受影响的原因。

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

我也认为操作系统聪明到足以在您禁用它们后移动进程 :)

然而我认为您不会真正发现功率消耗或电池寿命有巨大的提升,但这只是猜测 - CPU 仍在获取能量,只是其中的一部分没有被使用。

此外,这只是一个理论问题,如果不注意保持热特性恒定,仅运行一个内核是否会增加CPU烧毁的可能性?只是一个想法。

It won t really affect your running processes. The scheduler will clear the running process from the core and just won t dedicate another proccess to it.
And now your scheduler just have to find a nice strategy to find a fair allocation of the processes to the remaining core.

  1. battery: marginal
  2. heat-diff: negligible ... with the 2x40%-load
  3. nonexistent or slightly worse
    • worse because now all processes have to be switched over the one and only core
    • before one process (and his context!) could have stayed all the time on one core
    • so this will add I/O ... and your only core has to wait for it (flushing the TLB and page table)

我不知道功耗情况,但我认为你会节省一些电。这取决于CPU在MBP中使用的电量百分比。

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





相关问题
热门标签