HarmonyOS整體框架分為四個層級,如圖1所示。從上到下,依次為:第一層是應用層,主要涵蓋系統應用、Launcher、設置,以及三方應用。第二層是框架層,提供基礎UI框架、用戶程序框架以及能力模塊框架。第三層是系統服務層,讓HarmonyOS具有分布式流轉負載的能力。大家看到的高速多設備協同能力就是由該層級提供。而承載整個操作系統,同時發揮芯片算力的基石就沉淀在第四層——內核層。宏觀來說,內核的主要工作包含芯片資源管理、軟件任務調度,以及銜接用戶空間與系統調用能力。
圖1 HarmonyOS整體框架
本期,我們要重點給大家講一講HarmonyOS的內核層。
一、HarmonyOS內核構成
為了支撐HarmonyOS在多設備、多場景下的性能表現,內核主要由三部分組成,如下圖所示:
圖2 內核的組成
HarmonyOS內核組件:具有智慧化資源管理能力的內核組件,包括CPU/GPU資源管理,內存管理,IO調度管理以及高效的文件系統等。
標準的Linux內核:兼容了LTS Linux主線版本,做好外圍生態的對接。
硬件平臺BSP:面向各種不同芯片與硬件平臺(包含1+8+N的多種設備)的BSP(board support package,板級支撐包)基礎能力。
本期要為大家介紹的就是HarmonyOS內核組件的三項核心技術:高能效CPU資源調度、Hyperhold內存管理引擎和高效的文件系統。下面為大家一一揭曉~
二、高能效CPU資源調度
業界多數的操作系統都是基于標準的Linux內核開發的。傳統的Linux內核,早期用于服務器和PC設備,與我們現在用于手機、平板等的交互式內核相比,它們的設計理念和資源管理方式有所不同。以CPU資源為例,傳統的Linux內核存在以下典型問題:
1. 同優先級的業務過多,每次調度都不一定選擇到關鍵進程。
傳統的Linux內核偏向于在多用戶的場景下公平地分配資源。比較明顯的特征是,多個用戶并發訪問,并發使用公共資源。由于同優先級的業務比較多,每次任務調度不一定能夠選擇到關鍵進程。舉個例子,當設備后臺存在多個應用或者服務任務時,系統中和用戶交互最敏感的渲染任務沒法即時得到調度資源,導致設備會高概率出現使用不流暢或者點擊無響應的現象,也就是咱們平時常說的隨機卡頓。
2. 選擇最優能效的CPU資源時間過長,CPU資源選擇過度。
傳統的Linux內核選擇算力的流程,是一個慢速爬坡的過程。任務調度必須經過選擇CPU核簇、負載均衡、選擇頻點等一系列流程。其漫長的過程,極易導致任務調度錯過調度窗口,出現算力供給不足的現象。
為了解決以上問題,HarmonyOS內核提供了全棧式的調度框架,如下圖所示:
圖3 HarmonyOS調度管理框架
HarmonyOS調度管理框架有以下特點:
任務按優先級調度
對現有系統任務進行嚴格級別劃分,在線標記與用戶的操作體驗直接相關的關鍵進程和關聯任務,優先調度關鍵任務。
依據CPU負載情況選擇最優任務分配
我們會動態檢測不同CPU的負載,保證當前CPU有足夠的算力提供。
選擇最優頻點實現高能效
我們提供了頻點與性能、功耗之間的帕累托最優模型。每次任務,我們都能夠快速選擇系統最優的頻點組合方式,實現最優能效。
經過試驗,HarmonyOS的全棧式調度框架可以幫助用戶獲得在多場景(尤其是游戲場景)下持續且穩定的高幀率體驗。
三、Hyperhold內存管理引擎
對于內存管理,由于開源生態的不限制,導致應用開發的內存使用野蠻生長。設備長時間使用后,可回收內存越來越低。產生這個問題的原因有兩個:
1. 傳統內存數據冷熱管理,無法感知業務特性
盡管Linux內核提供了很多的內存回收機制,然而每種內存回收都會有相應的系統代價。比如,回收文件頁面后,如果系統需要二次加載這部分數據,需要從底層器件Flash里面把數據讀回來,這會引起Flash隨機IO讀的現象。對IO操作來說,Flash器件速度和當前讀取任務是隨機讀還是順序讀有著很強的相關性,隨機讀容易導致系統隨機卡頓。再比如,回收匿名頁面后,如果系統需要二次加載這部分數據,會觸發ZRAM解壓,消耗CPU。
另外,由于應用的內存負載越來越重,當系統冷熱數據識別不恰當,會導致系統的CPU負載長期處于高負載狀態,最終影響前臺應用的基礎性能。
2. 傳統共享式內存分配,無法感知數據重要性
從內存分配角度看,現在的操作系統基本采用統一接口的分配方式,使得手機里面多個進程或多個業務會共用一塊內存區域。數據回收時,會頻繁出現數據搬移,以及內存震蕩的現象。這個現象會加重內核管理內存的開銷。
為了解決傳統Linux內核的內存問題,HarmonyOS提供了Hyperhold內存管理引擎。Hyperhold內存管理引擎打通了上層系統到內核的調用棧,讓內核完整感知到應用的整個生命周期,并結合應用生命周期以及周期內的數據訪問特征,對每一塊內存數據做合理的內存管理。同時,為了降低內核管理內存的開銷,我們提出了自研的壓縮體系,包括多線程壓縮、自研的壓縮算法。為了進一步擴大可用空間,我們在Flash器件上開出了一塊可交換區,結合自研的聚合換出和內存標記技術,充分利用Flash器件的性能。
經過試驗, Hyperhold內存管理引擎可以讓應用在后臺的駐留能力提升50%以上,用戶可以明顯感知到后臺應用的保活率有大幅提升。
四、高效的文件系統
存儲處于整個緩存體系下的最慢路徑,容易成為系統性能瓶頸。不僅如此,由于存儲器件碎片化的問題,存儲還容易出現越用越慢的難題。其次,隨著系統的發展,系統占用存儲越來越多。而在多設備流轉的場景下,分布式文件系統的高效轉存能力顯得尤為重要。為應對上述問題,HarmonyOS提供了高效的自研文件系統體系。從第一代的eF2FS到最新的HMDFS,文件系統逐步解決了碎片化問題、容量問題與多設備流轉問題。
下面我們從第一代的eF2FS到最新的HMDFS,依次介紹HarmonyOS文件系統的技術特點。
1. 第1代數據盤eF2FS:智能感知空間管理,改善越用越慢
面對存儲越用越慢的業界難題,我們通過數據類型感知的多流算法和空間感知的分配算法,減少碎片產生。同時,通過高效、業務感知的兩層智能垃圾空間回收,實現智能感知空間管理。
2. 系統盤EROFS:變長壓縮,支持壓縮與性能雙贏
針對系統占用存儲越來越多的問題,業界其他操作系統也采取過改進措施,比如squashfs采用“定長輸入,變長輸出”的壓縮策略,但會存在讀放大的問題。而我們的EROFS(Extendable Read-Only File System,超級文件系統)采用“變長輸入,定長輸出”的壓縮策略,盡可能地將不等長的文件塊壓縮成一個等長的存儲塊進行存儲。這樣,我們訪問任何文件塊,只需讀取一個存儲塊,減少了無效讀取。除此之外,我們在解壓性能和IO流程上也做了優化。
通過以上關鍵技術,系統盤EROFS的性能得到大幅提升:
隨機讀性能平均提升20%。
系統初始空間相比Ext4節省2GB,相當于用戶可以多存1000張照片或500首歌曲。
升級包大小下降約5%-10%,升級時間縮短約20%。
3. 跨設備HMDFS:“批流”結合的分布式文件系統
HarmonyOS同一套系統能力、適配多種終端形態的分布式理念,就要求我們有一套數據流轉的底座——分布式文件系統HMDFS。
應對多設備流轉,HMDFS提供了多種文件系統能力,包括:
文件類型聚合
高效的緩存管理
批處理接口
分布式的權限管控
高效傳輸
數據一致性管理
通過上述一系列技術的研發與集成,最終實現了現有的跨設備高效文件系統,為用戶提供流暢的分布式體驗。
五、未來演進方向
上面就是我們本期要介紹的HarmonyOS內核核心技術內容了。未來還有很多方向值得我們繼續探索,下圖列出了HarmonyOS內核的未來演進方向。
圖8 未來演進方向
相信經過我們不斷的探索,我們能打造出更好的內核,為大家提供更流暢、體驗更好的HarmonyOS!
責任編輯:haq
-
操作系統
+關注
關注
37文章
6856瀏覽量
123452 -
鴻蒙系統
+關注
關注
183文章
2636瀏覽量
66468 -
HarmonyOS
+關注
關注
79文章
1980瀏覽量
30291
原文標題:HDC2021技術分論壇:HarmonyOS內核技術大揭秘!
文章出處:【微信號:HarmonyOS_Community,微信公眾號:電子發燒友開源社區】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論