Core Parking是一項Windows內(nèi)核電源管理和內(nèi)核調(diào)度技術(shù),設(shè)計這一項技術(shù)的目的是為了增強(qiáng)多核系統(tǒng)上的能源功效。Core Parking可以不斷地跟蹤每一個硬件線程相對于其他硬件線程的工作負(fù)載,并能決定將某些硬件線程進(jìn)入睡眠模式。
Core Parking技術(shù)能夠根據(jù)工作負(fù)載動態(tài)調(diào)節(jié)正在使用的硬件線程的數(shù)目。當(dāng)一個硬件線程的工作負(fù)載低于某一個閾值時,Core Parking算法會通過暫停系統(tǒng)中的一些硬件線程的方式減少硬件線程數(shù)目。為了使得這個算法高效,在調(diào)度軟件線程的時候,內(nèi)核調(diào)度器會給未暫停的硬件線程分配較高的優(yōu)先級。內(nèi)核調(diào)度器會試圖讓暫停的硬件線程閑置,這樣就可以將它們轉(zhuǎn)到低功耗的閑置狀態(tài)了。
在包含HT技術(shù)的微處理器系統(tǒng)中,Core Parking會智能地將任務(wù)在線程之間進(jìn)行調(diào)度,而這些線程運(yùn)行在同一個物理內(nèi)核中的多個硬件線程上。這種調(diào)度決策可以降低電源消耗。
Windows Server 2008 R2支持完整的Core Parking技術(shù)。不過,Windows 7也采用了Core Parking算法和基礎(chǔ)結(jié)構(gòu),用于在包含HT技術(shù)的微處理器上均衡硬件線程的處理器性能。圖1-7展示的 Windows Resource Monitor顯示了8個硬件線程的活動,其中有4個硬件線程暫停了。
無論有多少個暫停的硬件線程,.NET Framework 4的函數(shù)所返回的硬件線程數(shù)仍然是總硬件線程數(shù),而不僅僅是未暫停的硬件線程數(shù)。Core Parking技術(shù)并沒有限制進(jìn)程運(yùn)行軟件線程的硬件線程數(shù)。
在某些特定的工作負(fù)載下,如果工作負(fù)載很低,那么帶有8個硬件線程的系統(tǒng)可以將自己轉(zhuǎn)變?yōu)閹в袃蓚€硬件線程的系統(tǒng),然后再根據(jù)需要啟用保留的硬件線程。某些情況下,在調(diào)度大量試圖并行地運(yùn)行代碼的軟件線程的時候,Core Parking可能會引入額外的延遲。因此,在測量并行性能時,一定要考慮可能帶來的延遲。