|
本文檔以 iMX6UL 為例,簡單介紹 cpufreq 的 5 種模式。 在 imx6ul 的 menuconfig 中,進入 CPU Power Management ---> CPU Frequency scaling ---> Default CPUFreq governor (ondemand) ---> 中,如下圖所示,可以看到有 5 個選項。 這 5 個選項,可以將 cpu 的頻率設置為不同的 管理模式,默認設置的是 ondemand 模式。
cpufreq 是一個動態(tài)調(diào)整 cpu 頻率的模塊,系統(tǒng)啟動時會生成 “/sys/devices/system/cpu/cpu0/cpufreq/ ”,如下圖所示,是 imx6ul 文件上的 cpufreq 文件夾。
以上參數(shù)可以通過 cat 命令,例如: “cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor”可以獲取當前 CPU 頻率的模式。作者機器當前模式是“ondemand”,也就是動態(tài)調(diào)頻模式。
其它參數(shù): cpuinfo_cur_freq 為當前頻率; cpuinfo_max_freq 為最大頻率; scaling_min_freq 為最小頻率; scalin_governor 為當前模式。 在動態(tài)調(diào)頻模式下,state 下的 time_in_state 可以查詢 cpu 整個運行周期中,在不同頻 率下運行時間的比例。 以下簡單介紹各種模式,用戶可以根據(jù)需求,在不同模式下運行。 performance 模式:將 CPU 頻率固定工作在其支持的最高運行頻率上,而不動態(tài)調(diào)節(jié)。 powersave 模式:將 CPU 頻率固定在“省電”模式,也就是最低頻率。 以上兩種,一種是極端效率,一種是極端低功耗。 Userspace 模式:用戶可以在用戶態(tài)調(diào)整頻率,用戶在應用或者在系統(tǒng)啟動階段,可以進 入這種模式,來設置頻率。 ondemand 模式:這種模式會依據(jù)需求來調(diào)整頻率,例如 ul 有三種頻率:198000、 396000 和 528000,在有大量計算量的情況下,會立即達到最高頻率,在運算完成就會立即 回到最低頻率。 conservative 模式:和 ondemand 對比,這種模式下,系統(tǒng)會平滑地調(diào)整 CPU 頻率, 頻率的升降是漸變式的,而不是在大量計算到來就立即進入最高頻率。 接著可以嘗試配置這幾種模式,驗證一下。 測試 Userspace 模式,使用“echo userspace > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor”命令可以進入 Userspace 模 式,這樣就可以在用戶態(tài)調(diào)整頻率,使用命令“echo 528000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed”可以配置為 528000,如下圖 所示。
測試 powersave 模式,使用命令“echo powersave > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor”配置為最低功耗模式。然后 就能發(fā)現(xiàn)頻率降低到最低。
測試 performance 模式,使用命令“echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor”,如下圖所示。配置為最高 頻率模式,理所當然頻率九尾最高 528000 了。
測試下 ondemand 動態(tài)調(diào)頻模式,如下圖所示,可以使用命令“cat /sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state”查看各種頻率運行占用的時 間長度。作者因為調(diào)整過多次頻率,528000 看起來比例較高,實際上默認這種系統(tǒng),不運行 程序,大部分時間都是 198000 頻率。
|