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

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

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

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

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

蜂窩物聯(lián)智能畜牧,精準(zhǔn)養(yǎng)殖:一站式解決方案

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

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

一套完整的養(yǎng)老院人員定位解決方案包含哪些內(nèi)容?

評論