功耗分析-查看Suspend状态

2024-02-09 20:08

本文主要是介绍功耗分析-查看Suspend状态,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

0. 文章参考

http://www.wowotech.net/linux_kenrel/suspend_and_resume.html

在suspend状态(sleep mode)下,为了降低功耗,当系统做完需要做的事情,处于idle状态时会进入睡眠模式(用户将手机空置一段时间系统会自动sleep,或者按下power key强制系统进入sleep mode),此时系统时钟会由26M切换到32K,某些外部device的电源会被关闭,系统所需的相关core电压会被调到一个相对较低的值,系统在sleep mode下的耗电要关注如下两个指标:

  • 底电流:手机在sleep状态下消耗的最小电流,与整个系统的漏电相关;
  • 平均电流:在一段时间内,对手机取电流的平均值,与手机的wake up行为相关。

1. 判断是否进入suspend的关键信息

一个完整的suspend/唤醒log,应该包含关键字Chip_pm_enter、md_settle = 99, settle = 99和wake up byXXX。md_settle = 99, settle = 99是系统进入suspend前打印的最后一行log,正常的话这一行log的前后行log时间戳是不会变的,因为suspend之后kernel时间不会计算,只有32k时钟工作。

<6>[  922.885697]  (0)[1180:system_server]PM: suspend entry 2017-03-09 06:55:59.675845617 UTC
<6>[  922.885711]  (0)[1180:system_server]PM: Syncing filesystems ... done.
<3>[  922.993726]  (0)[1180:system_server][PBM] PM_SUSPEND_PREPARE:start
<3>[  922.993747]  (0)[1180:system_server][PBM] PM_SUSPEND_PREPARE:end
<7>[  923.097349] -(0)[1180:system_server][name:mt_sleep&][SLP] @@@Chip_pm_enter@@@
<6>[  923.097349] -(0)[1180:system_server][Power/clkmgr] [slp_check_pm_mtcmos_pll]
<6>[  923.097349] -(0)[1180:system_server][Power/clkmgr] SYS_MD1: on
<6>[  923.097349] -(0)[1180:system_server][Power/clkmgr] SYS_CONN: on
<2>[  923.097349] -(0)[1180:system_server][SPM-PMIC] [dlpt_R] pre_SOC=57 SOC=57 skip
<4>[  923.097349] -(0)[1180:system_server]Suspend  - 6328 - 0x248 - 0x7673 - 0xfeff - 0x7473 - 9
<4>[  923.097349] -(0)[1180:system_server]Suspend  - 6328 - 0x4d6 - 0x3021 - 0x0001 - 0x0020 - 0
<4>[  923.097349] -(0)[1180:system_server]Suspend  - 6328 - 0xa32 - 0xc102 - 0x000e - 0x0100 - 1
<4>[  923.097349] -(0)[1180:system_server]Suspend  - 6328 - 0xa3a - 0xc102 - 0x000e - 0x0000 - 1
<4>[  923.097349] -(0)[1180:system_server][SPM] md_settle = 99, settle = 99
<4>[  923.097349] -(0)[1180:system_server][SPM] sec = 900, wakesrc = 0xe04c5e4 (1)(1)
<4>[  923.097349] -(0)[1180:system_server][SPM] wake up byEINT, timer_out = 7440931, r13 = 0x10001000, debug_flag = 0x9f
<6>[  923.334796]  (1)[1180:system_server]PM: suspend exit 2017-03-09 06:59:47.201326615 UTC

2. 可以通过log确认suspend的时间点以及suspend的时长

2.1 确认 suspend 的时间点

关键字:PM: suspend entry

<6>[  922.885697]  (0)[1180:system_server]PM: suspend entry 2017-03-09 06:55:59.675845617 UTC
2.2 通过 suspend entry 和 md_settle 确定suspend时长

后面跟的时间就是当前的UTC time(跟上层的android time换算要加上时区)。
这个时间就是睡眠的粗略时间,精确时间就是再加上两句log的时间戳相减:

<6>[  922.885697]  (0)[1180:system_server]PM: suspend entry 2017-03-09 06:55:59.675845617 UTC<4>[  923.097349] -(0)[1180:system_server][SPM] md_settle = 99, settle = 99

睡眠的准确时间点 = 06:55:59.675845617 + (923.097349 - 922.885697) = 06:55:59.887497617

2.3 PM: suspend exit的时间戳减去PM: suspend entry的时间戳
390: <6>[  868.695672] PM: suspend entry 2019-03-05 01:48:36.914426509 UTC 394: <4>[  868.732182] Suspending console(s) (use no_console_suspend to debug) 
395: <6>[  868.740534] PM: Wakeup pending, aborting suspend 
397: <3>[  868.749441] PM: Some devices failed to suspend, or early wake event detected 
401: <6>[  868.797664] PM: suspend exit 2019-03-05 01:48:37.016425103 UTC 

