8月11日, 小米開始推送第一批MIUI9開發版適配機型, 包括了小米6、小米5X、紅米Note 4X(高通版), 這是小米發佈全新一代MIUI系統後, 小米手機升級MIUI9的第一步。
MIUI9是真的快!用過就知道。
這種“快”是怎麼練就的?7月26日發佈會當天由於時間有限PPT上只是一帶而過, “應用啟動加速”、“動態資源管控”、“記憶體即時反碎片”等十幾個黑科技詞彙聽起來不明覺厲, 但似乎又不明所以。 本周小編與我們工程師進行了一場深度交流, 深入研究MIUI9是如何“變快”的。
安卓手機會越用越卡?看工程師怎麼說安卓手機使用時間越長, 系統運行速度會變慢, 給普通用戶的感覺就是“卡頓”“不跟手”, 這似乎是普遍的現象。 如果你同時使用iPhone和安卓手機, 對比之下這種感受會更加明顯一些。
對於工程師來說, 這是有悖常理的。
那麼問題出在哪裡?工程師向我們介紹, 很重要一個原因是安卓系統的開放性, 導致眾多APP在調用手機系統許可權和資源時不克制乃至貪婪, 甚至相互之間不斷交叉喚醒, 發生CPU、GPU、I/O資源、網路頻寬等資源不當佔用, 該快的時候不快, 發生卡頓。
作為手機作業系統, MIUI過去四年時間一直在做這方面的管束。 比如2013年MIUI V5推出對齊喚醒, 把多次不間斷喚醒管控為集中式喚醒;2015年MIUI 7推出增強版對齊喚醒, 續航時間比上一代MIUI 6延長了25%。
前方高能 !攻城獅要敲黑板劃重點了, 請備好小本本
武裝 MIUI9 的12項黑科技, “黑”在哪裡?小米採用了12項黑科技來打造“快如閃電”的MIUI9系統。 它們分別是:應用啟動加速, 動態資源配置, 關鍵場景回應加速, 核心元件擁塞控制, 持續自動清理, 全新檔案系統, 檔案系統緩存管理,
1、動態資源配置
動態資源配置技術, 表面上是手機系統對於各種資源如CPU資源、記憶體資源、I/O資源、網路頻寬資源的合理分配,
其實安卓原生系統很早就設置了“前臺應用”“後臺應用”兩個調度組, 來管控資源配置。 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不亞於以往版本,甚至對於米粉期望比較低的小米2/2S都進行了適配。不過工程師告訴我們,下一代MIUI系統適配小米機型的數量肯定會減少,原計劃中小米2/2S是不在適配序列的。並且將來為了確保每個機型更爽快的系統體驗,還在討論以“24個月”為標準規劃MIUI新版本的升級適配工作。
工程師說,今年的適配計畫確實與往年不太一樣。以往MIUI新版本發佈,是摧枯拉朽式的對齊發佈,快速升級,快速普及。
今年MIUI9穩紮穩打,主打快如閃電,主攻品質,先在部分機型上驗證成功“閃電”模式,再複製到其他機型上,這需要一個過程。2017年結束前MIUI工程師們將集中精力有序推進MIUI9對小米機型的升級適配工作。“魚與熊掌不可兼得”,期待早日用上MIUI9的米粉還要耐心等待,最快9月底可以向第三批機型推送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不亞於以往版本,甚至對於米粉期望比較低的小米2/2S都進行了適配。不過工程師告訴我們,下一代MIUI系統適配小米機型的數量肯定會減少,原計劃中小米2/2S是不在適配序列的。並且將來為了確保每個機型更爽快的系統體驗,還在討論以“24個月”為標準規劃MIUI新版本的升級適配工作。
工程師說,今年的適配計畫確實與往年不太一樣。以往MIUI新版本發佈,是摧枯拉朽式的對齊發佈,快速升級,快速普及。
今年MIUI9穩紮穩打,主打快如閃電,主攻品質,先在部分機型上驗證成功“閃電”模式,再複製到其他機型上,這需要一個過程。2017年結束前MIUI工程師們將集中精力有序推進MIUI9對小米機型的升級適配工作。“魚與熊掌不可兼得”,期待早日用上MIUI9的米粉還要耐心等待,最快9月底可以向第三批機型推送MIUI9開發版升級。