(已获得作者授权,有任何关于使用问题欢迎在评论区讨论~)
模块当前最新版本Dev-22.7.09 下载方式见结尾
【更新日志】
新增 sdm8g1+支持
改进 任务放置
改进 功耗估计准确度
...合计26个commit
【已支持平台】
高通
骁龙 625/626/660/636/82x/835
骁龙 662/665/675/710/712/730/730g/750g/765/765g/768g/780/778g/778g+
骁龙 845/855/855+/860/865/865+/870/888/888+/8gen1/8gen1+
联发科
Helio P65/G70/G80/G85/G90T
天玑 700/720/800/810/820/900/920/8000/8100
天玑 1000/1000l/1000+/1100/1200/9000
三星
Exynos 8890/8895/9810/9820/9825/990/1080/2100/2200
谷歌
Tensor gs101
【预置的性能模式】
卡顿powersave:较大的性能限制,适合流畅度要求不高的用户
均衡balance:适中的性能限制,适合手机日常
费电performance:约等于没有性能限制,适合平板日常
极速fast:跟费电差不多,偏持续性能输出,适合手机电竞
【子模块说明】
SfAnalysis:推荐,以较低功耗代价减少掉帧
SsAnalysis:可选,如果遇到桌面动画掉帧,可尝试它
Uperf
一个Android用户态性能控制器,实现大部分内核态升频功能,并支持更多情景识别。
主要功能
根据识别的场景类型,动态设定参数控制性能释放,支持所有sysfs节点
支持动态绑定正在操作的APP的UI相关线程到大核集群
从Linux层面读取Android的触摸屏输入信号,识别点击和滑动
主动采样系统负载,识别例如APP启动的瞬间重负载
监听cpuset分组更新操作,识别正在操作的APP发生切换
监听唤醒锁更新操作,识别屏幕是否熄灭
监听注入到Surfaceflinger的hook发送的通知,识别渲染开始、滞后、结束
支持Android 6.0 - 12
支持arm64-v8a
支持Magisk方式一键安装,版本不低于20.4+
不依赖于Magisk,可以手动方式安装
除非SfAnalysis注入失败,大多数情况SELinux可保持enforcing
不依赖于任何Android应用层框架以及第三方内核
为大多数热门硬件平台提供了调参后的配置文件
下载
Magisk方式
下载后通过Magisk Manager刷入,Magisk版本不低于18.0
重启后查看/sdcard/Android/yc/uperf/uperf_log.txt检查uperf是否正常自启动
手动安装
如果你的设备无法安装Magisk,并且已经获取到ROOT权限
下载后手动解压缩,例如解压缩到/data/uperf
修改setup_uperf.sh,run_uperf.sh,initsvc_uperf.sh权限为755
执行setup_uperf.sh完成安装,检查输出信息是否有报错
执行run_uperf.sh启动uperf,检查输出信息是否有报错
打开/data/cache/injector.log,检查sfanalysis注入是否成功
如果关联自启动到第三方APP,设置在开机完成后执行run_uperf.sh
如果关联自启动到系统启动脚本,插入sh /data/uperf/initsvc_uperf.sh
重启后查看/sdcard/yc/uperf/uperf_log.txt检查uperf是否正常自启动
性能模式切换
修改启动时的默认性能模式
打开/sdcard/Android/yc/uperf/cur_powermode.txt
修改auto, 其中auto为开机后使用的默认性能模式,可选的模式有:
auto根据正在使用的App进行动态响应
balance均衡模式,比原厂略流畅的同时略省电
powersave卡顿模式,保证基本流畅的同时尽可能降低功耗
performance费电模式,保证费电的同时多一点流畅度
fast性能模式,相对于均衡模式更加激进
重启
启动完成后切换性能模式
方法1:
执行sh /data/powercfg.sh balance,其中balance是想要切换到的性能模式名称。
方法2:
安装Scene为APP绑定对应的性能模式。
常见问题
Q:是否对待机功耗有负面影响?
A:Uperf的实现做了不少低功耗的优化,自身运行的功耗开销很低。此外预制配置文件的待机模式中,减少了待机时唤醒的核心数量并使用了保守的升频参数。待机功耗的优化主要靠减少唤醒时长比例,在此基础上Uperf可进一步降低一点待机功耗。
Q:为什么使用了Uperf还是很费电?
A:SOC的AP部分功耗主要取决于计算量以及使用的频点。Uperf只能控制性能释放,改进频点的选择从而降低功耗,如果后台APP的计算量很大是无法得到显著的续航延长的。这一问题可以通过Scene工具箱的进程管理器来定位。
Q:是否需要关闭系统的温度控制?
A:系统温度控制是一种硬件保护措施,或者用于改善高负载下的用户体验。大多数情况下无需关闭它,如果你遇到性能严重受限的情况,例如运行竞技游戏CPU最大频率限制在1.4Ghz,请提升温控介入的阈值或者关闭系统温度控制。
Q:Uperf和Scene工具箱是什么关系?
A:这两个软件独立运作,没有互相依赖。Uperf实现了接口可供Scene工具箱调用,例如性能模式切换以及分APP性能模式。如果不安装Scene工具箱也可以实现性能模式切换,详情见使用方式。
Q:是否还需要关闭系统的performance boost?
A:Uperf模块内脚本已经关闭了大部分主流的用户态和内核态升频,如果有非常规的升频需要用户自己关闭。
Q:我遇到了一些奇怪的系统故障,是怎么回事?
A:Uperf在大多数平台可以正常工作,在测试阶段收集到了以下可能发生的故障:
桌面启动器不响应触摸。这个目前只在MIUI 12遇到,如果遇到了此问题请删除/data/adb/modules/uperf/enable_sfanalysis
触摸屏报点间断丢失。请检查是否使用了自动跳过之类的APP,特别是支持坐标点击的
睡死。用户态应用程序理论上不会影响系统稳定性,请更换为官方内核和ROM
Q:使用Magisk安装时提示not supported,这是为什么?
A:此硬件平台没有预制的配置文件,可能需要自行适配。
uperf-Dev-22.7.09 https://yc9559.lanzoum.com/inX9007lbg9a
sfanalysis-magisk-22.06.05 https://yc9559.lanzoum.com/idJqs05xxpda
ssanalysis-magisk-22.04.30 https://yc9559.lanzoum.com/iOyKm041ilyj