none
人們長期的渴望,但一直未能實現的線緒調度優化 RRS feed

  • 一般討論

  • 先不提對AMD的Module化線緒調度優化最終有沒有被實現(這不是肉眼可見,而且工作管理員裏CPU圖表那個只不過是Core Parking效果)
    昨日看見這篇新聞“微軟開發者解釋為什麼Windows內核落後於Linux”後,再次不禁忍不住要抱怨下系統的線緒調度。(現在再不提起,微軟可能就會打算拖到Win9或更後實現)

    XP到Windows 8,系統的線緒調度機制感覺一直沒有怎麼大變化
    如果觀看工作管理員裏的CPU使用率圖表的工作量分佈,在關閉有如“外掛般”存在的Core Parking後,原形畢露,變化明顯不大

    現在比較新型的處理器皆支持在“滿足一定條件後即可在超過額定頻率以上運作”的超頻模式,即 Intel的Turbo Boost 和 AMD的Turbo CORE。
    這些處理器在Windows 8推出前皆已存在坊間也一直存在優化訴求的聲音
    我們知道的最基本條件就是“越少處理器核心被激活運作頻率則越高”,而且當激活核心數越少,理論上也可以減少耗電。

    例如SunSpider JavaScript Benchmark,系統預設的成績就比手動勾選單個處理器(processor affinity)為低。
    這是因為工作量在處理器之間遊來遊去,眾多核心數被激活,所以運作頻率比單個處理器時候為低。

    系統的線緒調度原理基本就是優先將“新工作”分配給空閒/低佔用的處理器,這是為了顧及系統反應和延遲。
    可以參考系統對SpeedStep/PowerNow等“處理器升頻機制”的說明,我認為原理是差不多的,說明大約是“超過某過忙碌閾值,即提升處理器運行效能狀態”,這個“忙碌”應該就是指“延遲”。

    最佳的例子就是視頻播放,明明CPU使用率很低使用最低頻率即可滿足播放需求但是系統偏要提高處理器頻率運行,以降低每幀畫面所用的繪畫時間。
    即使視頻是以60fps規格全速播放,系統性能只需滿足每幀播放在16.6ms程度之內完成即可,何況主流視頻規格皆是30fps以內,這更可放寬到每秒33.3ms。
    每幀處理時間在2ms、5ms、甚至10ms也沒關係,但系統偏偏要將每幀降低至零點幾微秒,這是不是又是一種浪費呢?

    將多個軟件的工作量堆放在同一處理器會降低各自的反應?將多線緒軟件的線緒堆在同一處理器核心會增加線緒間同步鎖開銷?
    微軟需要明白,只要不是關鍵任務或有特殊需求,無視一些體感不到”的延遲性能損失在某些情況下是可以接受的

    先不說這樣做可以節能,最直接的是Turbo Boost 和 Turbo CORE皆可受惠,提高“被使用”的機會。

    運作方式也可以很容易理解
    我們可以手動勾選單個處理器親和性(即processor affinity 或 處理器關聯性),當單個處理器使用率達到100%被佔用,即增加勾選多一個處理器,如果再次被近滿載佔用則如法類推,直至總使用率不再增加。
    即使是常人也能想到的機制,為什麼微軟就做不到呢?

    如果各位有留意時事,有留意到Blue的新聞,應該知道Blue的“電源選項”會多出一個“Processor performance latency sensitivity hints”
    (題外:自古視窗形象就是藍天,win9x開機圖背景是藍天,XP桌壁也是藍天,死機BSOD背景一樣是藍色。我覺得下次Blue升級將遍佈/打通手機、平板、個人電腦領域,Blue的意境是“一片藍天”之意,但竟然沒有任何媒體在第一時間和我有一樣想法…)

    其實這個選項在原始的Win8已經存在,默認設置是除“省電”計劃是關閉外,另外兩個皆為開啟。
    (題外:在Blue的ScreenShot裏還有其他程度可選,可能因為那個是完成版,這個是半成品關係…未來如果能像手機7.0→7.5一樣免費更新,那麼8.2、甚至8.5則稱作改進版吧…
    總體來說這個改變是好的,在Win9時出個8.5,Win10時就出個9.5,讓新舊系統間有相似連續性,維持這樣的半代更新方式,不再是客戶給一次銀彈後,系統就沒有後續改進。經常用的“理由”不就是會改變系統體驗/行為,放任不改進,好拖放到下一代OS裏去…)


    我看見系統線緒調度機制終於有忽略“延遲”可供選擇,滿心歡喜微軟肯為現代處理器的Turbo Boost/Turbo CORE機制和節能方面優化,系統將會“智能”將工作量堆放到更少核心上處理,不再以體感不到的“延遲”為優先。
    但可惜呢,開啟或關閉都沒有任何重大區別,系統一樣不會智能的堆切工作量、低頻率即可完成的工作量還是一樣升頻。微軟啊,可以告訢我這個選項究竟是幹什麼嗎,無鬼用啊,“代號Blue的升級能真的給個實用點的選項不

    最近某新聞說微軟生在天堂,最近終於肯吸吸地氣,用戶的囗氣請也吸…(馬上被衛生部門踢飛)

    題外:Win8對於Turbo Boost和Turbo CORE其實還新增了一個新的效能提升模式(高能率運作模式),可能可以更高效率的使用,但默認三個電源計劃都不會使用,因為需要處理器支持… (Turbo Boost 3.0?或Turbo CORE 4.0?)

    我的舊世代處理器在選擇高效運作模式後並不能Turbo升頻,打算六月入手新處理器的兄貴,可能可以嘗試下可行不~
    Haswell已出來啦,有沒兄貴可報告一下高效運作模式可使用否

     

     

    PS:我是普通用戶啊,這些不過是經驗與網上知識的歸立

    • 已移動 AChange 2013年5月14日 上午 01:51
    • 已編輯 OveDR 2013年6月12日 下午 12:36 有沒兄貴可報告Haswell可使用否
    2013年5月13日 上午 02:05

