基于任务的程序设计(8)

Core Parking是一项Windows内核电源管理和内核调度技术,设计这一项技术的目的是为了增强多核系统上的能源功效。Core Parking可以不断地跟踪每一个硬件线程相对于其他硬件线程的工作负载,并能决定将某些硬件线程进入睡眠模式。

Core Parking技术能够根据工作负载动态调节正在使用的硬件线程的数目。当一个硬件线程的工作负载低于某一个阈值时,Core Parking算法会通过暂停系统中的一些硬件线程的方式减少硬件线程数目。为了使得这个算法高效,在调度软件线程的时候,内核调度器会给未暂停的硬件线程分配较高的优先级。内核调度器会试图让暂停的硬件线程闲置,这样就可以将它们转到低功耗的闲置状态了。

在包含HT技术的微处理器系统中,Core Parking会智能地将任务在线程之间进行调度,而这些线程运行在同一个物理内核中的多个硬件线程上。这种调度决策可以降低电源消耗。

Windows Server 2008 R2支持完整的Core Parking技术。不过,Windows 7也采用了Core Parking算法和基础结构,用于在包含HT技术的微处理器上均衡硬件线程的处理器性能。图1-7展示的 Windows Resource Monitor显示了8个硬件线程的活动,其中有4个硬件线程暂停了。

无论有多少个暂停的硬件线程,.NET Framework 4的函数所返回的硬件线程数仍然是总硬件线程数,而不仅仅是未暂停的硬件线程数。Core Parking技术并没有限制进程运行软件线程的硬件线程数。

在某些特定的工作负载下,如果工作负载很低,那么带有8个硬件线程的系统可以将自己转变为带有两个硬件线程的系统,然后再根据需要启用保留的硬件线程。某些情况下,在调度大量试图并行地运行代码的软件线程的时候,Core Parking可能会引入额外的延迟。因此,在测量并行性能时,一定要考虑可能带来的延迟。

读书导航