LeMaker Guitar:CPU 动态调频

From BananaPro/Pi
Jump to: navigation, search
This page is a translated version of the page LeMaker Guitar:CPU frequency scaling and the translation is 100% complete.

Other languages:
English • ‎中文(简体)‎

介绍

根据不同的需求,LeMaker Guitar能够调整频率,使即性能高又能耗低,这是非常重要的。CPU调频起到了非常重要的作用。时钟频率越低,设备运行速度越慢,功耗越低。CPU内核电压值依赖时钟频率,时钟频率和电压值之间存在一种映射关系,这种关系被称为defs_table。 仅定义一个CPU频率/电压映射集合和最大/最小值是不够的,也需要在它们之间切换的管理策略。cpufreq管理器(cpufreq governors)负责管理这些策略。LeMaker Guitar支持Linux内核CPU内核调频,你可以使用如下命令查看所有调频管理模式和dvfs_table映射表。

查看可用主频:

cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
408000 720000 900000 1104000 1308000

查看当前主频:

cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq
900000

查看可用调频模式:

cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
conservative ondemand userspace powersave interactive performance

ondemand: CPU根据当前负荷设置CPU频率。为了达到这个目的,CPU必须能够快速切换频率。

conservative: “conservative"模式非常类似于”ondemand”,根据CPU的当前负荷设置CPU的频率,最大的不同在于当CPU负荷发生变化时,CPU的频率逐步的提升或降低,而不是直接跳到最高值。这种模式适合于电池供电情况下。

userspce: “userspace”模式允许用户和任何以root权限运行的程序,通过创建一个"scaling_setspeed"的sysfs文件来设定CPU频率。

powersave: "powersave"模式在最小频率和最大频率范围内,设置CPU的频率为最小值。

performance: "performance"模式在最小频率和最大频率范围内,设置CPU的频率为最大值。

锁频

调频模式和CPU频率的范围都会对电量消耗、性能产生重要的影响。可以通过下面方式锁定CPU频率:

echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
echo 900000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
echo 900000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
echo 35 > /sys/devices/system/cpu/cpufreq/ondemand/up_threshold
echo 10 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_down_factor
echo 1 > /sys/devices/system/cpu/cpufreq/ondemand/io_is_busy

查看设置结果:

cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
900000
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
900000
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq
900000
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
ondemand

CPU频率调节的配置文件默认保存在/etc/rc.local,系统开机将会执行这个脚本 文件。

cat /etc/rc.local
!/bin/sh -e
 
echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
 
echo 45 > /sys/devices/system/cpu/cpufreq/ondemand/up_threshold
echo 15 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_down_factor
echo 1 > /sys/devices/system/cpu/cpufreq/ondemand/io_is_busy
 
exit 0

参考

1、https://www.kernel.org/doc/Documentation/cpu-freq/governors.txt


另请参阅