對話小米工程師:深度解析MIUI9快如閃電如何煉成
8月11日,小米開始推送***批MIUI9開發(fā)版適配機型,包括了小米6、小米5X、紅米Note 4X(高通版),這是小米發(fā)布全新一代MIUI系統(tǒng)后,小米手機系統(tǒng)升級的***步。在此之前,從7月27日開始往后短短半個月時間,MIUI9內(nèi)測階段已經(jīng)有10萬人通過刷機或OTA在線升級方式使用上MIUI9。
在MIUI9發(fā)布后半個月時間里,翻看微博和知乎平臺上網(wǎng)友的評價,這10萬用上MIUI9的小米發(fā)燒友,對MIUI9打出的“快如閃電”體驗給予了很正面的評價,稱贊***一代MIUI系統(tǒng)“快得飛起”“快得不像安卓系統(tǒng)”。
這種“快”是怎么練就的?7月26日發(fā)布會當(dāng)天由于時間有限PPT上只是一帶而過,“應(yīng)用啟動加速”、“動態(tài)資源管控”、“內(nèi)存實時反碎片”等十幾個黑科技詞匯聽起來不明覺厲,但似乎又不明所以。本周小編與我們工程師進行了一場深度交流,深入研究MIUI9是如何“變快”的。
安卓手機使用越久會越卡?看工程師怎么說
安卓手機使用時間越長,系統(tǒng)運行速度會變慢,給普通用戶的感覺就是“卡頓”“不跟手”。同時使用iPhone和安卓手機的“雙槍黨”這種感受會更明顯一些。
對于工程師來說,這個現(xiàn)象是有悖常理的。因為手機的硬件配置,諸如CPU、內(nèi)存、GPU等不會隨著手機使用時間變長出現(xiàn)過多損耗。另一方面,雖然每臺手機里安裝的APP有幾十上百個,但最常用的也一般在10個以內(nèi),安卓手機的高配置是可以支撐這些應(yīng)用流暢運行的。
那么問題出在哪里?工程師向我們介紹,很重要一個原因是安卓系統(tǒng)的開放性,導(dǎo)致眾多APP在調(diào)用手機系統(tǒng)權(quán)限和資源時不克制乃至貪婪,甚至相互之間不斷交叉喚醒,發(fā)生CPU、GPU、I/O資源、網(wǎng)絡(luò)帶寬等資源不當(dāng)占用,該快的時候不快,發(fā)生卡頓。
作為手機操作系統(tǒng),過去四年時間,MIUI一直在做這方面的管束。比如2013年MIUI V5推出對齊喚醒,把多次不間斷喚醒管控為集中式喚醒;2015年MIUI7推出增強版對齊喚醒,續(xù)航時間比上一代MIUI6延長了25%。今年MIUI9,在資源管控方面可謂下了“重典”,重點分配資源給當(dāng)前正在使用的APP,約束其他非活躍應(yīng)用。同步實施的還有文件系統(tǒng)的升級,內(nèi)存實時反碎片技術(shù),核心組件擁塞控制機制,等等。出來的效果就是影響手機體驗的核心幾十項問題里,通過逐步克服優(yōu)化,讓手機的流暢體驗發(fā)生了質(zhì)變。接下來,在小米工程師的科普下,筆者帶大家來深入了解這些背后的黑科技。
用來武裝MIUI9的12項黑科技,“黑”在哪里?
根據(jù)小米的說法,MIUI9共采用了12項黑科技,來打造“快如閃電”的系統(tǒng)。它們分別是:應(yīng)用啟動加速,動態(tài)資源分配,關(guān)鍵場景響應(yīng)加速,核心組件擁塞控制,持續(xù)自動清理,全新文件系統(tǒng),文件系統(tǒng)緩存管理,內(nèi)存實時反碎片,異常排除機制,提高通訊效率,無線數(shù)據(jù)包加速,深度復(fù)蘇。由于文章篇幅有限,下面重點介紹其中5項黑科技技術(shù)。
1、動態(tài)資源分配
動態(tài)資源分配技術(shù),表面上是手機系統(tǒng)對于各種資源如CPU資源、內(nèi)存資源、I/O資源、網(wǎng)絡(luò)帶寬資源的合理分配,實際上背后需要非常龐大的數(shù)據(jù)支撐才能讓各種系統(tǒng)資源合理分配。簡單來講,MIUI9系統(tǒng)大幅提高當(dāng)前應(yīng)用在資源分配中的權(quán)重,對高優(yōu)先級應(yīng)用進行了更細(xì)致區(qū)分。
其實安卓原生系統(tǒng)很早就設(shè)置了“前臺應(yīng)用”“后臺應(yīng)用”兩個調(diào)度組,來管控資源分配。MIUI9更進一步,把介于前臺、后臺之間的應(yīng)用行為比如通知欄應(yīng)用放到第三個組,如果前臺應(yīng)用(即當(dāng)前正在使用的應(yīng)用)運行資源不足,會擠壓“第三組應(yīng)用”調(diào)用系統(tǒng)資源的份額,確保當(dāng)前應(yīng)用流暢運行。這個過程就像一個家長管理孩子們對零食、書籍、玩具……需求一樣,不能無盡應(yīng)允,也不能隨時隨地應(yīng)允,必須加以合理管控和引導(dǎo)才能教出一個“好孩子”。
2、全新文件系統(tǒng)
MIUI9采用了與***一代Android O系統(tǒng)相同的SDcardfs文件系統(tǒng),這是安卓系統(tǒng)未來的發(fā)展方向。
在此之前,原生Android為了讓各個應(yīng)用之間數(shù)據(jù)隔離,讓A應(yīng)用沒法讀取B應(yīng)用數(shù)據(jù),在系統(tǒng)中增加了一個叫“Fuse”的虛擬文件系統(tǒng),當(dāng)應(yīng)用需要讀寫虛擬SD卡中的數(shù)據(jù)時,必須經(jīng)過Fuse空間才可以傳送到系統(tǒng)底層EXT4空間,然后系統(tǒng)底層和Fuse虛擬空間會進行多次往返的數(shù)據(jù)傳送,最終再傳送給系統(tǒng)前端,實現(xiàn)一個完整的操作閉環(huán)(在實際操作手機的體驗中,這個過程是毫秒級的)。
因為“Fuse”虛擬文件系統(tǒng)和“EXT4”底層之間頻繁的數(shù)據(jù)讀寫會對應(yīng)用啟動速度產(chǎn)生影響。根據(jù)Google在Pixel上的測試數(shù)據(jù),通過“Fuse”虛擬文件系統(tǒng)隨機寫的速度損耗達(dá)30%-50%,而SDcardfs損耗則可以控制在5%以內(nèi),另外“Fuse”隨機讀取數(shù)據(jù)的速度損耗達(dá)到90%以上,SDcardfs可以控制在20%以內(nèi)。這正是這種巨大的讀寫速度提升,最終呈現(xiàn)給用戶的是App應(yīng)用相應(yīng)速度的大幅提升。
MIUI 9系統(tǒng)采用全新的SDcardfs文件系統(tǒng)后——這是***一代Android O/Android 8.0采用的技術(shù),代表著安卓系統(tǒng)未來的發(fā)展方向——應(yīng)用啟動速度有明顯的提升。比如在小米內(nèi)部測試中,游戲《陰陽師》在小米6上的啟動速度由9秒迅速縮減至5秒左右,效果非常明顯。
3、內(nèi)存實時反碎片
內(nèi)存實時反碎片也是MIUI9一項黑科技。那么什么是手機的內(nèi)存碎片?舉一個通俗的例子:如果我們把手機內(nèi)存看作一個記事本,數(shù)據(jù)讀寫看作在本子上寫入內(nèi)容。隨著手機啟動,各種應(yīng)用以及系統(tǒng)數(shù)據(jù)會不斷寫入內(nèi)存中,這時候會出現(xiàn)記事本上某一頁紙上沒有寫入內(nèi)容(“一頁紙”在內(nèi)存中的單位是4kb),而前后兩頁均被使用的情況,這時我們可以把這頁沒有使用的“紙張”看作一個內(nèi)存碎片——對于一臺4GB運行內(nèi)存(RAM)的手機來說,這類碎片可能是幾千個。
隨著手機使用時間增長,手機內(nèi)存中有可能會出現(xiàn)大量不連續(xù)的內(nèi)存碎片,當(dāng)有些數(shù)據(jù)的讀寫需要使用連續(xù)內(nèi)存頁時,雖然手機此時還有內(nèi)存,但由于它是不連續(xù)的,從而導(dǎo)致應(yīng)用數(shù)據(jù)無法讀寫。針對這個狀況,安卓原生系統(tǒng)其實做了不少工作,它通過內(nèi)存回收的方式“騰出”可以滿足當(dāng)前需求的連續(xù)內(nèi)存頁。
但遇到多任務(wù)切換或系統(tǒng)資源調(diào)用時,剛騰出來的A內(nèi)存,如果此時你去做B操作,A內(nèi)存數(shù)據(jù)已經(jīng)被回收了;當(dāng)你從B操作切回到A時,系統(tǒng)需要重新去找滿足A的連續(xù)內(nèi)存頁并寫入數(shù)據(jù)……如此反復(fù)倒騰,會加速了手機I/O硬件損耗,并且對系統(tǒng)流暢性大打折扣。
MIUI 9采用內(nèi)存實時反碎片技術(shù),通過復(fù)雜的算法來判斷內(nèi)存碎片是否可以被移動和整理,***程度保證系統(tǒng)內(nèi)存的實時連續(xù)性,以應(yīng)對隨時可能出現(xiàn)的連續(xù)內(nèi)存數(shù)據(jù)讀寫需求,從而減少因為內(nèi)存的不連續(xù)性導(dǎo)致的頻繁回收和重寫,讓系統(tǒng)的內(nèi)存讀寫時刻處于***狀態(tài),實現(xiàn)流暢運行。
4、文件系統(tǒng)緩存管理
和內(nèi)存實時反碎片功能有所關(guān)聯(lián)的是文件系統(tǒng)緩存管理技術(shù)。在手機打開存儲空間里的一個視頻或者圖片時,手機系統(tǒng)需要先將文件數(shù)據(jù)寫入系統(tǒng)內(nèi)存,再通過讀取系統(tǒng)內(nèi)存數(shù)據(jù)將文件展示到用戶眼前。
前面我們提到了當(dāng)系統(tǒng)連續(xù)內(nèi)存數(shù)據(jù)不滿足當(dāng)前操作所需時,會進行內(nèi)存回收釋放,這就可能導(dǎo)致部分熱點文件的數(shù)據(jù)被頻繁的回收和讀取。
MIUI9文件系統(tǒng)緩存管理就是通過系統(tǒng)算法判斷熱點文件所使用的系統(tǒng)緩存,對它們加以保護,防止出現(xiàn)因為內(nèi)存回收導(dǎo)致的數(shù)據(jù)反復(fù)讀取現(xiàn)象。
5、核心組件擁塞控制
由于文章篇幅所限,***再向大家介紹一個MIUI9黑科技——核心組件擁塞控制。
一般來講,手機系統(tǒng)核心組件包括“廣播”、“服務(wù)”、“界面”和“讀取數(shù)據(jù)庫”四大組件,每一個應(yīng)用都包含了這四個組件。例如高德地圖的發(fā)push消息(廣播),在導(dǎo)航時告訴手機系統(tǒng)不要熄屏(服務(wù)),APP的操作界面(界面),在多任務(wù)后臺停留(讀取數(shù)據(jù)庫)等等行為,都是通過“組件”來實現(xiàn)的。可以說所有APP在手機里的存在,都是表現(xiàn)為“組件的行為”。
不同APP組件之間存在資源的競爭關(guān)系,比如各個應(yīng)用都需要讀取數(shù)據(jù)庫,但系統(tǒng)一次只會允許一個應(yīng)用的系統(tǒng)組件讀取,其他應(yīng)用的“組件行為”就需要排隊等候。
為了能夠讓自己的系統(tǒng)組件得到快速響應(yīng),某些應(yīng)用會采取一些非常規(guī)手段進行插隊,這就可能導(dǎo)致其他應(yīng)用的組件需求無法得到及時滿足,從而導(dǎo)致系統(tǒng)出現(xiàn)卡頓、耗電等情況。
對此MIUI 9引入核心組件擁塞控制技術(shù),當(dāng)發(fā)現(xiàn)一些非常規(guī)組件頻繁發(fā)起響應(yīng)請求,長時間占用CPU、內(nèi)存等硬件資源時,系統(tǒng)會對其行為進行判斷,如果不是緊急需求,便會降低該應(yīng)用的優(yōu)先權(quán),比如限制其***可用CPU資源,從而保證其他的系統(tǒng)組件獲得足夠的硬件資源支持。
當(dāng)然,除了上面筆者所講到的幾項黑科技技術(shù),MIUI 9還采用了關(guān)鍵場景響應(yīng)加速、持續(xù)自動清理、異常排除機制、無線數(shù)據(jù)包加速等等黑科技,這里就不一一展開了,下次有機會再找小米工程師來進行科普??傊谶@些黑科技加持下,小米有底氣喊出“MIUI9快如閃電”的口號,并最終得到米粉和媒體的認(rèn)可。
死磕“快體驗”,MIUI9升級計劃按批次有序推進
快如閃電的MIUI9還在路上。
根據(jù)發(fā)布會公布的官方消息,MIUI9開發(fā)版對小米機型的適配,分為3個批次,***批分別甄選了一個小米機型(小米6)和一個紅米機型(紅米Note4X高通版),及一部新手機(小米5X)。第二批為小米MIX、小米Note 2、小米5系列等熱門機型,第三批為眾多紅米和紅米Note系列機型。MIUI9穩(wěn)定版升級計劃以MIUI論壇公告和MIUI官方微博/微信為準(zhǔn)。
從機型適配的數(shù)量來看,MIUI9不亞于以往版本,甚至對于米粉期望比較低的小米2/2S都進行了適配。不過工程師告訴我們,下一代MIUI系統(tǒng)適配小米機型的數(shù)量肯定會減少,原計劃中小米2/2S是不在適配序列的。并且將來為了確保每個機型更爽快的系統(tǒng)體驗,還在討論以“24個月”為標(biāo)準(zhǔn)規(guī)劃MIUI新版本的升級適配工作。
據(jù)小米工程師介紹,今年的適配計劃確實與往年不太一樣。以往MIUI新版本發(fā)布,是摧枯拉朽式的對齊發(fā)布,快速升級,快速普及。今年MIUI9穩(wěn)扎穩(wěn)打,主攻品質(zhì),主攻“快如閃電”,先在部分機型上驗證成功模式,再復(fù)制到其他機型上,確實需要一個過程。據(jù)稱2017年結(jié)束前工程師將會集中精力有序推進MIUI9對小米機型的適配工作。所謂“魚與熊掌不可兼得”,期待早日用上MIUI9的米粉要耐心等待咯。
現(xiàn)在MIUI 9首批內(nèi)測已經(jīng)結(jié)束,8月11日也是MIUI9***批開發(fā)版發(fā)布時間,小米6、小米5X、紅米Note 4X已經(jīng)可以正式升級MIUI9開發(fā)版。從過去一段時間來看,10萬米粉和主流媒體都給予了MIUI9高度評價,認(rèn)可它的快如閃電。認(rèn)可了發(fā)布會上MIUI負(fù)責(zé)人洪鋒所提的“MIUI 9也許是最快的安卓系統(tǒng)”的說法。
隨著MIUI 9的不斷適配升級,將會有更多人體驗到全新MIUI系統(tǒng)帶來的流暢體驗。筆者也希望看到更多手機廠商在操作系統(tǒng)的基礎(chǔ)體驗上更加用心和負(fù)責(zé),讓國產(chǎn)手機的操作體驗再上新臺階。




































