DVFS使用参考
1. 概述¶
本文档介绍了SigmaStar平台上DVFS功能的使用方法。DVFS (Dynamic voltage and frequency scaling),即动态电压频率调整,指的是根据实际需要动态调整CPU的频率和电压,以达到提升性能或节省能耗的目的。
2. 配置说明¶
在Linux中需要开启如下配置来使能DVFS功能:
SSTAR_CPU_FREQ:
Symbol: SSTAR_CPU_FREQ [=y] Type : tristate Defined at drivers/sstar/cpufreq/Kconfig:1 Prompt: Sstar CPU frequency scaling driver Depends on: SSTAR_DRIVERS [=y] Location: -> Device Drivers -> Sstar SoC platform drivers (SSTAR_DRIVERS [=y])
SSTAR_VOLTAGE_IDAC_CTRL:
Symbol: SSTAR_VOLTAGE_IDAC_CTRL [=y] Type : bool Defined at drivers/sstar/voltage_idac/Kconfig:1 Prompt: Sstar Voltage IDAC Control Depends on: SSTAR_DRIVERS [=y] && SSTAR_GPIO [=y] && !SSTAR_VOLTAGE_CTRL [=n] Location: -> Device Drivers -> Sstar SoC platform drivers (SSTAR_DRIVERS [=y]) -> Sstar Voltage Control (SSTAR_VOLTAGE_CTRL [=n])
SSTAR_VOLTAGE_IDAC_STEP_BY_STEP:
Symbol: SSTAR_VOLTAGE_IDAC_STEP_BY_STEP [=y] Type : bool Defined at drivers/sstar/voltage_idac/Kconfig:6 Prompt: Sstar Voltage IDAC Control Step By Step Depends on: SSTAR_DRIVERS [=y] && SSTAR_VOLTAGE_IDAC_CTRL [=y] ontrol RL [=n] Location: -> Device Drivers -> Sstar SoC platform drivers (SSTAR_DRIVERS [=y]) -> Sstar Voltage Control (SSTAR_VOLTAGE_CTRL [=n]) -> Sstar Voltage IDAC Control (SSTAR_VOLTAGE_IDAC_CTRL [=y])
开启上述配置之后,Linux会生成如下路径和文件:
/ # ls -l /sys/devices/system/cpu/cpufreq/ total 0 -rw-r--r-- 1 root root 4096 Jan 1 00:02 cpufreq_testout drwxr-xr-x 3 root root 0 Jan 1 00:02 policy0 -rw-r--r-- 1 root root 4096 Jan 1 00:02 rosc_out -rw-r--r-- 1 root root 4096 Jan 1 00:02 rosc_threshold -r--r--r-- 1 root root 4096 Jan 1 00:02 sidd_out -rw-r--r-- 1 root root 4096 Jan 1 00:02 temp_adjust_threshold_hi -rw-r--r-- 1 root root 4096 Jan 1 00:02 temp_adjust_threshold_lo -r--r--r-- 1 root root 4096 Jan 1 00:02 temp_out
/ # ls -l /sys/devices/system/voltage/cpu_power/ total 0 drwxr-xr-x 2 root root 0 Jan 1 00:05 power -rw-r--r-- 1 root root 4096 Jan 1 00:05 scaling_voltage lrwxrwxrwx 1 root root 0 Jan 1 00:05 subsystem -> ../../../../bus/voltage -rw-r--r-- 1 root root 4096 Jan 1 00:05 uevent -r--r--r-- 1 root root 4096 Jan 1 00:05 vid_gpio_map -r--r--r-- 1 root root 4096 Jan 1 00:05 voltage_available -rw-r--r-- 1 root root 4096 Jan 1 00:05 voltage_current
3. 相关命令¶
3.1. 查看CPU频率¶
/ # cat /sys/devices/system/cpu/cpufreq/cpufreq_testout 1500000000
1500000000的单位是Hz,即表示当前CPU频率为1.5GHz。
3.2. 设置CPU频率¶
/ # echo userspace > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor / # echo 1200000 > /sys/devices/system/cpu/cpufreq/policy0/scaling_setspeed
如果要手动设置CPU频率,那么需要先将cpufreq的调频策略设置为userspace,然后再设置CPU频率。在上述命令中,1200000的单位是KHz,即表示将CPU的频率设置为1.2GHz。
3.3. 查看CPU电压¶
/ # cat /sys/devices/system/voltage/cpu_power/voltage_current 900 VOLTAGE_DEMANDER_INIT - VOLTAGE_DEMANDER_CPUFREQ 900 VOLTAGE_DEMANDER_TEMPERATURE - VOLTAGE_DEMANDER_USER -
900的单位是mV,即表示当前CPU电压为900mV。
3.4. 查看CPU温度¶
/ # cat /sys/devices/system/cpu/cpufreq/temp_out Temp=27
27的单位是摄氏度,即表示当前CPU温度为27摄氏度。