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

迅為RK3568開發(fā)板內(nèi)核模塊實現(xiàn)-編寫 Makefile
8層是分水嶺?揭秘高難度PCB的核心標(biāo)準(zhǔn)
HarmonyOS開發(fā)指導(dǎo)類文檔更新速遞(下)

CAN XL物理層揭秘(下):物理層組合與兼容性

華為HarmonyOS NEXT 10月8日開啟公測

為了學(xué)習(xí)內(nèi)核開發(fā),大佬手搓了一個輕量級操作系統(tǒng)YiYiYa OS
為了學(xué)習(xí)內(nèi)核開發(fā),大佬手搓了一個輕量級操作系統(tǒng)YiYiYa OS
RT-Thread內(nèi)部機制大揭秘,帶你深入操作系統(tǒng)內(nèi)核

PCB多層板為什么都是偶數(shù)層?奇數(shù)層不行嗎?
歡創(chuàng)播報 華為宣布鴻蒙內(nèi)核已超越Linux內(nèi)核
直線電機生產(chǎn)廠家為大家揭秘iPhone 16 Pro系列手機

評論