CPU降频实现原理与试验数据

CPU降频实现原理与试验数据

1. CPU降频实现原理

CPU降频主要是通过控制CPU的工作模式和工作频率来达到的。

1.1 CPU工作模式调整

Android的CPU工作模式是基于linux的,在androidL上支持的CPU工作模式有:ondemand、userspace、powersave、interactive和performance。

1,performance :顾名思义只注重效率,将CPU频率固定工作在其支持的最高运行频率上,而不动态调节。

2,powersave:将CPU频率设置为最低的所谓“省电”模式,CPU会固定工作在其支持的最低运行频率上。因此这两种governors 都属于静态governor,即在使用它们时CPU 的运行频率不会根据系统运行时负载的变化动态作出调整。这两种governors 对应的是两种极端的应用场景,使用performance governor 是对系统高性能的最大追求,而使用powersave governor 则是对系统低功耗的最大追求。

3,Userspace:最早的cpufreq 子系统通过userspace governor为用户提供了这种灵活性。系统将变频策略的决策权交给了用户态应用程序,并提供了相应的接口供用户态应用程序调节CPU 运行频率使用。也就是长期以来都在用的那个模式。可以通过手动编辑配置文件进行配置

4,ondemand 按需调节cpu频率,不操作手机的时候控制在最低频率,滑屏或进入应用后会迅速提升至最高频率,当空闲时迅速降低频率,性能较稳定,但因频率变化幅度过大,省电方面只有一般的水平。是一种在电池和性能之间趋向平衡的默认模式,但是对于智能手机来说,ondemand在性能表现方面略有欠缺。

5、interactive:和ondemand相似,规则是“快升慢降”,注重响应速度、性能,当有高需求时迅速跳到高频率,当低需求时逐渐降低频率,相比ondemand费电

现在我们手机使用的模式是interactive,频率会自动调整,“快升慢降”,比较符合手机操作行为,手机需要很快上升到最高频率,操作才会流畅,当你不用的时候频率会缓缓下降,也能一定程度达到省电效果。

下面我们就来看看实际是如何调整CPU的工作模式的

adb shell
//得到CPU支持的工作模式,此处为ondemand userspace powersave interactive performance
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
//设置工作模式
//echo后面接你想要设置的工作模式,scaling_governor是当前的cpu工作模式
echo interactive > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

但是在user版本,该设备节点属于root用户,只有root权限才能访问,android拥有的最高权限就是system权限

-rw-r--r-- root     root         4096 2015-01-01 08:00 scaling_governor

故我们需要在init.rc中修改该设备节点的权限,改成system可以读写

//init.rc
chown system system /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
chmod 0660 /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

这样系统级别的应用就可以访问

1.2 cpu频率调整

首先我们必须知道CPU可以支持那些频率设置

adb shell
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
//上面指令返回cpu支持的频率设置988000 923000 858000 793000 637000 494000 364000 221000

接着就是进入cpu的用户模式下进行设置

//这里是进入cpu的用户模式
echo userspace > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

//下面是分别设置最高最低cpu频率,还有就是当前cpu频率
echo 858000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
echo 858000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
echo 858000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed

2. cpu调频实验数据

下面就是cpu调频对于实际手机使用的实验数据。

2.1 cpu调频实验数据

测试环境如下:

安装安兔兔v5.6.1

1、 开启飞行模式,将亮度调整到最低

2、 设置cpu工作模式

3、 待电流稳定后进行antutu评测

4、 记录整个antutu评测的平均电流、时间、得分

2.1.1 interactive模式

CPU降频实现原理与试验数据_第1张图片
图2.1 CPU处于interactive模式

CPU处于interactive模式下平均电流 0.349 A,安兔兔得分15276,耗时6.583 min

2.1.2 performance模式

CPU降频实现原理与试验数据_第2张图片
图2.2 CPU处于performance模式

CPU处于performance模式下平均电流 0.345 A,安兔兔得分15959,耗时6.316 min

2.1.3 powersave模式

CPU降频实现原理与试验数据_第3张图片
图2.3 CPU处于powersave模式

CPU处于powersave模式下平均电流 0.143 A,安兔兔得分5610,耗时19.166 min

2.1.4 CPU模式实验数据总结

1、CPU处于interactive模式下平均电流 0.349 A,安兔兔得分15276,耗时6.583 min

2、CPU处于performance模式下平均电流 0.345 A,安兔兔得分15959,耗时6.316 min

3、CPU处于powersave模式下平均电流 0.143 A,安兔兔得分5610,耗时19.166 min

由上面数据可以知道:

  • interactive和performance对于手机性能没有很大影响,对于手机电量损耗也几乎一致,performance运行速度会比interactive稍微快一点点(运行整个安兔兔时间少一点)。
  • powersave模式下手机电量消耗会小很多,但相应的cpu处理时间也会长很多,导致运行整个安兔兔的时间变长很多(是原来3倍左右),手机性能也大大降低

2.2 CPU频率实验数据

测试环境如下:

安装安兔兔v5.6.1

1、 开启飞行模式,将亮度调整到最低

2、 设置cpu频率

3、 待电流稳定后进行antutu CPU运算测试

4、记录antutu CPU运算测试时的工作电流

2.2.1 cpu处于988000 KHz

CPU降频实现原理与试验数据_第4张图片
图2.4 CPU处于988000 KHz

cpu处于988000 KHz下平均电流 0.578 A

2.2.2 cpu处于923000 KHz

CPU降频实现原理与试验数据_第5张图片
图2.5 CPU处于923000 KHz

cpu处于923000 KHz下平均电流 0.522 A

2.2.3 cpu处于858000KHz

CPU降频实现原理与试验数据_第6张图片
图2.6 CPU处于858000 KHz

cpu处于858000 KHz下平均电流 0.492 A

2.2.4 cpu处于793000 KHz

CPU降频实现原理与试验数据_第7张图片
图2.7 CPU处于793000 KHz

cpu处于793000 KHz下平均电流 0.460 A

2.2.5 cpu处于637000 KHz

CPU降频实现原理与试验数据_第8张图片
图2.8 CPU处于637000 KHz

cpu处于637000KHz下平均电流 0.411 A

2.2.6 cpu处于494000 KHz

CPU降频实现原理与试验数据_第9张图片
图2.9 CPU处于494000 KHz

cpu处于494000 KHz下平均电流 0.374 A

2.2.7 cpu处于364000 KHz

CPU降频实现原理与试验数据_第10张图片
图2.10 CPU处于364000 KHz

cpu处于364000 KHz下平均电流 0.339 A

2.2.8 cpu处于221000 KHz

CPU降频实现原理与试验数据_第11张图片
图2.11 CPU处于221000 KHz

cpu处于221000 KHz下平均电流 0.088 A

2.2.9 CPU频率实验数据总结

CPU降频实现原理与试验数据_第12张图片
表2.1 CPU频率实验数据

由上面数据可以知道:

  • 手机功耗随着CPU频率下降而下降

3. cpu调频实现必要性

由上面实验数据得到,cpu在powersave模式下是可以降低很多功耗(是默认interactive的40%左右),但是降低频率会导致系统变慢(大概是默认interactive的3倍左右),故如不是必要,不建议采取此操作,可以将此行为内置入最高级别的省电模式中去。

你可能感兴趣的:(功耗相关)