CPU調速器Governor說明

From:  http://android.zone.it.sohu.com/thread-11841439-1-1.html


現在很內核都會增加新的CPU調速器,很多人不知道內核中的CPU調速器有什麼用,
下面給大家詳細介紹一下CPU調速器Governor說明:

什麼是Governor?
→Android的CPU 的頻率並不是一成不變的,會因應程式所需而調整頻率,通常會視乎CPU Loading% 而升/降頻,在特定時間再檢查是否升/降。Governor就是默認的情景模式。

【ondemand】按需模式:
→按需調節cpu頻率,不操作手機的時候控制在最低頻率,滑屏或進入應用後會迅速提升至最高頻率,當空閒時迅速降低頻率,性能較穩定,但因頻率變化幅度過大,省電方面只有一般的水平。是一種在電池和性能之間趨向平衡的默認模式,但是對於智能手機來說,ondemand在性能表現方面略有欠缺。

【interactive】交互模式:
→和ondemand相似,規則是“快升慢降”,注重響應速度、性能,當有高需求時迅速跳到高頻率,當低需求時逐漸降低頻率,相比ondemand費電

【conservative】保守模式:
→和ondemand相似,規則是“慢升快降”,注重省電,當有高需求時逐漸提高頻率,當低需求迅速跳至低頻率。

【OndemandX】按需X模式:
→在Ondemand基礎上改進而來。關屏時手機進入睡眠狀態時,鎖定最高頻率頻率爲500Mhz

【Scary】膽小模式:
→基於Ondemand修改,CPU提升速度比ondemand慢,同時具有smartass的特點

【interactiveX】交互X模式:
→在interactive基礎上改進而來。關屏時手機進入睡眠狀態時,鎖定頻率爲最低值,同時在手機喚醒時能有更好的提升表現。比interactive更注重保護電池。

【Wheatley】惠特利模式:
→規則和Ondemand一樣,但是響應速度稍慢,比Ondemand省電

【hotplug】熱拔插模式:
→和ondemand模式差不多,當有高需求時直接跳到最高頻率,當需求見效時逐級降低頻率,但關屏時就單核低頻運行,省電。

【lionheart】獅心模式:
→基於conservative模式,但性能有所提高,增快了CPU的調整速度

【lulzactive】級別模式:
→在interactive基礎,根據負載逐級升高或降低頻率,每一級頻率有一個限制值,負載高於限制值就提高一級頻率,低於限制值就降低一級頻率。所以這個調速器在各個頻率上的停留時間都很短。這個調速器的特點是在各個頻率之間頻繁變動,但是運行於最高和最低頻的時間最多。

【smartass】聰明模式:
→是interactive和conservative的升級,根據資源使用智能提供一個適中的頻率,空閒時自動降頻,鎖屏時自動固定頻率。特色是鎖屏後非常省電。缺點是部分機型鎖屏一段時間後容易睡死。

【smartassV2】聰明2模式:
→smartass的升級版,平衡效能和耗電,升頻快,降頻慢,同時間亦會於鎖屏時將頻率降到最低,集成了休眠策略,不單單是指關了屏幕和開着屏幕的區別。

【smoothass】活躍模式:
→在smartass基礎上改進得來的,性能更高,調節速度更快,耗電少

【SavagedZen】平衡模式
→在smartass的基礎優化而來,同時注重電池和性能,使CPU達到一個更好的整體平衡

【BrazilianWax】巴茲拉模式:
→基本就和smoothass一樣

【Minmax】大小模式:
→基於conservative的優化版,類似smartassV2,速度性能最好,比smartassV2略微耗掉

【intellidemand】智能模式:
→可根據GPU使用情況來針對性調節cpu頻率,當GPU於重度使用時 ,所有動作都依照ondemand 不變。當3GP於閒置時,會自動限制cpu最高頻率,將CPU最高頻率鎖死於1.0Ghz以減少耗電。關屏時亦會視乎 GPU 情況而作出調整。

