通過動態改變CPU電壓,可以調整CPU主頻。
通過改變時鐘倍數可以動態改變CPU時鐘頻率。
一些具有CPU主頻率時鐘倍數可調能力的處理器,能夠在不同的主頻率和工作電壓之間動態切換;而不需要核心或者使用者介入。
術語定義
策略 (Policy) : 在系統中,使用者只能選擇主頻上限和下限,以及是否希望激進的省功耗模式或者更好的處理器效能模式。
管理器(Governor): 在所有的其他cpufreq實現中, 仍然需要設定主頻率邊界。Governor決定了處理器以何種速度運行在頻率限制之內。
如何調整CPU主頻策略或速度
sysfs檔案系統是預設控制介面。
一般第一個處理器核的cpufreq控制結點位於 /sys/devices/system/cpu/cpu0/cpufreq/
cpuinfo_min_freq: 該檔案指定了處理器能夠啟動並執行最低工作頻率 (單位: 千赫茲)
cpuinfo_max_freq: 該檔案指定了處理器能夠啟動並執行最高工作頻率 (單位: 千赫茲)
cpuinfo_transition_latency: 該檔案定義了處理器在兩個不同頻率之間切換時所需要的時間 (單位: 納秒)
scaling_driver: 該檔案顯示該CPU正在使用何種cpufreq driver
scaling_available_governors: 該檔案顯示當前核心中支援的所有cpufreq governor類型
scaling_governor: 通過echo命令,能夠改變當前處理器的governor類型
cpuinfo_cur_freq: 當前cpu正在啟動並執行工作頻率
scaling_available_frequencies: 所有支援的主頻率列表 (單位: 千赫茲)
scaling_min_freq/scaling_max_freq: 顯示當前policy的上下限 (單位: 千赫茲)
需要注意的是,當改變cpu policy時,需要首先設定scaling_max_freq, 然後才是scaling_min_freq
affected_cpus: 需要軟體協調頻率的CPU列表
related_cpus: 需要軟體或者硬體來協調頻率的CPU列表
scaling_driver: cpufreq控制的硬體驅動
scaling_cur_freq: 被governor和cpufreq核決定的當前CPU工作頻率。該頻率是核心認為該CPU當前啟動並執行主頻率
bios_limit: 如果BIOS告知作業系統限制某一cpu到一個低頻率,使用者能夠從此檔案中讀取其所支援的最大頻率。
scaling_setspeed: 如果使用者選擇了“userspace” governor, 那麼可以設定cpu工作主頻率到某一個指定值。 只需要這個值在scaling_min_freq 和 scaling_max_freq之間即可。