以处理器为例,处理器、电源、存储系统是主要的能耗来源。要尽量将处理器处于闲置状态,最主要的方法是三个:
最小化运行的服务和任务
避免后台进程动作
让处理器保持闲置从而可以进入深层睡眠
如下图所示:
整个Windows 7/Windows Server 2008 R2内核的改进都是基于上述的目标而定制的,为了实现这个目标,内核作了两个改进:Core Parking以及Timer Coalescing,下面先介绍Core Parking技术,它被翻译为内核停车:
Core Parking是基于这样的理由:尽可能将负载集中在某些处理器上,而另一些处理器尽可能地处于闲置状态,这些闲置的处理器将会更多地处于节能状态。在之前的设计中,系统的负载被分配在不同的处理器上,尽管这些处理器的负载都不高,但是它们都维持在活动状态,只能达到较浅的C States。
Core Parking内核停车机制每50毫秒由定时器触发,开始计算负载、启动电源管理和进行内核停车。内核停车机制根据任务负载提升/降低的幅度来决定一个逻辑处理器将要停车还是开车(……),对于将要停车的逻辑处理器,线程调度器将尽量不将任务分配到上面。如下图所示:
为了实现按照插槽来进行内核停车,系统必须了解CPU的拓扑结构,而NUMA架构也被内核认知(每一个NUMA结点都有一个处理器保持在非停车状态)。实际上,Core Parking表现了系统内核更好地适应、利用现代硬件的能力。