代码之家  ›  专栏  ›  技术社区  ›  epochwolf

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

  •  9
  • epochwolf  · 技术社区  · 16 年前

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

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

    • 电池寿命
    • 发热
    • 当处理器通常使用两个核心的不足40%时,性能会提高?
    5 回复  |  直到 13 年前
        1
  •  5
  •   Adam Davis    15 年前

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

    除非你正在使用的程序写得很糟糕,否则不会。操作系统调度器将收到处理器不再可用的警报,并将停止将进程调度到该处理器中。将一个进程从“运行”变为“等待”需要微秒,因此开关将显示为瞬时的。当另一个核心可用且优先级允许时,进程将继续在该核心上运行。

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

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

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

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

    与功率一样,它是可测量的,但如果没有仔细测量,就不明显。同样,处理器已经有了特殊的电源控制,不管有多少个处理器处于活动状态,它都会调节时钟、电压和处理器空闲以匹配负载。

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

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

    通过强制处理器一次运行一个而不是并行运行,是的,总体平均使用率只有80%,但它会感到滞后,不仅是由于许多等待进程,而且由于任务切换-每次进程更改(由于优先级、正在完成或中断等)时,处理器都会加载OS任务,这是然后运行调度程序,然后加载下一个任务。

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

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

    -亚当

        2
  •  3
  •   Tall Jeff    15 年前

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

    所以,通常在OSX运行时,有许多不同的线程/进程(我这里说的是从这里开始的线程)在调度程序中竞争CPU资源。当核心2 Duo处理器的两个内核都启用时,内核就能够同时运行两个线程——在需要运行的所有内容中旋转两个内核。当您禁用其中一个内核时,内核将返回到仅将工作分派给单个内核。当然,这不会改变需要完成的工作量……它只会减少 潜在的 执行性能减半。

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

    这一切都很直接。

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

    你是否走在前面……因为事实上,虽然你可能倾向于认为你每单位时间消耗的能量是原来的一半,但工作实际上需要两倍的时间才能完成。

    这里的结论是,禁用一个核心,最终将对整体电池寿命产生非常小的影响,因为操作系统和CPU已经在一起工作,以缩短时钟,并有效地关闭一个不需要的核心。也就是说,有一个核心实际上没有什么开销。 在等待中 随时可以使用。事实上,一个系统可能实际上只有一个核心使用更短的电池寿命,因为主板上的所有其他设备必须保持更长的活动时间,因为CPU需要更长的时间来完成所需的工作。

    相对于散热来说,效果是相似的。很明显,以瓦特为单位的峰值热耗散只有一个核心会显著减少……因为实际上只有两个核心中的一个处于活动状态。然而,同样,核心将运行更长,净总能量输出(焦耳或瓦特秒)将大致相同……这也是为什么你的电池寿命在单核和双核情况下基本不受影响的原因。

        3
  •  1
  •   warren    16 年前

    我假设当你“禁用”核心时,你真的告诉OSX不再并行处理。

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

    不过,我不认为你真的会看到耗电量或电池寿命的大幅提高,但这只是一个猜测——CPU仍在获得电力,只是部分电力没有被访问。

    另外,这仅仅是一个理论问题,如果不小心保持热性能不变,运行一个内核是否会增加CPU烧坏的可能性?只是一个想法。

        4
  •  1
  •   Leonidas    15 年前

    它不会真正影响您的运行进程。调度程序将从核心中清除正在运行的进程,而不会将另一个进程专门用于该进程。
    现在,您的调度器只需要找到一个好的策略,就可以将流程公平地分配给剩余的核心。

    1. 电池:边缘
    2. 热差:可以忽略…带2x40%负载
    3. 不存在或稍差
      • 更糟的是,现在所有进程都必须切换到一个且只有一个核心
      • 在一个过程之前(和他的背景!)可能一直停留在一个核心上
      • 所以这将添加I/O…你唯一的核心必须等待它(刷新TLB和PAGE表)
        5
  •  0
  •   Brock Adams    13 年前

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

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