【F2FS LFS SSR】华为如何打造智能终端的有趣灵魂?(上)
“智能終端產(chǎn)品的靈魂是它所依賴的軟件平臺以及與之相匹配的服務(wù)和生態(tài)”華為講師方衛(wèi)慶在安卓綠色聯(lián)盟開發(fā)者大會中講到。
華為如何打造智能終端的有趣靈魂系列分為(上)(下)兩個篇章,本篇將對華為天生快·一生快技術(shù)產(chǎn)生的背景和一系列技術(shù)組合拳的打法進(jìn)行詳細(xì)解讀。
每?次體驗提升都是復(fù)雜系統(tǒng)?程
端側(cè)的用戶體驗是一項非常復(fù)雜的系統(tǒng)性功能整合。上圖右側(cè)是安卓原生系統(tǒng)架構(gòu)示意圖,左側(cè)是EMUI架構(gòu)圖,每一次系統(tǒng)側(cè)的改進(jìn)都是從底層貫穿到上層的全面提升,具體架構(gòu)從下往上包括:
芯片層,由CPU、GPU、DSP、NPU、基帶、傳感器、多媒體器件等組成;
內(nèi)核層包括驅(qū)動層、硬件抽象層。其中硬件抽象層又包括進(jìn)程管理、內(nèi)存管理、文件系統(tǒng)、網(wǎng)絡(luò)管理等組件;
中間件主要包括大量的C和C++庫,以及Java虛擬機;
再往上是跟開發(fā)者息息相關(guān)的框架層,這一層提供了大量的基礎(chǔ)核心功能,并為上層應(yīng)用提供API接口;
最上層是應(yīng)用層,包括安卓的原生應(yīng)用、EMUI應(yīng)用、開發(fā)者第三方應(yīng)用。
天生快·一生快
1.安卓系統(tǒng)卡頓的原因:
①安卓系統(tǒng)管理松散
應(yīng)用缺少約束,應(yīng)用質(zhì)量參差不齊。
②系統(tǒng)資源不足
應(yīng)用沒有優(yōu)先級,應(yīng)用鏈加劇資源消耗。
③存儲空間碎片化
經(jīng)常保存、刪除文件,導(dǎo)致存儲空間碎片化,存取文件速度下降。
④數(shù)據(jù)日益龐大
圖片、聯(lián)系人等數(shù)據(jù)量越來越大,數(shù)據(jù)庫查詢、搜索速度緩慢。
2.一系列技術(shù)的組合
針對四個主要問題,通過一系列的技術(shù)組合拳,達(dá)成天生快·一生快解決方案。
F2FS新型文件系統(tǒng)
F2FS是為閃存設(shè)計的文件系統(tǒng),相比原有的EXT4文件系統(tǒng),F2FS的隨機寫入優(yōu)化效率提升60%,磁片碎片化的情況也大大改善。
F2FS的關(guān)鍵技術(shù):
①數(shù)據(jù)分配管理算法
上圖中,數(shù)據(jù)管理分為兩個區(qū)域,元數(shù)據(jù)區(qū)域和數(shù)據(jù)區(qū)域。
元數(shù)據(jù)區(qū)域主要寫入的是SIT、NAT等,采用的是就地寫入的方案。
數(shù)據(jù)區(qū)采用的是異地寫入的方案,節(jié)點信息和真正的數(shù)據(jù)信息都被寫入數(shù)據(jù)區(qū)域,同時由于在數(shù)據(jù)區(qū)域使用異地寫入,所以會引入SSR和LFS多點寫入技術(shù)。
a.SSR和LFS協(xié)同配合技術(shù)
傳統(tǒng)的SSR異地寫入方式隨機寫入效率比較低,所以引入了新的LFS技術(shù),它把原來的數(shù)據(jù)塊標(biāo)為“臟”的同時并不需要直接做垃圾回收,而是直接在“臟”的數(shù)據(jù)塊上寫數(shù)據(jù)。之所以不直接全都采用SSR技術(shù)是因為大量的使用SSR會造成磁盤碎片的密集。
所以這是一個協(xié)同技術(shù),在空閑塊少的情況下采用SSR技術(shù);空閑塊多,大于5%的情況下使用LFS技術(shù),這樣可以在壽命和性能之間達(dá)成很好的平衡。
b.多點寫入技術(shù)
數(shù)據(jù)區(qū)采用多點寫入的方式,這種方式的優(yōu)點是將不同類型、不同熱度的數(shù)據(jù)寫入不同的段,提高垃圾回收效率。
②引入NAT
此技術(shù)的英文全稱是Node Address Table,它是一個映射表。
傳統(tǒng)的LFS文件系統(tǒng)會帶來一個非常有趣的現(xiàn)象——滾雪球效應(yīng)。首先,一旦改變了任何一個數(shù)據(jù),它便會連續(xù)不斷的遞歸到樹狀結(jié)果根部,引起間接索引點、直接索引點以及Checkpoint的改變,帶來大量資源的浪費,引起后期垃圾回收效率降低。所以引入索引表最大的目的是為了減少這些節(jié)點。
建立映射表后,只需更改數(shù)據(jù)文件、直接節(jié)點信息、NAT和CheckPoint就可以完成工作,而不需要占用大量磁盤空間,大大減輕GC的負(fù)擔(dān)。但是這種二級指針的結(jié)構(gòu)會造成一個問題:NAT的尋址比較慢。
所以通過將NAT信息寫到原數(shù)據(jù)區(qū),很大程度上緩解尋址效率底的問題。
③其他關(guān)鍵技術(shù)
a.垃圾回收算法
對于F-GC直接使? Greedy回收策略,選出需要回收的段 ;對于B-GC,如果空閑空間少,也會直接使用Greedy回收策略,而如果空閑空間多,則會使用CB策略。
b.異常掉電保護(hù)
使用Checkpoint機制來保證文件系統(tǒng)的一致性。F2FS維護(hù)了兩份檢查點:一個是穩(wěn)定的,?個是正在使用。在恢復(fù)過程中,使用的是穩(wěn)定版本。
3.FSTRIM上的優(yōu)化解決原有設(shè)計的不足
FSTRIM是用戶態(tài)觸發(fā)的垃圾回收方案。它的觸發(fā)機制是這樣的:凌晨3點以后,設(shè)備充電并待機70分鐘以上,就會觸發(fā)垃圾回收的行為。
但有一個問題,比如有些中老年用戶喜歡晚上關(guān)機充電,有些人喜歡白天充電,可能無法觸發(fā)FSTRIM,磁盤碎片得不到清理,怎么解決這個問題? EMUI工程師調(diào)整了策略,在晚上11點之后,用戶充電的同時待機半小時以上,就開始觸發(fā)FSTRIM。
另外,針對習(xí)慣白天充電的用戶,設(shè)計了另外一條機制:當(dāng)手機72小時沒有進(jìn)行FSTRIM時,如果用戶插上電源,待機半小時便開始FSTRIM。
而且工程師設(shè)計了實時可打斷的機制,實現(xiàn)方式為:在Framework 層監(jiān)控用戶屏幕事件,一旦有屏幕idle結(jié)束,就會觸發(fā)Stoptrim命令到Vold,然后Vold 發(fā)送Signal interrupt信號給trimtask來請求結(jié)束Trim,最后在kernel 層確認(rèn)pending。
更精細(xì)的TRIM優(yōu)化
總結(jié)
以上是生活随笔為你收集整理的【F2FS LFS SSR】华为如何打造智能终端的有趣灵魂?(上)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 类前置声明的使用
- 下一篇: C++中的模板展开问题