CPU Idle狀態可以分為很多種Idle狀態,在CPU準備進入idle的時候在很多狀態中進行選擇以達到省電的目的。
CPUIDLE sysfs:這部分向用戶層提供CPUIDLE的相關節點,以提供信息給用戶。 在/sys/devices/system/cpu/cpuidle下可以查到當前的CPUIdle的驅動的名字和governor的種類。 在/sys/devices/system/cpu/cpu0/cpuidle下可以看到幾種CPUIDLE狀態,在相應的目錄下有lantency,名字等信息。
CPUIdle govenor:根據latency,residency等,根據某種算法選擇一個合適的CPUIDLE狀態。 比如cpuidle governor里邊的menu algorithm會根據之前的idle time的統計結果來預測接下來的idle time,并從中選擇合適的idle state。
以S5PC210為例,它有以下幾種CPUIdle狀態
NORMAL : IDLE (Wait For Interrupt)AFTR : ARM Off and TOP RunningLPA : Low Power AudioDEEP-STOPSLEEP每種狀態關閉的模塊以及latency,power saving也是各有不同。



以下以menu governor為例說明 在眾多Idle state中選擇合適的idle state必須要考慮
Energy break event pointPerformance impactLatency tolerance(from pmqos infrastructure) ?1.target_residency
進入每個IDLE mode的時候,都是會產生energy cost所以在”target_residency”里寫入進入每個IDLE state所需的energy cost。governor->select()選擇合適的idle state所要滿足的條件為 target_residency > PRedicted idle duration的時候,governor->select()不會選擇這個IDLE State!!這里predicted idle duration表示預測的下一個idle state可以持續的時間2.correction_factor[] 為了提交預測下一個idle state所停留的時間而導入的內容
新聞熱點
疑難解答