所有回覆

  • 之後就是開啟小白助人模式,如果連登錄也不會匯入的話便是你的問題

    “Processor performance latency sensitivity hints”

    Windows Registry Editor Version 5.00

    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\PowerSettings\54533251-82be-4824-96c1-47b60b740d00\0822df31-9c83-441c-a079-0de4cf009c7b]
    "Attributes"=dword:00000000

    “Processor performance boost mode”

    Windows Registry Editor Version 5.00

    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\PowerSettings\54533251-82be-4824-96c1-47b60b740d00\be337238-0d82-4146-a960-4f3749d470c7]
    "Attributes"=dword:00000000

    2013年5月13日 上午 02:23
  • 以節約和能效為主的線緒調度的簡便式圖與解

    PS:不同顏色代表不同線緒的大意圖,灰色就看作是Core Parking吧
    PS:圖是小畫家級亂畫,無對齊,比例也沒做對,將就看

    省電式的線緒調度只需要新增三個機制
    0)線緒調度首先必需學會要有理無理都將工作量向前堆

    1)一個單線緒超過單核心使用率如80%,作出處理器升頻。處理器整體使用率超過如80%,升頻。

    結果:可以更有效率地發揮處理器 多段頻率/電壓 的能效

    2)首核心使用率超過如80%,才考慮將工作量解放到另一個處理器核心。(超過P0核心80%使用率,即解放P1核心。當超過P0+P1雙核心整體80%使用率時,即解放P3核心…如此類推)
    當處理器核心全部運作,暫時停止工作量向前堆的動作。

    同製程同架構在大多數情況,4個1GHz處理器核心會比1個4GHz處理器核心來的省電

    結果:可以更有效率地應用於現在的多核心處理器。不會因為存在例如4個50%佔用的單線緒,而錯誤的提升處理器頻率,浪費能效

    這是需要零機一發才能夠思考到的東西嗎
    不,你也是想過的,大家都一定想到過類似的,只是就沒有任何人去實現

     

    Windows8.0/8.1有被使用在平板、行動電腦等環境,電池耗電測試也經常存在媒體播放環節,微軟如肯在Win8.1裏增加更為省電的線緒調度方式(例如我的方案),電池使用時間將會更好看。
    • 已編輯 OveDR 2013年6月12日 下午 12:49 增加總結
    2013年5月13日 上午 07:37
  • 之後就是開啟小白助人模式,如果連登錄也不會匯入的話便是你的問題

    “Processor performance latency sensitivity hints”

    Windows Registry Editor Version 5.00

    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\PowerSettings\54533251-82be-4824-96c1-47b60b740d00\0822df31-9c83-441c-a079-0de4cf009c7b]
    "Attributes"=dword:00000000

    “Processor performance boost mode”

    Windows Registry Editor Version 5.00

    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\PowerSettings\54533251-82be-4824-96c1-47b60b740d00\be337238-0d82-4146-a960-4f3749d470c7]
    "Attributes"=dword:00000000

    感謝分享,服用之後有覺得系統反應變得更迅速了 ^^
    2013年7月10日 上午 02:37