调节ODROID-U3的CPU频率(Linux)

先提一下背景:我的ODROID-U3(跑的Linux)在用XBMC播放视频的时候,容易因为CPU一直较高负载而吃掉太多电压,导致USB接口供电不足致使移动硬盘“掉线”。今天试验了一下发现把CPU频率从默认的1.7GHz降到1.2GHz之后,移动硬盘没有再掉链子了,而且XBMC依然能流畅播放1080P视频。

懒得安装那些专门调节CPU的工具了,直接上最原始的办法(最原始但也最有效)。理论上对所有Linux发行版、所有架构都一样。

只需一条命令:

su -c "echo 1200000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq"

就把最高频率限制到了1.2GHz了,能够设置的最高频率也可以通过同样简单的一条命令来查看:

cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq

那为啥四核CPU(ODROID-U3是四核Samsung Exynos 4412)只需要设置一个cpu0的频率就行了呢?因为/sys/devices/system/cpu/cpu0/cpufreq/affected_cpus是0, 1, 2, 3,也就是设置cpu0就会同时影响四个核。我刚刚检查了一下,我的笔电上AMD的四核羿龙CPU的affected_cpus只有自己,cpu0只影响cpu0,cpu1只影响cpu1,以此类推。这种情况下,最好一次把四个核心的频率同时都给调整了,以免频率不同对CPU造成不良影响。

又为了偷懒,随便写了一个简单的bash脚本来干设置CPU频率的活,有兴趣的可以点此从GIST拿走。脚本使用方法很简单:

./setcpu.sh -a 最高频率 -i 最低频率 

如果不指定参数,最高频率默认是设置到1.7GHz,最低频率默认设置到CPU允许的最低频率(cpuinfo_min_freq)。执行完成后脚本会将设置生效的最高频率和最低频率打印到终端。

注意:这个脚本只更改cpu0的频率,如果你的affected_cpus不包含全部核心的话,你得修改一下脚本,把每个cpu的scaling_max_freq和scaling_min_freq都变更了。

预计下一篇博客要差不多夏天才会写了吧,最近实在太忙……学业好重,又要准备找工作,又在写书(预告一下,关于Qt5的):/

4 responses to “调节ODROID-U3的CPU频率(Linux)”

  1. CyberThink avatar

    除了CPU频率以外,还有什么是需要被优化为“省电模式”的?
    Windows下有自带的不同电源模式,Linux(主要Debian系)下有没有类似的工具?

    1. librehat avatar

      主要不就是CPU频率么,GPU有的也是可控制的。cpufreq

  2. 袅残烟 avatar

    我的是树莓派B+,运行Arch,直接修改的/boot/config.txt ,修改armfreq就好了。
    http://www.pcwuyu.com/index.php/default/overclock-for-raspberry-pi.html

    1. librehat avatar

      你那样是重新启动才能生效吧?我说的这个办法执行后立即生效