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