Enhanced SWAP內(nèi)存管理 OpenHarmony構(gòu)建新的內(nèi)存管理優(yōu)化方案——ESWAP

  OpenHarmony是面向全場(chǎng)景泛終端設(shè)備的操作系統(tǒng),終端設(shè)備內(nèi)存性能的強(qiáng)弱會(huì)直接影響用戶的體驗(yàn)。終端設(shè)備的內(nèi)存差異很大,對(duì)于內(nèi)存比較小的終端設(shè)備,內(nèi)存優(yōu)化方案無(wú)疑是增強(qiáng)內(nèi)存性能、提升用戶體驗(yàn)的關(guān)鍵。針對(duì)傳統(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)存空間釋放出來(lái),以增大系統(tǒng)可用內(nèi)存供當(dāng)前運(yùn)行的程序使用。這些被釋放的數(shù)據(jù)被臨時(shí)保存到SWAP分區(qū)中,等到需要使用時(shí),再?gòu)腟WAP分區(qū)中恢復(fù)到內(nèi)存中。

圖1 SWAP虛擬內(nèi)存技術(shù)

  從圖1中不難看出,SWAP內(nèi)存交換技術(shù)增大了設(shè)備內(nèi)用內(nèi)存,但是,SWAP內(nèi)存換入/換出時(shí)會(huì)遭遇IO性能瓶頸,嚴(yán)重時(shí)甚至?xí)绊懹脩舻氖褂皿w驗(yàn),并且flash存儲(chǔ)器件的頻繁讀寫也會(huì)縮減其壽命。

  1.2 ZRAM

  ZRAM即內(nèi)存壓縮技術(shù),如圖2所示,在系統(tǒng)的物理內(nèi)存不足時(shí),將系統(tǒng)物理內(nèi)存的一部分劃分出來(lái)作為ZRAM分區(qū),然后把不常用的匿名頁(yè)壓縮后放到ZRAM分區(qū)里,相當(dāng)于犧牲了一些CPU效率,以增大系統(tǒng)可用內(nèi)存供當(dāng)前運(yùn)行的程序使用。等到需要使用時(shí),再?gòu)腪RAM分區(qū)中將數(shù)據(jù)解壓出來(lái)。