睡眠的准确时间点 = 868.797664 - 868.695672 = 0.101992

这篇关于功耗分析-查看Suspend状态的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/695173

相关文章

[职场] 公务员的利弊分析 #知识分享#经验分享#其他

公务员的利弊分析     公务员作为一种稳定的职业选择,一直备受人们的关注。然而,就像任何其他职业一样,公务员职位也有其利与弊。本文将对公务员的利弊进行分析,帮助读者更好地了解这一职业的特点。 利: 1. 稳定的职业:公务员职位通常具有较高的稳定性,一旦进入公务员队伍,往往可以享受到稳定的工作环境和薪资待遇。这对于那些追求稳定的人来说,是一个很大的优势。 2. 薪资福利优厚:公务员的薪资和

java中查看函数运行时间和cpu运行时间

android开发调查性能问题中有一个现象,函数的运行时间远低于cpu执行时间,因为函数运行期间线程可能包含等待操作。native层可以查看实际的cpu执行时间和函数执行时间。在java中如何实现? 借助AI得到了答案 import java.lang.management.ManagementFactory;import java.lang.management.Threa

高度内卷下,企业如何通过VOC(客户之声)做好竞争分析?

VOC,即客户之声,是一种通过收集和分析客户反馈、需求和期望,来洞察市场趋势和竞争对手动态的方法。在高度内卷的市场环境下,VOC不仅能够帮助企业了解客户的真实需求,还能为企业提供宝贵的竞争情报,助力企业在竞争中占据有利地位。 那么,企业该如何通过VOC(客户之声)做好竞争分析呢?深圳天行健企业管理咨询公司解析如下: 首先,要建立完善的VOC收集机制。这包括通过线上渠道(如社交媒体、官网留言

打包体积分析和优化

webpack分析工具:webpack-bundle-analyzer 1. 通过<script src="./vue.js"></script>方式引入vue、vuex、vue-router等包(CDN) // webpack.config.jsif(process.env.NODE_ENV==='production') {module.exports = {devtool: 'none

Java中的大数据处理与分析架构

Java中的大数据处理与分析架构 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们来讨论Java中的大数据处理与分析架构。随着大数据时代的到来,海量数据的存储、处理和分析变得至关重要。Java作为一门广泛使用的编程语言,在大数据领域有着广泛的应用。本文将介绍Java在大数据处理和分析中的关键技术和架构设计。 大数据处理与

段,页,段页,三种内存(RAM)管理机制分析

段,页,段页         是为实现虚拟内存而产生的技术。直接使用物理内存弊端:地址空间不隔离,内存使用效率低。 段 段:就是按照二进制文件的格式,在内存给进程分段(包括堆栈、数据段、代码段)。通过段寄存器中的段表来进行虚拟地址和物理地址的转换。 段实现的虚拟地址 = 段号+offset 物理地址:被分为很多个有编号的段,每个进程的虚拟地址都有段号,这样可以实现虚实地址之间的转换。其实所谓的地

一二三应用开发平台应用开发示例(4)——视图类型介绍以及新增、修改、查看视图配置

调整上级属性类型 前面为了快速展示平台的低代码配置功能,将实体文件夹的数据模型上级属性的数据类型暂时配置为文本类型,现在我们调整下,将其数据类型调整为实体,如下图所示: 数据类型需要选择实体,并在实体选择框中选择自身“文件夹” 这时候,再点击生成代码,平台会报错,提示“实体【文件夹】未设置主参照视图”。这是因为文件夹选择的功能页面,同样是基于配置产生的,因为视图我们还没有配置,所以会报错。

mediasoup 源码分析 (八)分析PlainTransport

mediasoup 源码分析 (六)分析PlainTransport 一、接收裸RTP流二、mediasoup 中udp建立过程 tips 一、接收裸RTP流 PlainTransport 可以接收裸RTP流,也可以接收AES加密的RTP流。源码中提供了一个通过ffmpeg发送裸RTP流到mediasoup的脚本,具体地址为:mediasoup-demo/broadcaste

Java并发编程—阻塞队列源码分析

在前面几篇文章中,我们讨论了同步容器(Hashtable、Vector),也讨论了并发容器(ConcurrentHashMap、CopyOnWriteArrayList),这些工具都为我们编写多线程程序提供了很大的方便。今天我们来讨论另外一类容器:阻塞队列。   在前面我们接触的队列都是非阻塞队列,比如PriorityQueue、LinkedList(LinkedList是双向链表,它实现了D

线程池ThreadPoolExecutor类源码分析

Java并发编程:线程池的使用   在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题:   如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。   那么有没有一种办法使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任务?