Skip to content

Commit

Permalink
Update to v22.07.09 & optimiza for FDE.AI v22.x
Browse files Browse the repository at this point in the history
  • Loading branch information
feravolt committed Jul 15, 2022
1 parent 358545e commit 314909b
Show file tree
Hide file tree
Showing 115 changed files with 24,712 additions and 29,618 deletions.
3 changes: 3 additions & 0 deletions .gitignore
@@ -0,0 +1,3 @@
__pycache__
/.vscode
/build
863 changes: 190 additions & 673 deletions LICENSE

Large diffs are not rendered by default.

788 changes: 788 additions & 0 deletions NOTICE

Large diffs are not rendered by default.

37 changes: 22 additions & 15 deletions README.md
@@ -1,5 +1,3 @@
# FeraVolt edit for FDE.AI

# Uperf

一个Android用户态性能控制器,实现大部分内核态升频功能,并支持更多情景识别。
Expand All @@ -13,9 +11,9 @@
- 监听cpuset分组更新操作,识别正在操作的APP发生切换
- 监听唤醒锁更新操作,识别屏幕是否熄灭
- 监听注入到Surfaceflinger的hook发送的通知,识别渲染开始、滞后、结束
- 支持Android 6.0 - 10
- 支持armeabi-v7a,arm64-v8a
- 支持Magisk方式一键安装,版本不低于18.0
- 支持Android 6.0 - 12
- 支持arm64-v8a
- 支持Magisk方式一键安装,版本不低于20.4+
- 不依赖于Magisk,可以手动方式安装
- 除非SfAnalysis注入失败,大多数情况SELinux可保持`enforcing`
- 不依赖于任何Android应用层框架以及第三方内核
Expand All @@ -30,7 +28,7 @@ https://github.com/yc9559/uperf/releases
### Magisk方式

1. 下载后通过Magisk Manager刷入,Magisk版本不低于18.0
2. 重启后查看`/sdcard/yc/uperf/log_uperf.txt`检查uperf是否正常自启动
2. 重启后查看`/sdcard/Android/yc/uperf/uperf_log.txt`检查uperf是否正常自启动

### 手动安装

Expand All @@ -42,17 +40,19 @@ https://github.com/yc9559/uperf/releases
6. 打开`/data/cache/injector.log`,检查sfanalysis注入是否成功
7. 如果关联自启动到第三方APP,设置在开机完成后执行`run_uperf.sh`
8. 如果关联自启动到系统启动脚本,插入`sh /data/uperf/initsvc_uperf.sh`
9. 重启后查看`/sdcard/yc/uperf/log_uperf.txt`检查uperf是否正常自启动
9. 重启后查看`/sdcard/yc/uperf/uperf_log.txt`检查uperf是否正常自启动

### 性能模式切换

#### 修改启动时的默认性能模式

1. 打开`/sdcard/yc/uperf/panel_uperf.txt`
2. 修改`default_mode=balance`, 其中`balance`为开机后使用的默认性能模式,可选的模式有:
1. 打开`/sdcard/Android/yc/uperf/cur_powermode.txt`
2. 修改`auto`, 其中`auto`为开机后使用的默认性能模式,可选的模式有:
- `auto`根据正在使用的App进行动态响应
- `balance`均衡模式,比原厂略流畅的同时略省电
- `powersave`卡顿模式,保证基本流畅的同时尽可能降低功耗
- `performance`费电模式,保证费电的同时多一点流畅度
- `fast`性能模式,相对于均衡模式更加激进
3. 重启

#### 启动完成后切换性能模式
Expand All @@ -61,7 +61,7 @@ https://github.com/yc9559/uperf/releases
执行`sh /data/powercfg.sh balance`,其中`balance`是想要切换到的性能模式名称。

