【轉】這是一篇你會看不懂的文章,講透了小米如何錘鍊MIUI9閃電系統

本文轉載,原作者MIUI

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

在MIUI9發布後半個多月時間裡,翻看微博和知乎平台上網友的評價,這10萬率先用上MIUI9的發燒友們,對MIUI9打出的「快如閃電」體驗給予了很正面的評價,稱讚最新一代MIUI系統「快得飛起」「快得不像安卓系統」。

MIUI9是真的快!用過就知道。

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

安卓手機會越用越卡?

看工程師怎麼說

安卓手機使用時間越長,系統運行速度會變慢,給普通用戶的感覺就是「卡頓」「不跟手」,這似乎是普遍的現象。如果你同時使用iPhone和安卓手機,對比之下這種感受會更加明顯一些。

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

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

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

前 方 高 能

攻城獅要敲黑板劃重點了,請備好小本本

武裝 MIUI9 的12項黑科技

「黑」在哪裡?

小米採用了12項黑科技來打造「快如閃電」的MIUI9系統。它們分別是:應用啟動加速,動態資源分配,關鍵場景響應加速,核心組件擁塞控制,持續自動清理,全新文件系統,文件系統緩存管理,內存實時反碎片,異常排除機制,提高通訊效率,無線數據包加速,深度復甦。由於文章篇幅有限,下面重點介紹其中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%以內。這正是這種巨大的讀寫速度提升,最終呈現給用戶的是應用響應速度的大幅提升。

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資源,從而保證其他的系統組件獲得足夠的硬體資源支持。

當然,除了上面詳細拆解的5項黑科技,MIUI 9還採用了關鍵場景響應加速、持續自動清理、異常排除機制、無線數據包加速等等技術,這裡就不一一展開了,下次有機會再找小米工程師來做一波科普。總之在這些黑科技加持下,小米才有底氣喊出「MIUI9快如閃電」的口號,並得到了米粉和媒體的認可。

死磕「快體驗」

MIUI9升級計劃按批次有序推進

快如閃電的MIUI正在路上。

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

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

工程師說,今年的適配計劃確實與往年不太一樣。以往MIUI新版本發布,是摧枯拉朽式的對齊發布,快速升級,快速普及。

今年MIUI9穩紮穩打,主打快如閃電,主攻品質,先在部分機型上驗證成功「閃電」模式,再複製到其他機型上,這需要一個過程。2017年結束前MIUI工程師們將集中精力有序推進MIUI9對小米機型的升級適配工作。「魚與熊掌不可兼得」,期待早日用上MIUI9的米粉還要耐心等待,最快9月底可以向第三批機型推送MIUI9開發版升級。

最後,向所有幕後的工程師們致敬

你們辛苦了!

探索永不止步,哪怕只好1%,我們也願意多投入100%!(3)_數碼_科技_bilibili_嗶哩嗶哩 http://www.bilibili.com/video/av12613044/index_3.html
推薦閱讀:

cp1200連手機列印照片時如何排版?
大河報報道 :電視開機廣告侵犯消費者權益,要能一鍵關閉。
全球最重磅的數碼藝術展來了!我們為你總結了這10件絕對不能錯過的作品
為什麼大多數人對小米的要求那麼高? - 知乎
MIUI9、小米5X、銷量逆襲……小米把越來越窄的路走的越來越寬

TAG:手机 | 小米科技 | 数码 |