【Pegasusq】單控模式:
→源自三星獵戶座處理器的一個調速器,可以單獨調控單個CPU內核,理論上性能不錯也很省電。

【badass】分工模式:
一個新型的CPU調速器,只能用於多核CPU,可分開控制單個CPU內核,來分工完成不同的工作,並且跟着工作量的不同,分別調整單個CPU內核的頻率,從而提高性能,節省資源。這個模式現在好像只能用在特定修改的rom中

【performance】高性能模式:
→高性能模式,按你設定範圍的最高頻率運行,即使系統負載非常低cpu的頻率也爲最高。性能很好,因爲CPU本身不需要資源去調整頻率,但是電量消耗較快,溫度也高一些。

【powersave】省電模式:
→按設定最低頻率運行,日常沒有使用價值,除非配合setcpu情景模式,關屏睡眠時使用此調節模式,省電但系統響應速度慢。

【userspace】用戶模式:
→任何情況下都會控制CPU運行在配置的頻率範圍內,配置中的用戶自己添加的省電設置。在此情景模式下,降低CPU最大運行頻率可以延長電池待機時間,但同時也會降低機器的喚醒速度,建議最好不使用該選項。

【lagfree】無延遲模式:
→很少用的調速器,不緊不慢型,無論負載變化快慢與否,CPU都按一定的停頓時間逐級升高或降低頻率。

【lazy】懶惰模式:
→與 ondemand 相似,對於頻率上升和下降的響應都很遲緩,可以忽略掉部分迅速變化的頻率變化,優點是省電。

I/O調度模式:

(i/o即input/output的縮寫,關於數據的讀寫操作,不同進程請求數據的優先順序等等。
io調度模式比較複雜,我沒有具體測試,這裏僅對ray上出現的幾個模式做說明,部分參考xda、androidforums、wik1pedia、linuxarchive資料)

noop這個調度模式會把併到一個簡單的隊列裏。不適合有機械結構的存儲器,因爲沒有優化順序,會增加額外的尋道時間。屬於最簡單的一個調度模式,無視io操作優先級和複雜性,執行完一個再執行一個,如果讀寫操作繁多的話,就會造成效率降低。

anticipatory其實這個有點類似於pc硬盤的NCQ功能,執行有預測性的調度,看起來似乎可以提高效率,不過因爲它的預測機制會在進程將要結束一個讀寫操作時時開始準備下一個的預處理,所以會打亂系統正常的連續io調度,降低隨機存取效率。用的人很少,不推薦。

deadline顧名思義,用過期時間來排序io操作順序,保證先出現的io請求有最短的延遲時間,相對於寫操作,給讀操作更優先的級別。是比較好的一個調度模式。

cfq完全公平隊列,是anticipatory模式的替代品,沒有過多的做預測性調度,而是根據給定的進程io優先級,直接來分配操作的順序。這個模式在linux上表現良好,但也許並不是最適合android的io調度模式,太強調均衡,而降低了連續讀寫數據的性能。

vr具有和deadline相似的操作排序機制,有着最高的峯值讀寫速度,但是性能比較不穩定,也就是說可能跑出最高的分數,但是也會出現最低值。

sio雖然基於deadline,但是它和noop一樣,不會對io操作進行排序,所以有着noop那樣快速的存取速度,但並沒有過多優化io操作。如果不喜歡noop完全不參與調度,也可以選擇這個。

Row
顧名思義ROW=Read over write
(這個調度器的解釋可以總結爲:最大限制減少IO響應時間,並且重排執行操作,直接進行讀寫操作,給予IO最高優先值。在移動設備中,它將不會在桌面上有儘可能多的並行線程。通常它是一個單一的線程或最多2個同時工作的線程讀寫。有利於閱讀的請求通過寫入讀取的延遲大大降低。比deadline好用,但是如果線程過多有可能會帶來瞬間卡頓)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章