15

If a single threaded process is busy and uses 100% of a single core it seems like Windows is switching this process between the cores, because in Task Managers core overview all cores are equal used.

Why does Windows do that? Isn't this destroying L1/L2 caches?

4

2 回答 2

27

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

还有一些缺点——你会得到不均匀的加热,这会产生机械应力,不会提高硅芯片的预期寿命。

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

例如,“实现电源门控的集群多核架构的基于硬件的负载平衡中的能量和热平衡”的摘要明确将此列为调度算法的设计目标(强调我的):

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

对于 Turbo Boost 等技术来说,在整个芯片上散布散热也很重要,在这种技术中,内核的时钟频率暂时以不可持续的长期速率运行。通过定期将负载转移到不同的核心,即使瞬时功率不可持续,平均散热仍然可以持续。

于 2015-03-08T00:35:45.370 回答
1

您的进程可能是唯一一个做大量工作的进程,但它并不是唯一运行的进程。还有许多其他进程需要偶尔运行。当您的进程被驱逐并最终重新调度时,它之前运行的核心可能不可用。最好在空闲核心上立即运行等待过程,而不是等待前一个核心可用(并且在任何情况下,它的数据都可能被另一个线程从缓存中撞出)。

此外,现代 CPU 允许一个包中的所有内核共享高级缓存。请参阅此Intel Core i5 规格表中的“智能缓存”功能。您仍然会丢失核心交换机上的较低级别的缓存,但这些缓存很小,并且如果您运行的不仅仅是一个小的紧密循环,无论如何可能会有些混乱。

于 2015-03-08T01:52:13.643 回答