为什么Windows在处理器之间切换进程?

Ver*_*rim 10 windows process processors

如果单个线程进程繁忙且使用100%的单核,则看起来Windows正在核心之间切换此进程,因为在任务管理器核心概述中,所有核心都是相同的.

为什么Windows会这样做?这不是破坏L1/L2缓存吗?

Ben*_*igt 18

将进程固定到一个核心是有好处的,主要是您已经提到过的缓存.

还有一些缺点 - 加热不均匀会产生机械应力,而不会改善硅芯片的预期寿命.

为避免这种情况,操作系统倾向于使所有核心保持相同的利用率.当只有一个活动线程时,必须移动它并使缓存无效.只要不经常(在CPU时间内)完成此操作,迁移期间额外缓存未命中的影响可以忽略不计.

例如,"实现功率门控的集群多核架构的基于硬件的负载均衡中的能量和热权衡"的摘要明确地将其列为调度算法的设计目标(强调我的):

在这项工作中,提出了一种针对这些集群多核架构的负载平衡技术,该技术既提供了低能量开销,又提供了跨芯片的平滑温度分布,通过均匀地对内核施加压力来提高处理器的可靠性.

在整个芯片中散布散热对于Turbo Boost等技术也至关重要,因为Turbo Boost芯片的临时速率是不可持续的.通过定期将负载移动到不同的核心,即使瞬时功率不是这样,平均散热仍然是可持续的.

  • **加上1**用于教我今天的新东西(加热考虑). (3认同)
  • 如果我使用 CPU-Z 运行一个简单的基准测试并将其固定到单个核心,则我的 Ryzen 3500u 处理器中的结果约为 405。如果没有固定,它会达到~365。即 10% 的性能差异。我很难说它可以忽略不计。在 Linux 中,调度程序会尝试将正在运行的线程保持在单个核心中。因此,操作系统并不倾向于使所有核心保持相同的利用率,这只是 Windows 的情况。切换核心还有其他缺点,下一个核心可能处于低功耗状态,然后它必须切换到睿频等。 (2认同)
  • @EvrenYurtesen:不,机械应力是由热膨胀引起的。如果你让一个核心保持忙碌,那将成为一个热点,它会尝试扩展,但它周围的硅不会扩展以腾出空间。温度随位置的导数是问题,而不是温度随时间的导数(这已经受到热容量的限制......即使您立即改变功耗,温度也会随时间平滑变化) (2认同)
  • @BenVoigt,如果您应用了逻辑,那么 APU 类型处理器会更频繁地发生故障,而且具有集成内存控制器等的处理器会更频繁地发生故障,因为硅的某些部分永远不会像其他部分一样热。但事实并非如此。此外,我还使用过许多具有超过 5000 个内核的 HPC 系统。在这些系统上运行的程序始终仅限于某些核心,因此线程无法跳转。我也从未听说过任何处理器因此而失败。最后,硅的热膨胀系数非常小。 (2认同)
  • 此外,Linux 多年来将运行线程绑定到某些内核,这与 Windows 所做的完全相反。我也从未听说过服务器因此而失败。如果你说的是真的,那么就会有一些关于有多少处理器由于 Linux 调度程序而被废弃的统计数据。更重要的是,我相信微软会对他们的操作系统保护硬件感到幸灾乐祸。但我也从未在任何地方看到过... (2认同)