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