方法2:
安装[微工具箱](https://www.coolapk.com/apk/com.omarea.vtools)为APP绑定对应的性能模式。
安装[Scene](https://www.coolapk.com/apk/com.omarea.vtools)为APP绑定对应的性能模式。

## 常见问题

Expand Down Expand Up @@ -119,14 +119,21 @@ A:此硬件平台没有预制的配置文件,可能需要自行适配。

### 情景识别

注:v3版本已经修改,此部分不适用
Uperf支持如下几种情景识别:
- `None`,无Hint的常规状态
- `Touch`,触摸到屏幕切换的Hint
- `Pressed`,长按时切换的的Hint
- `Tap`,在刚触摸到屏幕切换的Hint
- `Swipe`,在屏幕滑动一段距离后切换的Hint
- `HeavyLoad`,在Tap或Swipe检测到重负载后切换,负载降低后回落到Tap
- `AndroidAM`,在ActivityManager活跃时触发的Hint,例如无input事件的屏下指纹解锁
- `Standby`,屏幕熄灭时的Hint,一般滞后20秒
- `SfLag`,给Surfaceflinger的渲染提交出现滞后的Hint
- `SfLag`,给Surfaceflinger的渲染提交出现滞后切换的Hint
- `SfBoost`,Surfaceflinger的渲染提交需要加速切换的Hint
- `Standby`,屏幕熄灭时的Hint,一般滞后20秒(隐藏Hint)
- `SsAnim`,系统动画播放切换的Hint
- `WakeUp`,亮屏解锁切换的Hint



#### 触摸信号识别

Expand Down Expand Up @@ -160,7 +167,7 @@ Sfanalysis是一个独立于Uperf的模块,注入到surfaceflinger进行修改

![检测到渲染延迟立即拉升CPU频率](./media/sflag.png)

渲染提交滞后对应的Hint`SfLag`与重负载一样,有调用频率限制避免长时间拉升高频,相关参数暂时没有开放更改。`SfLag`使用可用次数缓冲池控制调用频率,每满400ms间隔可用次数+1,最大到20次。为了避免不必要的频率拉升,只允许从`Tap``Swipe``AndroidAM`转移到`SfLag`。SfAnalysis正常工作后在日志以如下方式体现:
渲染提交滞后对应的Hint`SfLag`与重负载一样,有调用频率限制避免长时间拉升高频,相关参数暂时没有开放更改。`SfLag`使用可用次数缓冲池控制调用频率,每满400ms间隔可用次数+1,最大到20次。为了避免不必要的频率拉升,只允许从`Tap``Swipe``Touch``Pressed`转移到`SfLag`。SfAnalysis正常工作后在日志以如下方式体现:
```
[13:03:36][I] SfAnalysis: Surfaceflinger analysis connected
```
Expand Down Expand Up @@ -552,4 +559,4 @@ UFS节能开关的`sysfs`节点路径为`/sys/devices/platform/soc/1d84000.ufshc

如果你实在愿意,下面是感谢云讨饭通道(备注写上你的ID和来源平台):

![](media/alipay-qr.png)
![](media/alipay-qr.png)
106 changes: 106 additions & 0 deletions changelog.md
@@ -0,0 +1,106 @@
# 更新日志

## DEV 22.07.09

- 新增 sdm8g1+支持
- 改进 任务放置
- 改进 功耗估计准确度

## DEV 22.06.26

- 新增 移除`swjunk`
- 改进 功耗分配
- 改进 任务放置
- 修复 后台程序破音

## DEV 22.06.05

- 新增 更多兼容性CPU频率写入器
- 新增 兼容性生成CPU频率表
- 修复 微信小程序启动缓慢
- 修复 前台程序破音
- 修复 部分崩溃问题
- 修复 部分高通平台息屏功耗过高,感谢@NepPoseidon

## DEV 22.05.20

- 新增 开放配置文件自定义
- 改进 CPU重负载调频稳定性
- 改进 任务放置
- 改进 顶层APP获取开销,感谢@nakixii
- 修复 perapp切换崩溃
- 修复 部分潜在崩溃代码
- 修复 CPU频率写入器失效

## DEV 22.05.09

- 回退 混合CPU调频
- 改进 触摸响应
- 改进 CPU负载滤波器
- 修复 sdm82x部分场景CPU频率无法写入
- 修复 Exynos 2200支持

## DEV 22.05.04

- 新增 混合CPU调频
- 改进 Android 7.0兼容性
- 修复 EPIC写入器自检错误
- 修复 全面屏手势失效,感谢@NebulaLeep
- 暂时禁用SsAnalysis模块,由于降低了过渡动画流畅度

## DEV 22.04.30

- 改进 提高滑动操作跟手性
- 改进 内核CPU调速器兼容性
- 修复 部分设备全面屏手势失效
- 修复 Pixel设备自动重启
- 修复 任务调度器任务分类错误
- 修复 游戏负载放置不稳定
- 修复 游戏最小化破音

## DEV 22.04.23

- 增加 系统动画主动探针
- 增加 CPU采样器负载预测
- 增加 与系统用户态性能控制器协同调度
- 增加 桌面启动器自动识别
- 增加 适配谷歌tensor/天玑810
- 改进 提高手势操作跟手性
- 改进 减少SfAnalysis误报
- 修复 识别上下文的任务调度器规则匹配错误
- 修复 联发科PPM接口适配
- 修复 破音问题
- 修复 部分平台功耗模型

## DEV 22.04.09

- 增加大量平台初步适配
- 改进Unity游戏和吃鸡游戏抖动
- 改进弹幕2倍速视频流畅度
- 更新部分平台功耗模型
- 日志后缀名更换为txt

## DEV 22.04.04

- 插件式软件架构
- 使用C++重新开发
- 功能模块解耦,易扩展
- 感知能耗的CPU调频器
- 用户态使能全平台统一体验
- 单核高性能,多核高能效
- 20-100hz基础采样率,快响应低开销
- 识别上下文的任务调度器
- UI放大核,非关键放小核
- 全数据驱动,正则匹配
- 花费50%开发时间调试的默认规则
- 动态sysfs写入
- 用户态性能控制器基石功能
- 实现更加简约高效
- SfAnalysis
- 预测掉帧并在发生前拉升CPU
- 改进的帧反馈以及模糊匹配
- patch方式无需更改SELinux状态
- 独立选装,但是强烈推荐
- SsAnalysis
- 跟系统线程放置器斗智斗勇
- 独立选装,但是强烈推荐

0 comments on commit 314909b

Please sign in to comment.