閱讀370 返回首頁    go 魔獸


IT168|對話小米工程師:深度解析MIUI9快如閃電如何煉成

   8月11日,小米開始推送第一批MIUI9開發版適配機型,包括了小米6、小米5X、紅米Note 4X(高通版),這是小米發布全新一代MIUI係統後,小米手機係統升級的第一步。在此之前,從7月27日開始往後短短半個月時間,MIUI9內測階段已經有10萬人通過刷機或OTA在線升級方式使用上MIUI9。

  在MIUI9發布後半個月時間裏,翻看微博和知乎平台上網友的評價,這10萬用上MIUI9的小米發燒友,對MIUI9打出的“快如閃電”體驗給予了很正麵的評價,稱讚最新一代MIUI係統“快得飛起”“快得不像安卓係統”。

  這種“快”是怎麼練就的?7月26日發布會當天由於時間有限PPT上隻是一帶而過,“應用啟動加速”、“動態資源管控”、“內存實時反碎片”等十幾個黑科技詞匯聽起來不明覺厲,但似乎又不明所以。本周小編與我們工程師進行了一場深度交流,深入研究MIUI9是如何“變快”的。

  安卓手機使用越久會越卡?看工程師怎麼說

  安卓手機使用時間越長,係統運行速度會變慢,給普通用戶的感覺就是“卡頓”“不跟手”。同時使用iPhone和安卓手機的“雙槍黨”這種感受會更明顯一些。

  對於工程師來說,這個現象是有悖常理的。因為手機的硬件配置,諸如CPU、內存、GPU等不會隨著手機使用時間變長出現過多損耗。另一方麵,雖然每台手機裏安裝的APP有幾十上百個,但最常用的也一般在10個以內,安卓手機的高配置是可以支撐這些應用流暢運行的。

  那麼問題出在哪裏?工程師向我們介紹,很重要一個原因是安卓係統的開放性,導致眾多APP在調用手機係統權限和資源時不克製乃至貪婪,甚至相互之間不斷交叉喚醒,發生CPU、GPU、I/O資源、網絡帶寬等資源不當占用,該快的時候不快,發生卡頓。

  作為手機操作係統,過去四年時間,MIUI一直在做這方麵的管束。比如2013年MIUI V5推出對齊喚醒,把多次不間斷喚醒管控為集中式喚醒;2015年MIUI7推出增強版對齊喚醒,續航時間比上一代MIUI6延長了25%。今年MIUI9,在資源管控方麵可謂下了“重典”,重點分配資源給當前正在使用的APP,約束其他非活躍應用。同步實施的還有文件係統的升級,內存實時反碎片技術,核心組件擁塞控製機製,等等。出來的效果就是影響手機體驗的核心幾十項問題裏,通過逐步克服優化,讓手機的流暢體驗發生了質變。接下來,在小米工程師的科普下,筆者帶大家來深入了解這些背後的黑科技。

  用來武裝MIUI9的12項黑科技,“黑”在哪裏?

  根據小米的說法,MIUI9共采用了12項黑科技,來打造“快如閃電”的係統。它們分別是:應用啟動加速,動態資源分配,關鍵場景響應加速,核心組件擁塞控製,持續自動清理,全新文件係統,文件係統緩存管理,內存實時反碎片,異常排除機製,提高通訊效率,無線數據包加速,深度複蘇。由於文章篇幅有限,下麵重點介紹其中5項黑科技技術。

  1、動態資源分配

  動態資源分配技術,表麵上是手機係統對於各種資源如CPU資源、內存資源、I/O資源、網絡帶寬資源的合理分配,實際上背後需要非常龐大的數據支撐才能讓各種係統資源合理分配。簡單來講,MIUI9係統大幅提高當前應用在資源分配中的權重,對高優先級應用進行了更細致區分。

  其實安卓原生係統很早就設置了“前台應用”“後台應用”兩個調度組,來管控資源分配。MIUI9更進一步,把介於前台、後台之間的應用行為比如通知欄應用放到第三個組,如果前台應用(即當前正在使用的應用)運行資源不足,會擠壓“第三組應用”調用係統資源的份額,確保當前應用流暢運行。這個過程就像一個家長管理孩子們對零食、書籍、玩具……需求一樣,不能無盡應允,也不能隨時隨地應允,必須加以合理管控和引導才能教出一個“好孩子”。

  2、全新文件係統

  MIUI9采用了與最新一代Android O係統相同的SDcardfs文件係統,這是安卓係統未來的發展方向。

  在此之前,原生Android為了讓各個應用之間數據隔離,讓A應用沒法讀取B應用數據,在係統中增加了一個叫“Fuse”的虛擬文件係統,當應用需要讀寫虛擬SD卡中的數據時,必須經過Fuse空間才可以傳送到係統底層EXT4空間,然後係統底層和Fuse虛擬空間會進行多次往返的數據傳送,最終再傳送給係統前端,實現一個完整的操作閉環(在實際操作手機的體驗中,這個過程是毫秒級的)。

  因為“Fuse”虛擬文件係統和“EXT4”底層之間頻繁的數據讀寫會對應用啟動速度產生影響。根據Google在Pixel上的測試數據,通過“Fuse”虛擬文件係統隨機寫的速度損耗達30%-50%,而SDcardfs損耗則可以控製在5%以內,另外“Fuse”隨機讀取數據的速度損耗達到90%以上,SDcardfs可以控製在20%以內。這正是這種巨大的讀寫速度提升,最終呈現給用戶的是App應用相應速度的大幅提升。

  MIUI 9係統采用全新的SDcardfs文件係統後——這是最新一代Android O/Android 8.0采用的技術,代表著安卓係統未來的發展方向——應用啟動速度有明顯的提升。比如在小米內部測試中,遊戲《陰陽師》在小米6上的啟動速度由9秒迅速縮減至5秒左右,效果非常明顯。

  3、內存實時反碎片

  內存實時反碎片也是MIUI9一項黑科技。那麼什麼是手機的內存碎片?舉一個通俗的例子:如果我們把手機內存看作一個記事本,數據讀寫看作在本子上寫入內容。隨著手機啟動,各種應用以及係統數據會不斷寫入內存中,這時候會出現記事本上某一頁紙上沒有寫入內容(“一頁紙”在內存中的單位是4kb),而前後兩頁均被使用的情況,這時我們可以把這頁沒有使用的“紙張”看作一個內存碎片——對於一台4GB運行內存(RAM)的手機來說,這類碎片可能是幾千個。

  隨著手機使用時間增長,手機內存中有可能會出現大量不連續的內存碎片,當有些數據的讀寫需要使用連續內存頁時,雖然手機此時還有內存,但由於它是不連續的,從而導致應用數據無法讀寫。針對這個狀況,安卓原生係統其實做了不少工作,它通過內存回收的方式“騰出”可以滿足當前需求的連續內存頁。

  但遇到多任務切換或係統資源調用時,剛騰出來的A內存,如果此時你去做B操作,A內存數據已經被回收了;當你從B操作切回到A時,係統需要重新去找滿足A的連續內存頁並寫入數據……如此反複倒騰,會加速了手機I/O硬件損耗,並且對係統流暢性大打折扣。

  MIUI 9采用內存實時反碎片技術,通過複雜的算法來判斷內存碎片是否可以被移動和整理,最大程度保證係統內存的實時連續性,以應對隨時可能出現的連續內存數據讀寫需求,從而減少因為內存的不連續性導致的頻繁回收和重寫,讓係統的內存讀寫時刻處於最佳狀態,實現流暢運行。

  4、文件係統緩存管理

  和內存實時反碎片功能有所關聯的是文件係統緩存管理技術。在手機打開存儲空間裏的一個視頻或者圖片時,手機係統需要先將文件數據寫入係統內存,再通過讀取係統內存數據將文件展示到用戶眼前。

  前麵我們提到了當係統連續內存數據不滿足當前操作所需時,會進行內存回收釋放,這就可能導致部分熱點文件的數據被頻繁的回收和讀取。

  MIUI9文件係統緩存管理就是通過係統算法判斷熱點文件所使用的係統緩存,對它們加以保護,防止出現因為內存回收導致的數據反複讀取現象。

  5、核心組件擁塞控製

  由於文章篇幅所限,最後再向大家介紹一個MIUI9黑科技——核心組件擁塞控製。

  一般來講,手機係統核心組件包括“廣播”、“服務”、“界麵”和“讀取數據庫”四大組件,每一個應用都包含了這四個組件。例如高德地圖的發push消息(廣播),在導航時告訴手機係統不要熄屏(服務),APP的操作界麵(界麵),在多任務後台停留(讀取數據庫)等等行為,都是通過“組件”來實現的。可以說所有APP在手機裏的存在,都是表現為“組件的行為”。

  不同APP組件之間存在資源的競爭關係,比如各個應用都需要讀取數據庫,但係統一次隻會允許一個應用的係統組件讀取,其他應用的“組件行為”就需要排隊等候。

  為了能夠讓自己的係統組件得到快速響應,某些應用會采取一些非常規手段進行插隊,這就可能導致其他應用的組件需求無法得到及時滿足,從而導致係統出現卡頓、耗電等情況。

  對此MIUI 9引入核心組件擁塞控製技術,當發現一些非常規組件頻繁發起響應請求,長時間占用CPU、內存等硬件資源時,係統會對其行為進行判斷,如果不是緊急需求,便會降低該應用的優先權,比如限製其最大可用CPU資源,從而保證其他的係統組件獲得足夠的硬件資源支持。

  當然,除了上麵筆者所講到的幾項黑科技技術,MIUI 9還采用了關鍵場景響應加速、持續自動清理、異常排除機製、無線數據包加速等等黑科技,這裏就不一一展開了,下次有機會再找小米工程師來進行科普。總之在這些黑科技加持下,小米有底氣喊出“MIUI9快如閃電”的口號,並最終得到米粉和媒體的認可。

  死磕“快體驗”,MIUI9升級計劃按批次有序推進

  快如閃電的MIUI9還在路上。

  根據發布會公布的官方消息,MIUI9開發版對小米機型的適配,分為3個批次,第一批分別甄選了一個小米機型(小米6)和一個紅米機型(紅米Note4X高通版),及一部新手機(小米5X)。第二批為小米MIX、小米Note 2、小米5係列等熱門機型,第三批為眾多紅米和紅米Note係列機型。MIUI9穩定版升級計劃以MIUI論壇公告和MIUI官方微博/微信為準。

  從機型適配的數量來看,MIUI9不亞於以往版本,甚至對於米粉期望比較低的小米2/2S都進行了適配。不過工程師告訴我們,下一代MIUI係統適配小米機型的數量肯定會減少,原計劃中小米2/2S是不在適配序列的。並且將來為了確保每個機型更爽快的係統體驗,還在討論以“24個月”為標準規劃MIUI新版本的升級適配工作。

  據小米工程師介紹,今年的適配計劃確實與往年不太一樣。以往MIUI新版本發布,是摧枯拉朽式的對齊發布,快速升級,快速普及。今年MIUI9穩紮穩打,主攻品質,主攻“快如閃電”,先在部分機型上驗證成功模式,再複製到其他機型上,確實需要一個過程。據稱2017年結束前工程師將會集中精力有序推進MIUI9對小米機型的適配工作。所謂“魚與熊掌不可兼得”,期待早日用上MIUI9的米粉要耐心等待咯。

  現在MIUI 9首批內測已經結束,8月11日也是MIUI9第一批開發版發布時間,小米6、小米5X、紅米Note 4X已經可以正式升級MIUI9開發版。從過去一段時間來看,10萬米粉和主流媒體都給予了MIUI9高度評價,認可它的快如閃電。認可了發布會上MIUI負責人洪鋒所提的“MIUI 9也許是最快的安卓係統”的說法。

  隨著MIUI 9的不斷適配升級,將會有更多人體驗到全新MIUI係統帶來的流暢體驗。筆者也希望看到更多手機廠商在操作係統的基礎體驗上更加用心和負責,讓國產手機的操作體驗再上新台階。


查看原文

免責聲明:本文版權歸原作者所有,文中觀點不代表小米社區


最後更新:2017-08-13 22:57:38

  上一篇:go MIUI9什麼時候能推送使用呀?
  下一篇:go MIUI9需要自己手動刷,別等推送了