一、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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

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

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

故我们需要在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
  • 3

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

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
  • 1
  • 2
  • 3

接着就是进入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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

二、Cpu调频实验数据


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

2.1 cpu调频实验数据

测试环境如下:

安装安兔兔v5.6.1

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

2、 设置cpu工作模式

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

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

2.1.1 interactive模式


图2.1 CPU处于interactive模式

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

2.1.2 performance模式


图2.2 CPU处于performance模式

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

2.1.3 powersave模式


图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


图2.4 CPU处于988000 KHz

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

2.2.2 cpu处于923000 KHz


图2.5 CPU处于923000 KHz

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

2.2.3 cpu处于858000KHz


图2.6 CPU处于858000 KHz

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

2.2.4 cpu处于793000 KHz


图2.7 CPU处于793000 KHz

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

2.2.5 cpu处于637000 KHz


图2.8 CPU处于637000 KHz

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

2.2.6 cpu处于494000 KHz


图2.9 CPU处于494000 KHz

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

2.2.7 cpu处于364000 KHz


图2.10 CPU处于364000 KHz

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

2.2.8 cpu处于221000 KHz


图2.11 CPU处于221000 KHz

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

2.2.9 CPU频率实验数据总结


表2.1 CPU频率实验数据

由上面数据可以知道:

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

三、 cpu调频实现必要性


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

本文转自:https://blog.csdn.net/yun_hen/article/details/78133930?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522160142021419195264754196%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=160142021419195264754196&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_v2~rank_v28-2-78133930.pc_first_rank_v2_rank_v28&utm_term=CPU%E9%99%8D%E9%A2%91%E5%AE%9E%E7%8E%B0%E5%8E%9F%E7%90%86%E4%B8%8E%E8%AF%95%E9%AA%8C%E6%95%B0%E6%8D%AE&spm=1018.2118.3001.4187  略有整理

CPU降频实现原理与试验数据相关推荐

  1. android启动过程中cpu降频,android省电开发之cpu降频

    众所周知,在android系统的耗电量排行里,cpu的耗电占了比较大的一部分比例,也就是说,cpu的使用率和使用频率将直接或间接的影响电量的分配和使用,但很遗憾,android-sdk中没有为andr ...

  2. linux cpu降频怎么设置,Android系统修改CPU降频温度阈值、修改CPU关内核温度阈值的方法...

    1.关闭CPU降频温度: 目录:MSM8916.LA.1.1-PostCS-CT-CMCC-r113500.1srcLINUXandroidvendorqcomproprietarythermal-e ...

  3. CentOS7 CPU降频

    CentOS7 CPU降频 CPU做为能耗很高的硬件,最近几年厂商在节能方面做了很多处理,在服务器运行时,基于负载情况可调节成节能模式,节省电能,副作用是CPU的频率会降低,导致应用程序性能降低. C ...

  4. 成功解决ThinkPad T14 高负载下CPU降频问题

    本人机器是ThinkPad T14 , CPU是 Intel i5-10210U,随着气温的升高,发现机器越来越卡,特别是在运行大型软件和处理大型文档的时候,看了下任务管理器,高负载时CPU不仅没有睿 ...

  5. 【转】cpu降频问题

    https://www.cnblogs.com/276815076/p/6477562.html cpu降频问题 cpu做为能耗很高的硬件,最近几年厂商在节能方面做了很多处理,在服务器运行时,基于负载 ...

  6. android省电开发之cpu降频

    众所周知,在android系统的耗电量排行里,cpu的耗电占了比较大的一部分比例,也就是说,cpu的使用率和使用频率将直接或间接的影响电量的分配和使用,但很遗憾,android-sdk中没有为andr ...

  7. Dell g7 设置电源计划对 cpu 降频

    原文链接: Dell g7 设置电源计划对 cpu 降频 上一篇: dell g7 重装win10 下一篇: weakMap 和 map 的垃圾回收对比 这款电脑散热太难受了,尤其是cpu满载的时候, ...

  8. 小新pro16使用氮化镓120WPD充电头导致CPU降频的解决方案

    最近刚买了倍思氮化镓120w充电头,我去官网看了一下小新pro16是支持type-c pd100w,但是刚用一天,就发现,小新pro16使用氮化镓PD充电头时,CPU降频十分严重,大概3.2G降到了0 ...

  9. android 避免cpu降频,[RK3288][Android6.0] 调试笔记 --- CPU温度降频控制

    rk3288平台关于温度调节cpu频率有个bug. 在rk3288.dtsi中,有: temp-limit-enable = <1>; target-temp = <80>; ...

最新文章

  1. oracle em 性能点不进,oracle em节点启动不成功问题处理总结
  2. python打开哪个答案_关于 Python 文件的 ‘r’ 打开模式,哪个选项的描述是正确的?_学小易找答案...
  3. 51nod 1127 最短的包含字符串(尺取法)
  4. 分布式架构的session问题
  5. ajax布林德,布林德重返阿贾克斯引热议,多面手为何在穆帅手里无作为
  6. android和httpClient
  7. JavaScript in Action
  8. 龙星计划机器学习笔记
  9. GBase数据库系统操作
  10. matlab傅里叶变换处理图像,MATLAB数字图像处理(1)基本操作和傅里叶变换
  11. 如鹏网.Net三层架构 第四章代码生成器
  12. 在知网查重复率时你入坑了吗?
  13. 在原有产品的基础上建立软件产品线的方式
  14. 运算放大器知识体系-电流检测放大器
  15. 罗技 连点 脚本_走心分享!当评测罗技MASTER 3遇上ANYWHERE 3
  16. Windows Shell 编程 第七章
  17. 一个简体/繁体字在线转换工具源码
  18. 要学完Java大概需要多长时间
  19. 微信浏览器禁止下载APK文件 微信扫描二维码 下载app的方法
  20. nyist 586 疯牛

热门文章

  1. GEE报错Tile error: Error in map(ID=198102T01):Element.copyProperties: The source parameter is require
  2. 微信小程序支持分享到朋友圈了
  3. html语言对奇偶数行设置颜色,纯CSS实现奇偶数行颜色交替(兼容主流浏览器)
  4. 图片优化之Base64解决方案
  5. Python爬虫教程:爬取王者荣耀全套皮肤【附源码】
  6. 录屏状态监听之防录屏 - iOS
  7. 随机梯度下降法(stochastic gradient descent,SGD)
  8. Base64中文乱码解决方法
  9. 【第60题】必学的枚举1-枚举的定义和基本特性
  10. 瓦伦达心态——再谈工作中的专注和心态