Android 功耗(3)---高通功耗问题分析方法
时间:2022-07-24
本文章向大家介绍Android 功耗(3)---高通功耗问题分析方法,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
本文结合该文档简单的总结了AP端功耗问题分析手段。
首先是官方功耗分析流程图:
注意几个关键的名词:
Modem 调制解调器芯片
RPM Resource Power Manager是高通MSM平台另外加的一块芯片,控制整个电源相关的shared resources
APSS 应用处理器子系统,就是平常我们说的AP
功耗问题一般分为低电流过高,或者异常唤醒造成。
本文只站在AP的角度分析功耗问题,也就是Android系统的角度。
低电流过高首先要验证系统是否进入了最低功耗状态。VDD最小状态。
mount -t debugfs none /sys/kernel/debug/
cat /sys/kernel/debug/rpm_stats 获取系统是否休眠。验证XO关闭和VDD最小化
RPM Mode:xosd
count:0
time in last mode(msec):0
time since last mode(sec):1275
actual last sleep(msec):0
client votes: 0x03030303
RPM Mode:vmin
count:0 //有计数则说明系统进入最低功耗状态
time in last mode(msec):0
time since last mode(sec):1275
actual last sleep(msec):0
client votes: 0x00000000
如果系统没有进入VDD最小状态,则要检查那一项阻止了终端进入VDD最小状态。
这一块主要查看RPM的外部日志。分析,略。
下面分析异常唤醒造成的功耗问题
查看AP端的异常唤醒源,查看modem那块的略过。
echo 1 >/sys/module/msm_show_resume_irq/parameters/debug_mask
echo "8 8 8 8">/proc/sys/kernel/printk
通过查看唤醒锁的状态主要查看active_since字段可以查看,哪个锁造成系统无法休眠。
总结:对于AP端判断功耗问题,一般从低电流状态判断。
排除方法:移除一些外部驱动程序,如sensor,tp,camera,LCD等。
cat /sys/kernel/debug/rpm_stats 获取系统是否休眠。验证XO关闭和VDD最小化
echo 1 >/sys/module/msm_show_resume_irq/parameters/debug_mask
查看log获取异常唤醒源
echo "8 8 8 8">/proc/sys/kernel/printk
adb shell cat/sys/kernel/debug/wakeup_sources > j:777.txt 查看唤醒锁,哪个锁造成无法休眠
- 基于jfinal Template的Shiro 标签
- 基于Spring Cloud 少量配置完成单点登录开发
- Spring 必知概念(一)
- 如何在EHAB(EntLib)中定义”细粒度”异常策略?
- MVC、MVP以及Model2[下篇]
- Dora.Interception: 一个为.NET Core度身定制的AOP框架
- 为了支持AOP的编程模式,我为.NET Core写了一个轻量级的Interception框架[开源]
- 关于Expression Tree和IL Emit的所谓的"性能差别"
- 采用一个自创的"验证框架"实现对数据实体的验证[扩展篇]
- 采用一个自创的"验证框架"实现对数据实体的验证[改进篇]
- Flash XSS检测脚本的简单实现
- 采用一个自创的"验证框架"实现对数据实体的验证[设计篇]
- 采用一个自创的"验证框架"实现对数据实体的验证[编程篇]
- 谈谈你最熟悉的System.DateTime[上篇]
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- 词义类比与全局词共现信息不可兼得?基于飞桨实现的GloVe说可以
- MyBatis-plus乐观锁插件
- Jmeter(十九) - 从入门到精通 - JMeter监听器 -上篇(详解教程)
- python---rsa加密根据指数和模生成加密参数模板
- 搞了这么多年终于知道接口和抽象类的应用场景了
- css实现页面加载动画
- 用Dota2“最强”算法PPO完成CarPole和四轴飞行器悬浮任务
- 【pyspark】广播变量のdestroy...
- Flink 参数配置和常见参数调优
- 利用InfluxDB+Grafana搭建Flink on YARN作业监控大屏
- Netty之美--零拷贝
- Netty对ThreadLocal的升级
- 【避坑指南】12.2 新功能优化器统计顾问(Optimizer Statistics Advisor)及常见问题和解决方法
- 初试 Open Service Mesh(OSM)
- K8S 生态周报| runc v1.0-rc92 发布