小米系統性能的優化

jopen 8年前發布 | 15K 次閱讀 Android開發 移動開發

張揚:小米科技系統工程師,專注操作系統機制研究以及軟件架構和接口設計,曾經在索尼和創新工廠從事系統底層及中間件的研發,加入小米后主要負責安全和系統優化方面的研發及技術框架搭建。

小米的MIUI系統是針對Android深度定制的操作系統,在Android開放的設計之下,各個應用有了充分的發揮空間,但是與此同時,系統資源(如 內存,電量等)也在應用的無節制使用之下顯示出疲態。此次討論的主題就是站在操作系統設計者的角度如何在應用權限和系統資源之間做平衡的。以下來分享精彩內容。

移動系統現狀

圖1

如圖1,智能手機已經普及,每個人平均每月要經常使用6.8個APPS,近一半的移動互聯網用戶目前將手機作為他們的首選或唯一的上網設備。

移動系統和應用之間到底是一個什么關系呢?不論操作系統還是應用,最終都是要服務于用戶的,用戶需求就是一個大的戰場,各個APP是直接和用戶去交互,服務于用戶的。那么手機就是一個大戰場,應用程序就好比軍隊, 操作系統就是后勤。

APPS都是各自為戰,完全不考慮其它,但手機資源是有限的。要想讓手機的操作系統跑的很順利,這就需要對電量,流量,內存進行優化。

自啟動涉及到方方面面的,是一個比較宏觀的概念,移動應用自啟動,前1000熱門應用,70%以上需要自啟動。

圖2電流儀測手機耗電圖

如圖2,用隨機裝的50個應用進行測試,觀察自啟動管理前后的耗電圖。應用自啟動時,我們會設置一些比較常用的(比如微信),還有另一些默認是不會自啟動的,用戶可以自己手動把自啟動打開,如果不設置自啟動,有時會出現消息下達不及時而導致消耗,那么自啟動是不是完美方案呢?單從系統環境去做這個事情還是比較苦難的,因為有各式各樣的應用,它們的行為也千姿百態的,需要運行的數據量很大,系統不會有太多策略去判斷的。更好的方式是靠大家配合,各個應用應該把系統資源的消耗和占用作為自己的應用是否好的一個指標。

 

電量優化

 

 

  圖3 andriod原生態

圖4 MIUI V5

安卓為什么會費電,主要原因是CPU沒有斷,所以我們關注的是當手機不用時怎么樣控制cpu的喚醒,圖3中安卓原生態時的幾個應用,它們不知道彼此的存在,它們只會根據自己的邏輯判斷什么時候喚醒CPU,導致耗電一直很高,CPU很難進入休眠狀態。圖4的MIUI V5對齊喚醒機制,在各個應用設置自己喚醒的時候,V5進行統一判斷,在某個閾值之內把一些應用調到一起喚醒,經過測試如圖5,耗電量降低了很多。

 圖5待機耗電測試

 

 

圖6 iOS 7 在2013年9月WWDC發布同樣的功能

理想方案:在后面的改善過程,我們可能會加一個獨立的小芯片,主cpu還是一樣的,小芯片的作用是監控數據的喚醒。此外,我們會把所有的鬧鐘操作統一由系統接管,你只需要告訴系統你什么時候要醒,系統可能會給用戶發一些狀態答案。

流量優化

 流量消耗原因:后臺應用默默跑流量。

解決方案:開源節流。開源:有更多可以使用的流量;節流:控制應用的聯網行為。

內存優化

基于后臺APP的內存優化;調整ActivityManagerService的參數,利用IActivityManager提供的接口對進程進行控制;ZRAM。

釋放OPENGL的資源;將dalvik占用內存的bitmap交換到EMMC;將dalvik占用的空閑的物理內存釋放出來;設置合適的MAX_TASK, MAX_HIDDEN_APPS;將不經常使用的進程占用盡量少的內存,占用盡量多的緩存。

                                                                                                                                    

                                                                                                                              PPT下載地址:http://club.alibabatech.org/resource_detail.htm?topicId=162

 

 

666

來自: http://yq.aliyun.com/articles/124

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!