圖2 ZRAM內(nèi)存壓縮技術(shù)

  雖然ZRAM在一定程度上增大了設(shè)備內(nèi)用內(nèi)存,但是如果沒(méi)有合適的方式來(lái)對(duì)內(nèi)存進(jìn)行管理,負(fù)面影響也會(huì)非常明顯,將會(huì)造成內(nèi)存頁(yè)頻繁的壓縮/解壓縮,從而搶占正常業(yè)務(wù)的CPU時(shí)間,增加系統(tǒng)的功耗。并且,如果壓縮/解壓速度不夠快的話,會(huì)直接影響用戶的使用體驗(yàn)。

  1.3 內(nèi)存管理機(jī)制

  除了內(nèi)存方案不足,傳統(tǒng)的內(nèi)存分配及管理方式,無(wú)法感知業(yè)務(wù)特性及數(shù)據(jù)的重要性。如果終端設(shè)備多個(gè)進(jìn)程或業(yè)務(wù)共用一塊內(nèi)存,當(dāng)內(nèi)存負(fù)載越來(lái)越重,進(jìn)行內(nèi)存數(shù)據(jù)回收時(shí),會(huì)頻繁出現(xiàn)數(shù)據(jù)搬移,以及內(nèi)存震蕩的現(xiàn)象。這些現(xiàn)象會(huì)加重內(nèi)核管理內(nèi)存的開(kāi)銷,并導(dǎo)致系統(tǒng)CPU負(fù)載長(zhǎng)期處于高負(fù)載的狀態(tài),從而增加系統(tǒng)功耗。
  2.OpenHarmony內(nèi)存解決方案

  針對(duì)原有內(nèi)存方案的不足,OpenHarmony構(gòu)建了一套完善的內(nèi)存解決方案ESWAP,打通了上層系統(tǒng)到內(nèi)核的調(diào)用棧,讓內(nèi)核能在上層配置的指導(dǎo)下,對(duì)每一塊內(nèi)存數(shù)據(jù)進(jìn)行合理的管理。

  下面我們將為大家介紹ESWAP解決方案以及其關(guān)鍵技術(shù)的解析。

  2.1 ESWAP方案介紹

  ESWAP(Enhanced SWAP)是OpenHarmony針對(duì)內(nèi)存優(yōu)化問(wèn)題提供的一套完善的內(nèi)存解決方案,結(jié)合內(nèi)存壓縮和內(nèi)存交換技術(shù),定制了一套合理高效的調(diào)度管理策略,使壓縮和交換兩者的工作能夠高效且平衡。ESWAP基于關(guān)聯(lián)性的數(shù)據(jù)聚合技術(shù)及上層指導(dǎo)策略,將內(nèi)存劃分為不同的分組進(jìn)行管理,通過(guò)回收優(yōu)先級(jí)來(lái)區(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)度模塊,通過(guò)向賬戶子系統(tǒng)訂閱本地賬戶的變化來(lái)感知當(dāng)前的賬戶狀態(tài)和內(nèi)存狀態(tài),然后根據(jù)賬戶狀態(tài)給各個(gè)賬戶設(shè)置不同的回收優(yōu)先級(jí)、設(shè)置目標(biāo)可用內(nèi)存量、設(shè)置壓縮和換出的比例等參數(shù),并將這些參數(shù)下發(fā)給ZSWAPD。ZSWAPD會(huì)依據(jù)回收優(yōu)先級(jí)判斷回收的先后順序;依據(jù)目標(biāo)可用內(nèi)存量和當(dāng)前可用內(nèi)存量的差值決定回收的量;依據(jù)壓縮和換出的比例來(lái)決定壓縮和換出的量,從而實(shí)現(xiàn)在達(dá)成內(nèi)存擴(kuò)展效果前提下的性能和功耗平衡。

  2.2 關(guān)鍵技術(shù)解析

  ESWAP內(nèi)存解決方案都用到了哪些關(guān)鍵技術(shù)呢?下面為你一一道來(lái)。

  2.2.1 定制的ZRAM和交換分區(qū)

  ESWAP結(jié)合內(nèi)存壓縮和內(nèi)存交換技術(shù),提供了自定義新增存儲(chǔ)分區(qū)作為內(nèi)存交換分區(qū)的能力,并在內(nèi)核中創(chuàng)建了一個(gè)常駐進(jìn)程ZSWAPD,用于將ZRAM壓縮后的匿名頁(yè)加密換出到ESWAP存儲(chǔ)分區(qū)中,從而能完全地空出一塊可用內(nèi)存,以此來(lái)達(dá)到維持Memavailable水線的目標(biāo),如圖4所示。

