Interactive cpufreq governor

將將~慶祝明天是星期五(?)所以晚點睡好了,但不知道打不打的完就是了

今天來介紹kernel cpufreq governor,其實是寫給自己看的XD

(有錯誤煩請指正)

顧名思義就是負責管理cpu調頻的東西啦,控管cpu該不該升頻來提高performance、或是降頻來降低power consumption

常見的有powersave,performance,ondemand…blabla

目前配合EAS的cpufreq governor好像是叫schedutil,這個是以scheduler角度出發的governor,因為剛剛上述的cpufreq governor,都有個特性,就是需sampling loading,但問cpu loading還有誰能比scheduler清楚呢~~~目前這個應該有在pixel,pixel2上實現吧~~


但這不是今天的主角XD,今天主角是算是有點年紀又沒有很老的interactive、現在當今android的手機的都是這用這個governor

interactive模式跟他的前輩ondemand,conservative有幾分類似都是依照sampled loading來調整loading,interactive特性就是他升頻快、降頻慢。

timer_rate
在非idle的時候他會加快samling rate,預設為20ms,

min_sampling_rate:
但是降頻時間的則是看這個參數、預設則是80ms,至少要超過這個時間才會降頻,所以可以想像是個容易維持在高頻的governor

target_load
當超過target_load,interactive governor就會開始調整頻率,這邊的threshold被定義在這參數中,應該會是以個loading:frequency對應關係的數據呈現、而且通常這些數據應該是要呈現一個遞增的關係,畢竟越重的loading、才需要更高的時脈來工作

85 1000000:90 1700000:99

go_hispeed_load:
這是一個快速調整freq的機制、如果今天loading突然重到cpu要中風了(超過這個參數),就會直接跳到hispeed_freq這個頻率來因應很重的loading

hispeed_freq:
這個看code好像會被設定成policy->max,這樣好像沒有再升上去的必要(?)

above_hispeed_delay
那如果超過還是loading很重咧,要是持續的時間超過這個參數的話,就會繼續再往上升,直到最高頻

 

好了兩點半差不多可以睡了XD,下次再有機會補充(?)
是說我看HIDL好像蠻多人會看的、應該有機會再寫詳細點(?)
下次可能會講ftrace、cpu on/off的flow吧吧XDD 還是該介紹schedutil(一個跳tone)