[心得] 淺談手機的電源管理

看板MobileComm作者 (經營之神...默哀)時間10年前 (2015/05/04 01:56), 10年前編輯推噓44(45131)
留言77則, 46人參與, 最新討論串1/1
小弟才疏學淺,有鑑於對手機相關的資訊有些興趣 故寫了此編文章與大家分享。 在此我們先不討論Battery capacity, 而是單純評估整體手機的耗電量. 耗電跟效能彼此之間就是trade off,如何取得平衡就是一門很深的學問(跟婆媳一樣?) 以下分類四個topic 來做討論 要是前兩篇讓你看到一個頭兩個大,請直接跳三XD 一 HW 規格 1.手機CPU規格與其元件 要知道巧婦難為無米之炊,假設手機先天使用的元件是不好的。那麼再強的SW tuning 可以降低功耗的效果就有限。 其中最重要的幾個元件不外乎如下 1.1 CPU/GPU 目前知名被管泛使用的手機CPU 大廠 有1.QCOM 2.MTK 3.Samsung exynos.4.Intel 5.海思.各家CPU 大廠大多都有高中低三階對應的產品線。 QCOM目前在市場上領先的主要原因是其Modem 與CPU的整合性以及許多手機相關的專 利.但是八核CPU功耗的控制依舊有很多加強的空間(S615 and S810 就是個範例) MTK可以在大陸吃得開憑藉著是total solution 以及價格/效能的高cp值,可以讓手 機廠快速利用公版生產手機。但是關於認證、相關的專利以及GPU還是跟qcom有一段的 差距,歐美市場就是一個努力的目標。 Samsung 雖在modem 的整合度以及專利劣於高通,但是傾全國之力的公司產業。在 CPU性能上一直有著強大的競爭力(這次的4x-A57,4x-A53 的功耗就擊潰了S810)光生產 Samsung手機就是個大補丸 手機廠的HW and SW architecture 都會根據CPU廠商提供的SPEC還有test report 來 評估使用效能與功耗。給予Project team的人,面對現在手機的市場該選用那顆cpu來 做評估。當然這只是survey報告。通常會不會選用可能有很多因素,舉凡是市場趨向 、價格帶、跟廠商的關係以及戰略上的考量等原因。 舉個簡單的範例如下 1.在大陸出手機低階產品會優先考量mtk 而歐美低價手機也不會考慮mtk. 2.大部分廠商不會使用Samsung exynos 就像大部分公司不會選擇exynos 一樣。 1.2 Display 對其沒有研究. 但display 在正常screen on 的情況底下。絕對是除了cpu之外耗電 的大客戶之一.有無RAM buffer 也是影響的關鍵之一.好壞的panel 的差距可能是 100mA 以上的gap. 1.3 周邊相關的原件 舉凡是camera module , BT and WIFI and GPS solution. Audio/Video and Sensor 等 二 SW Tuning 軟體針對已經規劃好規格的手機產品,就會對基本的HW SPEC 做tuning 來完成該有的 target. ***要省電唯一重點:不該用的時候,就要把相關的元件關掉或是進入省電模式。 該用的時候,就要用到剛好的力度就可以完成一樣的工作來達到省電。 常見的幾個測試. 1.Display idle case 在螢幕開啟的時候,當frame沒有更新的時候,有些panel可以進idle mode 讓Display 耗電量大幅降低 2.Display off 螢幕關闢的時候,此時display相關的module 應該讓panel 進入low power mode 達到 省電功能。 3.CPU idle CPU可能有所謂的idle mode(要看HW chip 是否支援),即使在screen on 的情況下,要 是沒有頻率很高的task 在運作,有機會進入idle 達到省電。 4.CPU suspend Userspace and kernel space 沒有任何wake lock 或是task 在運作,cpu 能夠進入 suspend mode 達到低功耗的標準。此時,各相關元件應該也要進入low power mode 達 到省電效果,除非有必要的功能必須等待cpu interrupt 喚醒(即使在這個mode,該元件 耗電量也不能太高)這時候應該就只剩下sub-system alive 舉個範例,假設現在打開touch panel 能夠接收到使用者滑動或是點擊的event 需要讓 touch panel 切換到active mode. 那這個耗電量假設是20mA.在CPU suspend 狀況下, 不需要接收touch event. touch driver 就該通知到touch 這個chip 讓他到low power mode 來達到省電(可能就只有10uA甚至更低)。更進階的來說,假設touch在screen off 就不該有接受touch event 的功能,就該讓display off 這個條件成立的時候,馬上就 關掉touch event 達到省電(因為關螢幕不等同cpu suspend) 5.Flight mode on 關掉Modem , WIFI etc. 此時也收不電話。進入更省電的模式 6.Camera related 拍照,錄影針對不同的resolution跟模式,有對應的耗電量跟spec.通常跟camera moduel and CPU 有關 7.Audio/Video 針對不同的解析度跟狀況,有對應的SPEC.通常都跟CPU 和solution有關. 8.Phone call 跟modem , system overall tuning 有關 9.WIFI,BT,GPS 跟solution and system overall tuning 有關 10.Browse 跟Browse Application and system overall tuning 有關 11.Game 跟Application , CPU and System overall tuning 有關 12.Daily use 跟System overall and user 下載的app 有關 SW 要做到的事,就是一開始的大原則 1.要省電唯一重點:不該用的時候,就要把相關的元件關掉或是進入省電模式。 這個是各Driver and feautre owner 的責任,必須各Developer 了解其負責的部分來 達到省電的工作。這個不管是Application/Service , framework and Driver 都必須 要互相配合才能做到好。 舉凡例子如下 1.1 一個APP 的開發者為了某些功能的應用使用系統的API 讓CPU 在某個條件下不能 suspend 讓他的功能可以正常運作。就以APP 角度就必須考慮得當,必須想好各種use case. 有沒有可能在某些條件下,根本在沒用到這個功能的時候也讓CPU 睡不下去達 到耗電的結果。 1.2 Driver 就該評估其component 必須在各種情況底下切換到對應的模式來到功能和省 電的效果。必且考慮各種case 甚至是error handling. 不會在特殊條件下,讓Chip 處於耗電的狀況。 2.該用的時候,就要用到剛好的力度,就可以完成一樣的工作來達到省電。 說似簡單,其實超難。各家cpu廠and手機廠 都為了調整出最好的結果大傷腦筋 大部分peformance team 就是針對各種use case 調整Policy 去plug/unplug cpu/gpu and adjust cpu frequqnece/gpu 以高通來講,原廠就有mpdecision 在針對useage 來 做cpu 的調整。 當然各家手機廠會再針對各種case fine tune 參數。 手機溫度/耗電/效能之間的平衡永遠都是很難處理的問題。因為牽涉的東西太廣,手機 的各個元件可能都有其特性必須針對各種case 調整。看看現在最熱門的S810. CPU/GPU spec很強,但是A57高頻率一開,很快就過熱,thermal table 就馬上做反應unplug cpu and lower frequency 導致出來的結果在some case比S801還爛,要是不針對thermal table 做調整可能手機溫度會過高讓使用者感覺不適。一調整performance drop 又被 抱怨不順的窘境。遇到這種Case. 除非找到問題的root cause 必且解決(應該在CHIP layer),即使是SW改動cpu scheduler 都不見得可以完全解決問題。 三 User Q&A Q1:常常遇到很多人說,不要亂安裝一些大陸app或是系統優化的程式。或是當你遇到突然 耗電的時候就先回復原廠設定,就能夠解決問題。Why? A1:最主要原因如下。 通常耗電有兩種Case, 1. 螢幕打開的時候再做一些事情感到特別耗電. 2. 螢幕關掉的時候,手機甚麼都沒做但是就特別耗電. 針對1. *就是有特殊的application or service 在使用其功能的需要複雜的運算跟大 量資料處理,導致必須要掛起多個cpu 並且調高頻率才能應付該功能使用。 例如大型的網路線上遊戲,他需要wifi/4g 做資料與sever 的sync. 以及高解 析度畫面的處理以及運算(掛起多個cpu and gpu). *那個application 寫的濫,爛的code 可能讓程式在busy waiting 或是卡在 某個地方,而不是在處理必要的task.還記得以前的candy crash (好久沒玩不 知道改正沒)。立意良好寫了好幾個thread 在run. 但是自己造成deadlock 導 致只有兩顆cpu 的手機hang 住(當時他開了三個thread XD) *刀塔傳奇,在Android L 下,不良使用API 導致開啟audio 的時候,超級 lag. 針對2. 就是Application 針對特殊的功能讓系統無法休眠(cpu can't suspend) 給大 家一個大概的數字概念(假設cpu suspend 狀況,大概是4mA~6mA) 而假設application 咬住讓系統不能休眠,那都是xxmA 以上的消耗量。這樣 user 就會感受到怎麼我手機擺著睡覺,一叫醒來電池%大幅縮減.這種幾乎都是 case2. Q2:要怎麼使用相關的設定來達到省電的功能 A2:這取決於你要怎樣的手機功能,以下舉出幾個例子讓大家體會一下。 現在很多手機廠商都有所謂Power saving mode. 那這些mode 不外乎最主要就是調整 cpu 最高頻率跟開啟的個數,Display brigtness. or no vibration for some case. 系統廠商針對許多user 不會影響user experience 的東西,做一些power mode 的設 定。你可以針對個人的需求來啟動這些設定達到節能的效果。例如你可以手動調整 display 的亮度在setting,你可以disable auto rotation 在你不需要這個feature. 你可以關掉3g/wifi 在你不使用網路的時候。 你可以在睡覺會或是會議的時候開啟飛安模式。你不需要使用GPS定位,把設定的位置 關掉。當然關闢這些功能,前提是你不需要這些東西。 重點還是,不要用就不要開, 這才能省電. Q3:有啥方法可以察覺是否這個APP 是耗電的 A3:最簡單的是使用經驗,突然安裝了某個APP 之後耗電增加,或是某次APP 改版後耗電 增加. 舉個簡單例子 1.有些明顯的APP 就是讓user 可以在螢幕關掉的時候還有一些功能上的運作,而這些 運作APP 寫不好可能會讓CPU 不能睡。常見的就是fitness 相關的APP, 像是紀錄走 路步數。判斷使用者姿態,睡眠習慣、光驅鎖等。一些用到sensor 的APP 假設沒有 正確的使用都可能導致嚴重耗電(Sensor 開啟本身就會額外耗電,要是還影響cpu不 能睡,那耗電量會大大增加) 2.某次Google 的GMS 升版,當location enable. 就額外開啟一些sensor 來判斷一些 activity 導致額外的耗電。 3.想想看一些APP 的notification. 像是Line 的提醒,你要enable 這些功能就必須 定期的query data. 一定比沒打開這些功能來的耗電。 四 Benchmark 最後我想跟大家說一聲。 不要再迷信安兔兔或是各種benchmark. 因為它代表的涵義只有一個- 這顆chip 最操可以幾分。除非你在意的是這個遠大於你使 用上真正的感受。那就下載他吧@@ 而且現在普遍大廠都會針對benchmark 做white list. 調整thermal table 跟cpu 調頻的機制。 跟正常use case 已經偏離。 有件事情很好玩,大家可以思考一下。 1. 這個手機針對benchmark 有作弊且跑分高-> 那你跑出來都是假的。跑也是跑爽的跟正 常user case 沒關 2. 這個手機針對benchmark 有作弊但是分數不一定 -> 就都作弊不可信,跑很多次最終 還是要屈服cpu 溫度而妥協。 3. 這個手機沒作弊,但是為了跑分高,讓cpu 處於高效能。 -> 並不是最佳的使用方式 ,反而有可能是最糟的結果。正常user case 也是高頻反而耗電。 4. 這個手機沒作弊,但是跑分低。 -> 不一定代表一般use case 不好。單純是跟有作弊 或是常常high performance 的policy 比分數低而已。 所以大家要注意的評測反而是各種use case 的測試報告 而不是benchmark. 如果有手機廠商為了討好消費者選擇上述3的option 那反而是對消費者最糟糕的結果。 有時間再寫其他篇幅. -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.161.33.231 ※ 文章網址: https://www.ptt.cc/bbs/MobileComm/M.1430675796.A.1A6.html

05/04 02:04, , 1F
對於一般用手機的人真的只有(三)看得懂XD 前面牽涉
05/04 02:04, 1F

05/04 02:04, , 2F
到太多術語像是OS的...
05/04 02:04, 2F

05/04 02:12, , 3F
好文
05/04 02:12, 3F
※ 編輯: mogmogmog (118.161.33.231), 05/04/2015 02:25:54

05/04 02:26, , 4F
寫作功力太弱...我以為只要懂單字應該都會懂Q_Q
05/04 02:26, 4F

05/04 02:35, , 5F
你要先假設USER完全不懂
05/04 02:35, 5F

05/04 02:41, , 6F
簡單來說,先天體質優良加上軟體調教得當可以得到一
05/04 02:41, 6F

05/04 02:41, , 7F
台效能優良且省電的手機(如m8)
05/04 02:41, 7F

05/04 02:42, , 8F
反之就像(m9)
05/04 02:42, 8F

05/04 03:15, , 9F
說了很多 但決多數莫名其妙背景喚醒才是真正惱人的
05/04 03:15, 9F

05/04 03:15, , 10F
問題
05/04 03:15, 10F

05/04 03:19, , 11F
原生 精簡化 偶爾也還是會遇到某個程序背景喚醒 偏
05/04 03:19, 11F

05/04 03:19, , 12F
偏又查不出是那個
05/04 03:19, 12F

05/04 04:14, , 13F
建議教學文少用縮寫(不然就先交待一下)
05/04 04:14, 13F

05/04 04:16, , 14F
5.是戰鬥模式嗎?
05/04 04:16, 14F

05/04 04:16, , 15F
翻成中文不影響理解,不會混淆的名詞建議多用中文
05/04 04:16, 15F

05/04 06:19, , 16F
要防止app亂喚醒就裝綠色守護就好啦
05/04 06:19, 16F

05/04 06:59, , 17F
Google GMS升級→當年Z表示心有戚戚焉
05/04 06:59, 17F

05/04 07:11, , 18F
感謝
05/04 07:11, 18F

05/04 07:30, , 19F
綠色守護要root才比較好用,沒root的話沒什麼用
05/04 07:30, 19F

05/04 08:00, , 20F
5應該是 flight?
05/04 08:00, 20F

05/04 08:10, , 21F
中英夾雜太多影響閱讀 不如純中文加標示或者純英文
05/04 08:10, 21F

05/04 08:11, , 22F
綠色守護沒root一樣好用 有root加付費是全解放
05/04 08:11, 22F

05/04 08:38, , 23F
專業..
05/04 08:38, 23F

05/04 08:55, , 24F
cp值寫反了
05/04 08:55, 24F

05/04 08:57, , 25F
綠色守護之類的用過 無解 wakelock detector查出的
05/04 08:57, 25F

05/04 08:57, , 26F
喚醒系統程序丟google也是無解
05/04 08:57, 26F

05/04 08:59, , 27F
並非是某個應用app本身在喚醒 而是某個app觸發了系
05/04 08:59, 27F

05/04 08:59, , 28F
統程序 所以前面我才會說是莫名奇妙的喚醒
05/04 08:59, 28F

05/04 09:00, , 29F
如果是應用app本身喚醒 那很好解
05/04 09:00, 29F

05/04 09:02, , 30F
推 用心好文 這反而會讓我想了解
05/04 09:02, 30F

05/04 09:56, , 31F
看得懂 以前修過OS的課
05/04 09:56, 31F

05/04 10:04, , 32F
作者使用大量專業語言,就沒有想讓一般人看懂的意
05/04 10:04, 32F

05/04 10:04, , 33F
思吧
05/04 10:04, 33F

05/04 10:19, , 34F
我寧願看全英文也不要這種中英夾雜的文章
05/04 10:19, 34F

05/04 11:36, , 35F
http://disp.cc/b/18-8FCY (Android Power Managem
05/04 11:36, 35F

05/04 11:46, , 36F
05/04 11:46, 36F

05/04 12:00, , 37F
irvingyeh85:我寧願看全英文也不要這種中英夾雜的文
05/04 12:00, 37F

05/04 12:01, , 38F
這不是專不專業的問題 而是大量中英混雜造成閱讀
05/04 12:01, 38F

05/04 12:01, , 39F
理解有障礙
05/04 12:01, 39F

05/04 12:01, , 40F
其實英文都很簡單 但是看起來就是超不順
05/04 12:01, 40F

05/04 12:01, , 41F
XDA一堆全英文專業文章看起來就是很順
05/04 12:01, 41F

05/04 12:04, , 42F
我以為要講充電 直接end
05/04 12:04, 42F

05/04 12:10, , 43F
看推文才發現還蠻多英文的,不過我閱讀起來蠻順的
05/04 12:10, 43F

05/04 12:38, , 44F
我是看得懂 但我賭9成的人end
05/04 12:38, 44F

05/04 12:41, , 45F
看得出原PO很用心寫 不過太多英文夾雜 大概是習慣
05/04 12:41, 45F

05/04 12:57, , 46F
電源管理(Power Management)是很重要(important)的
05/04 12:57, 46F

05/04 12:57, , 47F
一堆非terminology的english夾雜 故意秀english ?
05/04 12:57, 47F

05/04 13:06, , 48F
要不要收精華阿
05/04 13:06, 48F

05/04 13:12, , 49F
感覺很厲害XD 可是好難懂
05/04 13:12, 49F

05/04 13:15, , 50F
寫中文好嗎
05/04 13:15, 50F

05/04 13:17, , 51F
05/04 13:17, 51F

05/04 13:27, , 52F
這是我此生在ptt看過最中英夾雜又不順的一篇
05/04 13:27, 52F

05/04 13:30, , 53F
不是說台灣人賭爛英文好的人
05/04 13:30, 53F

05/04 13:31, , 54F
你在歐美講兩句法文夾幾個英文單字 絕對被臭臉
05/04 13:31, 54F

05/04 14:26, , 55F
不愛大量中英文章
05/04 14:26, 55F

05/04 14:28, , 56F
我看的很順說
05/04 14:28, 56F

05/04 15:23, , 57F
不錯就是這種介紹文才不浪費時間看
05/04 15:23, 57F

05/04 16:01, , 58F
應該是平常都用英文習慣了...
05/04 16:01, 58F

05/04 16:03, , 59F
希望原PO多寫點 以正視聽阿
05/04 16:03, 59F

05/04 16:05, , 60F
這篇要收精華區 謝謝原po
05/04 16:05, 60F

05/04 16:05, , 61F
excellent work
05/04 16:05, 61F

05/04 16:19, , 62F
已收錄精華區
05/04 16:19, 62F

05/04 16:21, , 63F
這篇感覺很HTC= =...
05/04 16:21, 63F

05/04 16:21, , 64F
btw, 你沒寫PA
05/04 16:21, 64F

05/04 16:41, , 65F
文章寫得很好,軟硬體層面都有提到。感謝分享 推~
05/04 16:41, 65F

05/04 16:53, , 66F
然後,這些英文改成中文不會比較好懂,我是認真的= =
05/04 16:53, 66F

05/04 16:54, , 67F
有些地方還是可以改中文拉 不過大體上不改沒差
05/04 16:54, 67F

05/04 16:56, , 68F
工程寫法中英夾雜很正常阿,推內容,不過用電源管理
05/04 16:56, 68F

05/04 16:56, , 69F
當成標題有點不搭
05/04 16:56, 69F

05/04 16:58, , 70F
不過這種時候其實需要的是幹你教育部...
05/04 16:58, 70F

05/04 17:08, , 71F
感謝各位大大批評指教~英文單純是辭意上個人比較好
05/04 17:08, 71F

05/04 17:09, , 72F
表達,針對文字描述的確是一門藝術。會再次修正^^
05/04 17:09, 72F

05/04 22:43, , 73F
you的英文look起來very不錯
05/04 22:43, 73F

05/05 02:00, , 74F
換成日文應該就ok了
05/05 02:00, 74F

05/05 03:57, , 75F
推原PO用心,看得很順~ 有空把fight改回flight吧
05/05 03:57, 75F

05/05 14:37, , 76F
用心文,推
05/05 14:37, 76F
※ 編輯: mogmogmog (118.163.58.205), 05/05/2015 22:12:10

05/05 22:15, , 77F
感謝樓上提醒,已修正typo
05/05 22:15, 77F
文章代碼(AID): #1LHc5K6c (MobileComm)