圖4 ESWAP技術(shù)

  同時(shí),ESWAP模塊還可以記錄每個(gè)匿名頁(yè)的冷熱特征信息,并將這些數(shù)據(jù)通過(guò)關(guān)聯(lián)性、冷熱順序進(jìn)行相應(yīng)的存放,使ESWAP交換區(qū)中連續(xù)存放的匿名頁(yè)具有時(shí)間和空間局部性。因此在匿名頁(yè)換入時(shí),可以將交換區(qū)中的相鄰匿名頁(yè)一并讀入ZRAM,以此來(lái)保證數(shù)據(jù)的存取速度,提升IO性能。

  2.2.2 動(dòng)態(tài)的內(nèi)存回收機(jī)制

  OpenHarmony提供了一種額外的內(nèi)存回收機(jī)制ZSWAPD,并創(chuàng)建了“buffer”來(lái)作為衡量當(dāng)前系統(tǒng)內(nèi)存能力的指標(biāo)。buffer指的是當(dāng)前系統(tǒng)能提供的最大可用內(nèi)存。ZSWAPD會(huì)根據(jù)buffer量以及上文所述的各種策略,來(lái)對(duì)匿名頁(yè)進(jìn)行壓縮換出以回收。同時(shí),ZSWAPD還能根據(jù)內(nèi)存冷熱分離的合理性以及內(nèi)存回收狀態(tài), 動(dòng)態(tài)地控制ZRAM和ESWAP之間的平衡,從而獲得更高的能效比。

  2.2.3 靈活的內(nèi)存回收策略

  OpenHarmony基于Memcg分組進(jìn)行了回收策略的增強(qiáng),使用回收優(yōu)先級(jí)來(lái)指導(dǎo)ZSWAPD回收的先后順序。回收策略將既定的buffer相關(guān)配置下發(fā)給ZSWAPD,來(lái)指導(dǎo)其回收適當(dāng)數(shù)量的內(nèi)存。此外,由于匿名頁(yè)可能存儲(chǔ)在RAM、ZRAM、ESWAP三個(gè)模塊中, 上層可以根據(jù)需要,通過(guò)靈活地配置交換策略,控制這三個(gè)模塊中存儲(chǔ)的比例,避免頻繁換入換出帶來(lái)的負(fù)面影響。

  至此,ESWAP的三項(xiàng)關(guān)鍵技術(shù)就介紹完了,我們來(lái)總結(jié)一下:

  ● 定制的ZRAM和交換分區(qū):將數(shù)據(jù)通過(guò)關(guān)聯(lián)性、冷熱順序進(jìn)行存放,保證了數(shù)據(jù)的存取速度,提升了IO性能。

  ● 動(dòng)態(tài)的內(nèi)存回收機(jī)制:從回收優(yōu)先級(jí)、可用內(nèi)存量、壓縮和交換比例三個(gè)維度動(dòng)態(tài)地控制數(shù)據(jù)回收,從而獲得更高的能效比。

  ● 靈活的內(nèi)存回收策略:靈活地控制RAM、ZRAM、ESWAP三個(gè)模塊數(shù)據(jù)存儲(chǔ)的比例,保證了各個(gè)模塊的平衡。

  2.3 ESWAP相關(guān)接口

  ESWAP解決方案支持系統(tǒng)開(kāi)發(fā)者定制自己的回收策略,并在/dev/memcg下提供了僅對(duì)上層回收策略可見(jiàn)的接口。系統(tǒng)開(kāi)發(fā)者可以通過(guò)這些接口來(lái)定制自己的上層策略,具體接口如下所示:

  以上就是本文全部?jī)?nèi)容,ESWAP解決方案仍在不斷建設(shè)中,期待廣大開(kāi)發(fā)者加入我們,共同見(jiàn)證全場(chǎng)景智能時(shí)代的無(wú)限可能!

  感興趣的小伙伴可以通過(guò)下面鏈接獲取ESWAP源碼進(jìn)行深入了解:

  https://gitee.com/openharmony/kernel_linux_5.10/pulls/43

(免責(zé)聲明:本網(wǎng)站內(nèi)容主要來(lái)自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準(zhǔn)確性及可靠性,但不保證有關(guān)資料的準(zhǔn)確性及可靠性,讀者在使用前請(qǐng)進(jìn)一步核實(shí),并對(duì)任何自主決定的行為負(fù)責(zé)。本網(wǎng)站對(duì)有關(guān)資料所引致的錯(cuò)誤、不確或遺漏,概不負(fù)任何法律責(zé)任。
任何單位或個(gè)人認(rèn)為本網(wǎng)站中的網(wǎng)頁(yè)或鏈接內(nèi)容可能涉嫌侵犯其知識(shí)產(chǎn)權(quán)或存在不實(shí)內(nèi)容時(shí),應(yīng)及時(shí)向本網(wǎng)站提出書面權(quán)利通知或不實(shí)情況說(shuō)明,并提供身份證明、權(quán)屬證明及詳細(xì)侵權(quán)或不實(shí)情況證明。本網(wǎng)站在收到上述法律文件后,將會(huì)依法盡快聯(lián)系相關(guān)文章源頭核實(shí),溝通刪除相關(guān)內(nèi)容或斷開(kāi)相關(guān)鏈接。 )