功耗分析 檢視Suspend狀態

2021-09-18 04:35:10 字數 3169 閱讀 3062

在suspend狀態(sleep mode)下,為了降低功耗,當系統做完需要做的事情,處於idle狀態時會進入睡眠模式(使用者將手機空置一段時間系統會自動sleep,或者按下power key強制系統進入sleep mode),此時系統時鐘會由26m切換到32k,某些外部device的電源會被關閉,系統所需的相關core電壓會被調到乙個相對較低的值,系統在sleep mode下的耗電要關注如下兩個指標:

乙個完整的suspend/喚醒log,應該包含關鍵字chip_pm_enter、md_settle = 99, settle = 99和wake up by***。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.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

MTK 功耗分析

一 遇到有功耗的手機專案,首先刷個驅動軟體版本進行功耗測試作對比,看驅動版本是否存在該問題 當然mtk 既然把基線版本給出,他們內部肯定也是進行過嚴格測試認證,這個一般都是正常,但為了分析我們還是得進行測試,同樣的你在基線版本中合入了各模組的驅動 這樣做呢,目的就是確認是驅動版本本身軟體就有該功耗問...

功耗問題分析

檢視是否休眠 adb root adb shell cat sys power system sleep stats stats00.txt adb shell cat sys power rpmh stats master stats master stats00.txt 移除usb,待機3分鐘後...

Android功耗 高通功耗問題分析(3)

高通功耗問題分析 高通官方提供了一篇文件extensive power debug guide simplified chinese功耗除錯 pdf 用來分析中斷功耗問題。本文結合該文件簡單的總結了ap端功耗問題分析手段。首先是官方功耗分析流程圖 注意幾個關鍵的名詞 modem 數據機晶元 rpm ...