OpenAtom OpenHarmony(以下簡稱“OpenHarmony”)是面向全場景泛終端設(shè)備的操作系統(tǒng),終端設(shè)備內(nèi)存性能的強弱會直接影響用戶的體驗。終端設(shè)備的內(nèi)存差異很大,對于內(nèi)存比較小的終端設(shè)備,內(nèi)存優(yōu)化方案無疑是增強內(nèi)存性能、提升用戶體驗的關(guān)鍵。針對傳統(tǒng)內(nèi)存方案及管理機制的不足,OpenHarmony 構(gòu)建了一套完善的內(nèi)存解決方案——ESWAP。
1.傳統(tǒng)內(nèi)存方案及管理機制
在傳統(tǒng)的 Linux 內(nèi)存優(yōu)化方案中,終端設(shè)備通常采用 SWAP 及 ZRAM 內(nèi)存方案。
1.1 SWAP
SWAP 即內(nèi)存交換技術(shù)或虛擬內(nèi)存技術(shù),如圖 1 所示,在系統(tǒng)的物理內(nèi)存不足時,把內(nèi)存中的一部分不常用的內(nèi)存空間釋放出來,以增大系統(tǒng)可用內(nèi)存供當(dāng)前運行的程序使用。這些被釋放的數(shù)據(jù)被臨時保存到 SWAP 分區(qū)中,等到需要使用時,再從 SWAP 分區(qū)中恢復(fù)到內(nèi)存中。
圖1 SWAP虛擬內(nèi)存技術(shù)
從圖 1 中不難看出,SWAP 內(nèi)存交換技術(shù)增大了設(shè)備內(nèi)用內(nèi)存,但是,SWAP 內(nèi)存換入/換出時會遭遇 IO 性能瓶頸,嚴(yán)重時甚至?xí)绊懹脩舻氖褂皿w驗,并且 flash 存儲器件的頻繁讀寫也會縮減其壽命。
1.2 ZRAM
ZRAM 即內(nèi)存壓縮技術(shù),如圖 2 所示,在系統(tǒng)的物理內(nèi)存不足時,將系統(tǒng)物理內(nèi)存的一部分劃分出來作為 ZRAM 分區(qū),然后把不常用的匿名頁壓縮后放到 ZRAM 分區(qū)里,相當(dāng)于犧牲了一些 CPU 效率,以增大系統(tǒng)可用內(nèi)存供當(dāng)前運行的程序使用。等到需要使用時,再從 ZRAM 分區(qū)中將數(shù)據(jù)解壓出來。
圖2 ZRAM內(nèi)存壓縮技術(shù)
雖然 ZRAM 在一定程度上增大了設(shè)備內(nèi)用內(nèi)存,但是如果沒有合適的方式來對內(nèi)存進行管理,負面影響也會非常明顯,將會造成內(nèi)存頁頻繁的壓縮/解壓縮,從而搶占正常業(yè)務(wù)的 CPU 時間,增加系統(tǒng)的功耗。并且,如果壓縮/解壓速度不夠快的話,會直接影響用戶的使用體驗。
1.3 內(nèi)存管理機制
除了內(nèi)存方案不足,傳統(tǒng)的內(nèi)存分配及管理方式,無法感知業(yè)務(wù)特性及數(shù)據(jù)的重要性。如果終端設(shè)備多個進程或業(yè)務(wù)共用一塊內(nèi)存,當(dāng)內(nèi)存負載越來越重,進行內(nèi)存數(shù)據(jù)回收時,會頻繁出現(xiàn)數(shù)據(jù)搬移,以及內(nèi)存震蕩的現(xiàn)象。這些現(xiàn)象會加重內(nèi)核管理內(nèi)存的開銷,并導(dǎo)致系統(tǒng) CPU 負載長期處于高負載的狀態(tài),從而增加系統(tǒng)功耗。
2.OpenHarmony內(nèi)存解決方案
針對原有內(nèi)存方案的不足,OpenHarmony 構(gòu)建了一套完善的內(nèi)存解決方案 ESWAP,打通了上層系統(tǒng)到內(nèi)核的調(diào)用棧,讓內(nèi)核能在上層配置的指導(dǎo)下,對每一塊內(nèi)存數(shù)據(jù)進行合理的管理。
下面我們將為大家介紹 ESWAP 解決方案以及其關(guān)鍵技術(shù)的解析。
2.1 ESWAP方案介紹
ESWAP(Enhanced SWAP)是 OpenHarmony 針對內(nèi)存優(yōu)化問題提供的一套完善的內(nèi)存解決方案,結(jié)合內(nèi)存壓縮和內(nèi)存交換技術(shù),定制了一套合理高效的調(diào)度管理策略,使壓縮和交換兩者的工作能夠高效且平衡。ESWAP 基于關(guān)聯(lián)性的數(shù)據(jù)聚合技術(shù)及上層指導(dǎo)策略,將內(nèi)存劃分為不同的分組進行管理,通過回收優(yōu)先級來區(qū)分不同分組下內(nèi)存的活躍程度,優(yōu)先壓縮、換出較不活躍的內(nèi)存數(shù)據(jù),以提升數(shù)據(jù)交換性能,減少壽命沖擊。
ESWAP 解決方案的整體框架如圖3所示:
圖3 ESWAP解決方案
ESWAP 解決方案在全局資源調(diào)度子系統(tǒng)中增加了一個系統(tǒng)資源調(diào)度模塊,通過向賬戶子系統(tǒng)訂閱本地賬戶的變化來感知當(dāng)前的賬戶狀態(tài)和內(nèi)存狀態(tài),然后根據(jù)賬戶狀態(tài)給各個賬戶設(shè)置不同的回收優(yōu)先級、設(shè)置目標(biāo)可用內(nèi)存量、設(shè)置壓縮和換出的比例等參數(shù),并將這些參數(shù)下發(fā)給 ZSWAPD。ZSWAPD 會依據(jù)回收優(yōu)先級判斷回收的先后順序;依據(jù)目標(biāo)可用內(nèi)存量和當(dāng)前可用內(nèi)存量的差值決定回收的量;依據(jù)壓縮和換出的比例來決定壓縮和換出的量,從而實現(xiàn)在達成內(nèi)存擴展效果前提下的性能和功耗平衡。
2.2 關(guān)鍵技術(shù)解析
ESWAP 內(nèi)存解決方案都用到了哪些關(guān)鍵技術(shù)呢?下面為你一一道來。
2.2.1 定制的ZRAM和交換分區(qū)
ESWAP 結(jié)合內(nèi)存壓縮和內(nèi)存交換技術(shù),提供了自定義新增存儲分區(qū)作為內(nèi)存交換分區(qū)的能力,并在內(nèi)核中創(chuàng)建了一個常駐進程 ZSWAPD,用于將 ZRAM 壓縮后的匿名頁加密換出到 ESWAP 存儲分區(qū)中,從而能完全地空出一塊可用內(nèi)存,以此來達到維持 Memavailable 水線的目標(biāo),如圖 4 所示。
圖4 ESWAP技術(shù)
同時,ESWAP 模塊還可以記錄每個匿名頁的冷熱特征信息,并將這些數(shù)據(jù)通過關(guān)聯(lián)性、冷熱順序進行相應(yīng)的存放,使 ESWAP 交換區(qū)中連續(xù)存放的匿名頁具有時間和空間局部性。因此在匿名頁換入時,可以將交換區(qū)中的相鄰匿名頁一并讀入 ZRAM,以此來保證數(shù)據(jù)的存取速度,提升 IO 性能。
2.2.2 動態(tài)的內(nèi)存回收機制
OpenHarmony 提供了一種額外的內(nèi)存回收機制 ZSWAPD,并創(chuàng)建了“buffer”來作為衡量當(dāng)前系統(tǒng)內(nèi)存能力的指標(biāo)。buffer 指的是當(dāng)前系統(tǒng)能提供的最大可用內(nèi)存。ZSWAPD 會根據(jù) buffer 量以及上文所述的各種策略,來對匿名頁進行壓縮換出以回收。同時,ZSWAPD 還能根據(jù)內(nèi)存冷熱分離的合理性以及內(nèi)存回收狀態(tài), 動態(tài)地控制 ZRAM 和 ESWAP 之間的平衡,從而獲得更高的能效比。
2.2.3 靈活的內(nèi)存回收策略
OpenHarmony 基于 Memcg 分組進行了回收策略的增強,使用回收優(yōu)先級來指導(dǎo) ZSWAPD 回收的先后順序?;厥詹呗詫⒓榷ǖ?buffer 相關(guān)配置下發(fā)給 ZSWAPD,來指導(dǎo)其回收適當(dāng)數(shù)量的內(nèi)存。此外,由于匿名頁可能存儲在 RAM、ZRAM、ESWAP 三個模塊中, 上層可以根據(jù)需要,通過靈活地配置交換策略,控制這三個模塊中存儲的比例,避免頻繁換入換出帶來的負面影響。
至此,ESWAP 的三項關(guān)鍵技術(shù)就介紹完了,我們來總結(jié)一下:
●定制的 ZRAM 和交換分區(qū):將數(shù)據(jù)通過關(guān)聯(lián)性、冷熱順序進行存放,保證了數(shù)據(jù)的存取速度,提升了 IO 性能。
●動態(tài)的內(nèi)存回收機制:從回收優(yōu)先級、可用內(nèi)存量、壓縮和交換比例三個維度動態(tài)地控制數(shù)據(jù)回收,從而獲得更高的能效比。
●靈活的內(nèi)存回收策略:靈活地控制 RAM、ZRAM、ESWAP 三個模塊數(shù)據(jù)存儲的比例,保證了各個模塊的平衡。
2.3 ESWAP相關(guān)接口
ESWAP 解決方案支持系統(tǒng)開發(fā)者定制自己的回收策略,并在 /dev/memcg 下提供了僅對上層回收策略可見的接口。系統(tǒng)開發(fā)者可以通過這些接口來定制自己的上層策略,具體接口如下所示:
以上就是本文全部內(nèi)容,ESWAP 解決方案仍在不斷建設(shè)中,期待廣大開發(fā)者加入我們,共同見證全場景智能時代的無限可能!感興趣的小伙伴可以通過下面鏈接獲取ESWAP源碼進行深入了解:
審核編輯 :李倩
-
操作系統(tǒng)
+關(guān)注
關(guān)注
37文章
7152瀏覽量
125595 -
內(nèi)存技術(shù)
+關(guān)注
關(guān)注
0文章
29瀏覽量
9936 -
OpenHarmony
+關(guān)注
關(guān)注
29文章
3854瀏覽量
18618
原文標(biāo)題:OpenHarmony 3.1 Release版本關(guān)鍵特性解析——Enhanced SWAP內(nèi)存管理
文章出處:【微信號:gh_e4f28cfa3159,微信公眾號:OpenAtom OpenHarmony】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
基于復(fù)旦微MCU+NFC Reader+NFC Tag雙通道標(biāo)簽一站式解決方案

基于OpenHarmony打造新一代智能化解決方案
自來水廠的數(shù)據(jù)采集與能耗監(jiān)測平臺解決方案
2K0300 OpenHarmony源碼構(gòu)建指南
鴻蒙原生頁面高性能解決方案上線OpenHarmony社區(qū) 助力打造高性能原生應(yīng)用
明達助力構(gòu)建智能變電站新體系

解決方案 | 基于TSMaster的平板電腦解決方案

PLC數(shù)據(jù)采集解決方案

生態(tài)流量在線監(jiān)測系統(tǒng)解決方案

一套電源ATE自動測試系統(tǒng)如何完成多型號電源模塊測試?

如何設(shè)計出一套用于移動式綜合監(jiān)測站管理的軟件系統(tǒng)
蜂窩物聯(lián)智能畜牧,精準(zhǔn)養(yǎng)殖:一站式解決方案

使用OPA129構(gòu)建了一個電荷放大器,6腳輸出經(jīng)常出現(xiàn)尖峰的原因?
庫室聯(lián)管聯(lián)控系統(tǒng)DW-S306|是一套智能化系統(tǒng)

水電站泄洪放水預(yù)警廣播系統(tǒng)解決方案

評論