HDC2021技術分論壇:HarmonyOS內核技術大揭秘拣宏!
原創(chuàng)HarmonyOS開發(fā)者
收錄于話題 #HDC2021 HarmonyOS技術論壇 11個內容
作者:jikecheng缀拭,miaoxie织阳,HarmonyOS內核技術專家
HarmonyOS整體框架分為四個層級眶蕉,如圖1所示。從上到下唧躲,依次為:第一層是應用層造挽,主要涵蓋系統(tǒng)應用、Launcher弄痹、設置饭入,以及三方應用。第二層是框架層肛真,提供基礎UI框架谐丢、用戶程序框架以及能力模塊框架。第三層是系統(tǒng)服務層蚓让,讓HarmonyOS具有分布式流轉負載的能力乾忱。大家看到的高速多設備協(xié)同能力就是由該層級提供。而承載整個操作系統(tǒng)历极,同時發(fā)揮芯片算力的基石就沉淀在第四層——內核層窄瘟。宏觀來說,內核的主要工作包含芯片資源管理执解、軟件任務調度寞肖,以及銜接用戶空間與系統(tǒng)調用能力。
本期衰腌,我們要重點給大家講一講HarmonyOS的內核層新蟆。
一、HarmonyOS內核構成
為了支撐HarmonyOS在多設備右蕊、多場景下的性能表現(xiàn)琼稻,內核主要由三部分組成,如下圖所示:
HarmonyOS內核組件:具有智慧化資源管理能力的內核組件饶囚,包括CPU/GPU資源管理帕翻,內存管理鸠补,IO調度管理以及高效的文件系統(tǒng)等。
標準的Linux內核:兼容了LTS Linux主線版本嘀掸,做好外圍生態(tài)的對接紫岩。
硬件平臺BSP:面向各種不同芯片與硬件平臺(包含1+8+N的多種設備)的BSP(board support package,板級支撐包)基礎能力睬塌。
本期要為大家介紹的就是HarmonyOS內核組件的三項核心技術:高能效CPU資源調度泉蝌、Hyperhold內存管理引擎和高效的文件系統(tǒng)。下面為大家一一揭曉~
二揩晴、高能效CPU資源調度
業(yè)界多數的操作系統(tǒng)都是基于標準的Linux內核開發(fā)的勋陪。傳統(tǒng)的Linux內核,早期用于服務器和PC設備硫兰,與我們現(xiàn)在用于手機诅愚、平板等的交互式內核相比,它們的設計理念和資源管理方式有所不同劫映。以CPU資源為例违孝,傳統(tǒng)的Linux內核存在以下典型問題:
1. 同優(yōu)先級的業(yè)務過多,每次調度都不一定選擇到關鍵進程苏研。
傳統(tǒng)的Linux內核偏向于在多用戶的場景下公平地分配資源等浊。比較明顯的特征是,多個用戶并發(fā)訪問摹蘑,并發(fā)使用公共資源。由于同優(yōu)先級的業(yè)務比較多轧飞,每次任務調度不一定能夠選擇到關鍵進程衅鹿。舉個例子,當設備后臺存在多個應用或者服務任務時过咬,系統(tǒng)中和用戶交互最敏感的渲染任務沒法即時得到調度資源大渤,導致設備會高概率出現(xiàn)使用不流暢或者點擊無響應的現(xiàn)象,也就是咱們平時常說的隨機卡頓掸绞。
2. 選擇最優(yōu)能效的CPU資源時間過長泵三,CPU資源選擇過度。
傳統(tǒng)的Linux內核選擇算力的流程衔掸,是一個慢速爬坡的過程烫幕。任務調度必須經過選擇CPU核簇、負載均衡敞映、選擇頻點等一系列流程较曼。其漫長的過程,極易導致任務調度錯過調度窗口振愿,出現(xiàn)算力供給不足的現(xiàn)象捷犹。
為了解決以上問題弛饭,HarmonyOS內核提供了全棧式的調度框架,如下圖所示:
HarmonyOS調度管理框架有以下特點:
任務按優(yōu)先級調度
對現(xiàn)有系統(tǒng)任務進行嚴格級別劃分萍歉,在線標記與用戶的操作體驗直接相關的關鍵進程和關聯(lián)任務侣颂,優(yōu)先調度關鍵任務。
依據CPU負載情況選擇最優(yōu)任務分配
我們會動態(tài)檢測不同CPU的負載枪孩,保證當前CPU有足夠的算力提供憔晒。
選擇最優(yōu)頻點實現(xiàn)高能效
我們提供了頻點與性能、功耗之間的帕累托最優(yōu)模型销凑。每次任務丛晌,我們都能夠快速選擇系統(tǒng)最優(yōu)的頻點組合方式,實現(xiàn)最優(yōu)能效斗幼。
經過試驗澎蛛,HarmonyOS的全棧式調度框架可以幫助用戶獲得在多場景(尤其是游戲場景)下持續(xù)且穩(wěn)定的高幀率體驗。
三蜕窿、Hyperhold內存管理引擎
對于內存管理谋逻,由于開源生態(tài)的不限制,導致應用開發(fā)的內存使用野蠻生長桐经。設備長時間使用后毁兆,可回收內存越來越低。產生這個問題的原因有兩個:
1. 傳統(tǒng)內存數據冷熱管理阴挣,無法感知業(yè)務特性
盡管Linux內核提供了很多的內存回收機制气堕,然而每種內存回收都會有相應的系統(tǒng)代價。比如畔咧,回收文件頁面后茎芭,如果系統(tǒng)需要二次加載這部分數據,需要從底層器件Flash里面把數據讀回來誓沸,這會引起Flash隨機IO讀的現(xiàn)象梅桩。對IO操作來說,F(xiàn)lash器件速度和當前讀取任務是隨機讀還是順序讀有著很強的相關性拜隧,隨機讀容易導致系統(tǒng)隨機卡頓宿百。再比如,回收匿名頁面后洪添,如果系統(tǒng)需要二次加載這部分數據垦页,會觸發(fā)ZRAM解壓,消耗CPU薇组。
另外外臂,由于應用的內存負載越來越重,當系統(tǒng)冷熱數據識別不恰當,會導致系統(tǒng)的CPU負載長期處于高負載狀態(tài)宋光,最終影響前臺應用的基礎性能貌矿。
2. 傳統(tǒng)共享式內存分配,無法感知數據重要性
從內存分配角度看罪佳,現(xiàn)在的操作系統(tǒng)基本采用統(tǒng)一接口的分配方式逛漫,使得手機里面多個進程或多個業(yè)務會共用一塊內存區(qū)域。數據回收時赘艳,會頻繁出現(xiàn)數據搬移酌毡,以及內存震蕩的現(xiàn)象。這個現(xiàn)象會加重內核管理內存的開銷蕾管。
為了解決傳統(tǒng)Linux內核的內存問題枷踏,HarmonyOS提供了Hyperhold內存管理引擎。Hyperhold內存管理引擎打通了上層系統(tǒng)到內核的調用棧掰曾,讓內核完整感知到應用的整個生命周期旭蠕,并結合應用生命周期以及周期內的數據訪問特征,對每一塊內存數據做合理的內存管理旷坦。同時掏熬,為了降低內核管理內存的開銷,我們提出了自研的壓縮體系秒梅,包括多線程壓縮旗芬、自研的壓縮算法。為了進一步擴大可用空間捆蜀,我們在Flash器件上開出了一塊可交換區(qū)疮丛,結合自研的聚合換出和內存標記技術,充分利用Flash器件的性能辆它。
經過試驗这刷, Hyperhold內存管理引擎可以讓應用在后臺的駐留能力提升50%以上,用戶可以明顯感知到后臺應用的泵渚活率有大幅提升。
四似袁、高效的文件系統(tǒng)
存儲處于整個緩存體系下的最慢路徑洞辣,容易成為系統(tǒng)性能瓶頸。不僅如此昙衅,由于存儲器件碎片化的問題扬霜,存儲還容易出現(xiàn)越用越慢的難題。其次而涉,隨著系統(tǒng)的發(fā)展著瓶,系統(tǒng)占用存儲越來越多。而在多設備流轉的場景下啼县,分布式文件系統(tǒng)的高效轉存能力顯得尤為重要材原。為應對上述問題沸久,HarmonyOS提供了高效的自研文件系統(tǒng)體系。從第一代的eF2FS到最新的HMDFS余蟹,文件系統(tǒng)逐步解決了碎片化問題卷胯、容量問題與多設備流轉問題。
下面我們從第一代的eF2FS到最新的HMDFS威酒,依次介紹HarmonyOS文件系統(tǒng)的技術特點窑睁。
1. 第1代數據盤eF2FS:智能感知空間管理,改善越用越慢
面對存儲越用越慢的業(yè)界難題葵孤,我們通過數據類型感知的多流算法和空間感知的分配算法担钮,減少碎片產生。同時尤仍,通過高效箫津、業(yè)務感知的兩層智能垃圾空間回收,實現(xiàn)智能感知空間管理吓著。
下面我們通過一個視頻鲤嫡,更好地了解HarmonyOS的空間管理機制。
2. 系統(tǒng)盤EROFS:變長壓縮暖眼,支持壓縮與性能雙贏
針對系統(tǒng)占用存儲越來越多的問題,業(yè)界其他操作系統(tǒng)也采取過改進措施纺裁,比如squashfs采用“定長輸入诫肠,變長輸出”的壓縮策略,但會存在讀放大的問題欺缘。而我們的EROFS(Extendable Read-Only File System栋豫,超級文件系統(tǒng))采用“變長輸入,定長輸出”的壓縮策略谚殊,盡可能地將不等長的文件塊壓縮成一個等長的存儲塊進行存儲丧鸯。這樣,我們訪問任何文件塊嫩絮,只需讀取一個存儲塊丛肢,減少了無效讀取。除此之外剿干,我們在解壓性能和IO流程上也做了優(yōu)化蜂怎。
通過以上關鍵技術,系統(tǒng)盤EROFS的性能得到大幅提升:
隨機讀性能平均提升20%置尔。
系統(tǒng)初始空間相比Ext4節(jié)省2GB杠步,相當于用戶可以多存1000張照片或500首歌曲。
升級包大小下降約5%-10%,升級時間縮短約20%幽歼。
3. 跨設備HMDFS:“批流”結合的分布式文件系統(tǒng)
HarmonyOS同一套系統(tǒng)能力朵锣、適配多種終端形態(tài)的分布式理念,就要求我們有一套數據流轉的底座——分布式文件系統(tǒng)HMDFS试躏。
應對多設備流轉猪勇,HMDFS提供了多種文件系統(tǒng)能力,包括:
·文件類型聚合
·高效的緩存管理
·批處理接口
·分布式的權限管控
·高效傳輸
·數據一致性管理
通過上述一系列技術的研發(fā)與集成颠蕴,最終實現(xiàn)了現(xiàn)有的跨設備高效文件系統(tǒng)泣刹,為用戶提供流暢的分布式體驗。
五犀被、未來演進方向
上面就是我們本期要介紹的HarmonyOS內核核心技術內容了椅您。未來還有很多方向值得我們繼續(xù)探索,下圖列出了HarmonyOS內核的未來演進方向寡键。
相信經過我們不斷的探索掀泳,我們能打造出更好的內核,為大家提供更流暢西轩、體驗更好的HarmonyOS员舵!
【HDC技術分論壇回看鏈接已上線,敬請關注 HarmonyOS開發(fā)者 微信公眾號】
END