设置CPU的频率 首先我们要修改governor的模式,但在修改前需要查下CPU支持哪些governor的模式
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
我用的是Nexus 4手机,所以有以下5个选择,其他的手机型号可能略有不同
interactive ondemand userspace powersave performance
这里performance表示不降频,ondemand表示使用内核提供的功能,可以动态调节频率,powersvae表示省电模式,通常是在最低频率下运行,userspace表示用户模式,在此模式下允许其他用户程序调节CPU频率。
在这里,我们将模式调整为“userspace”。
echo "userspace" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
然后我们对CPU的频率进行修改,CPU的频率不是可以任意设置的,需要查看scaling_available_frequencies文件,看CPU支持哪些频率。
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
从我的手机中可以获得以下的值
384000 486000 594000 702000 810000 918000 1026000 1134000 1242000 1350000 1458000 1512000
这里的频率是以Hz为单位的,我准备将cpu0设置为1.242GHz,那就将1242000写入scaling_setspeed即可。
echo "1242000" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed
设置好后,我们可以通过scaling_cur_freq文件查看当前这个核心的频率
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq
最后我们也可以设置下CPU的最大和最小频率,只需要将需要设置的频率值写入scaling_max_freq和scaling_min_freq即可
echo "1350000" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq # 设置最大频率
echo "384000" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq # 设置最小频率
这里要注意的是“最大值”需要 大于等于 “最小值”。
注意,这里设置的仅为某个CPU核心的频率,你需要对每个online的CPU核心都进行设置,同时以上对文件的修改均需要 root 权限。
通过减少online的核心数和限制CPU频率固然可以起到节省电量的目的,但是性能也是显著降低,所以需要做一个权衡。
转自:http://ju.outofmemory.cn/entry/140884