導(dǎo)語
在使用移動(dòng)設(shè)備時(shí),用戶同時(shí)打開多個(gè)app是很常見的。而這很容易造成移動(dòng)設(shè)備的內(nèi)存緊缺。在現(xiàn)有的方法中,無論是殺死進(jìn)程(lmkd)來釋放內(nèi)存還是基于壓縮算法的in-memory swap方式,都面臨用戶切換回被殺死的進(jìn)程過程效率低下問題,這會(huì)影響用戶體驗(yàn)。
ASAP是一種全新的swap機(jī)制,基于預(yù)取策略很好地改進(jìn)了用戶體驗(yàn)。其來自韓國首爾大學(xué)/谷歌等合作,發(fā)表于ATC 21。接下來本文將分成背景和動(dòng)機(jī)、設(shè)計(jì)和實(shí)現(xiàn)和測(cè)試結(jié)果評(píng)估三個(gè)部分分別介紹ASAP誕生的背景、具體設(shè)計(jì)和效能。
背景和動(dòng)機(jī)
安卓操作系統(tǒng)的內(nèi)存管理機(jī)制
在安卓操作系統(tǒng)中,用戶正在使用的app被認(rèn)為是在前臺(tái)(foreground),而其他啟動(dòng)過但是當(dāng)前沒有被使用的app則是在后臺(tái)的。
內(nèi)存緊缺時(shí),Android有個(gè)守護(hù)進(jìn)程lmkd,負(fù)責(zé)殺死最不重要的進(jìn)程(比如某個(gè)后臺(tái)進(jìn)程),而該進(jìn)程的數(shù)據(jù)自然就被釋放了。內(nèi)存中有個(gè)數(shù)據(jù)集存儲(chǔ)被移入后臺(tái)的進(jìn)程的狀態(tài),用戶切換回被lmkd殺死的進(jìn)程時(shí),根據(jù)這個(gè)數(shù)據(jù)集恢復(fù)進(jìn)程數(shù)據(jù)。除此之外還有另一種方式即使用基于壓縮算法的in-memory swap(ZRAM),下圖為安卓操作系統(tǒng)in-memory swap機(jī)制示意圖,其特點(diǎn)是需要壓縮和解壓縮匿名頁,比通過I/O將匿名頁寫入磁盤更快,但是壓縮的頁依然占用內(nèi)存空間且壓縮解壓縮占用CPU時(shí)鐘周期。通常來說,lmkd會(huì)比這個(gè)機(jī)制先執(zhí)行。
安卓操作系統(tǒng)in-memoryswap機(jī)制示意圖
為了更加直白地展示lmkd和in-memory swap、普通的swap之間的差異,此處定義兩個(gè)變量:
1) Launch Time:應(yīng)用數(shù)據(jù)已經(jīng)不在內(nèi)存中,但是內(nèi)存中依然有它的狀態(tài)信息。應(yīng)用利用這些狀態(tài)信息從頭重建所有活動(dòng)所需要的時(shí)間,即被lmkd殺死的進(jìn)程的重啟時(shí)間;
2) Switch Time:應(yīng)用數(shù)據(jù)依然在內(nèi)存中。此使啟動(dòng)應(yīng)用所需要的時(shí)間。
根據(jù)文件頁和匿名頁是否在內(nèi)存中,進(jìn)而進(jìn)一步分成四個(gè)不同的時(shí)間:
1) Ideal Switch Time:進(jìn)程的文件頁和匿名頁都在內(nèi)存中
2) Switch Time(file-backed pages in disk):進(jìn)程的文件頁在磁盤中,匿名頁在內(nèi)存中
3) Switch Time(most pages not in memory):大部分頁都不在內(nèi)存中
4) Launch Time:所有頁都不在內(nèi)存中
下圖展示了四種時(shí)間的差異。橫軸是用來測(cè)試的八個(gè)應(yīng)用和平均值,縱軸是四種時(shí)間的值,可見使用lmkd會(huì)比理想情況滿四倍左右,應(yīng)該盡可能減少lmkd的使用。
四種時(shí)間的比較
請(qǐng)求調(diào)頁的缺陷
內(nèi)存壓力下,switch time的overhead來自于以下兩個(gè)方面:
1)解壓縮匿名頁
2)從磁盤檢索文件頁
而造成switch time大大增加的罪魁禍?zhǔn)拙褪钦?qǐng)求調(diào)頁的低效率。下圖表示switch過程中CPU和磁盤帶寬利用率。在switch的過程中,CPU的平均利用率僅僅34.2%;,而磁盤帶寬利用率僅9.4%。究其原因, 在于解壓縮和讀磁盤操作只在一次page fault時(shí)啟動(dòng)。
同時(shí),實(shí)驗(yàn)者們發(fā)現(xiàn),文件頁和匿名頁的交換足跡(footprint)不一樣。文件頁更加“不變”。即同一個(gè)應(yīng)用被重新啟動(dòng)時(shí),往往訪問大量相同的文件頁。原因是要訪問許多相同的庫文件。因此這給予實(shí)驗(yàn)者一個(gè)啟示——為匿名頁和文件頁設(shè)計(jì)不同的預(yù)取器,利用預(yù)取來提高硬件利用率。
switch過程中CPU和磁盤帶寬利用率
設(shè)計(jì)和實(shí)現(xiàn)
正如前文所說,為文件頁和匿名頁設(shè)計(jì)不同的預(yù)取器。對(duì)于文件頁,利用不變的特點(diǎn)減少負(fù)載;對(duì)于匿名頁,則利用實(shí)時(shí)信息追蹤變化的switch footprint。其中的挑戰(zhàn)是,如何準(zhǔn)確地預(yù)測(cè)footprint。
1)針對(duì)文件頁,如下圖,設(shè)計(jì)了以下五個(gè)部分:
?Offline profiling
利用前十次交換,把訪問超過八次的頁當(dāng)作預(yù)取的候選頁。其結(jié)果被存儲(chǔ)在一個(gè)文件中。( offline candidate table )。
?Fault logging
記錄每次交換時(shí)的缺頁信息。存放在fault buffer中。
?Prepaging Target Management – Insertion
匹配fault buffer和offline candidate table,能匹配到,則插入prepaging target table。
?Prepaging Target Management – Extent Merging
Extent:一次切換時(shí)同一文件中被訪問的頁的集合。
兩個(gè)extent相近(小于16頁的差距),則合并。
?Prepaging Target Management – Eviction
被預(yù)取的頁只要在一次交換中沒有被用到(檢查mapcount是否為0),則從prepaging target table中移除。
文件頁的預(yù)取過程
2)針對(duì)匿名頁,如下圖,設(shè)計(jì)了如下五個(gè)部分:
?Fault logging
記錄所有匿名頁的缺頁中斷。
?Access logging
根據(jù)頁表的訪問位,記錄Prepaging Target Table和Online Candidate Table中的頁在應(yīng)用切換時(shí)的訪問情況。
?Prepaging Target Management – Check & Insertion
把新的缺頁中斷加入Online Candidate Table。
?Prepaging Target Management – Promotion
若在Online Candidate Table中的頁被訪問了,則加入prepaging target table。
?Prepaging Target Management – Eviction
在prepaging target table和Online Candidate Table中的頁有個(gè)超時(shí)計(jì)時(shí)器,每次切換時(shí)計(jì)時(shí)器減小,而頁被訪問時(shí)計(jì)時(shí)器重置,超時(shí)后頁被丟棄。
匿名頁的預(yù)取過程
測(cè)試結(jié)果評(píng)估
1. 在switch latency方面,在兩種不同設(shè)備上(Pixel 4代表高端設(shè)備,Pixel 3a代表低端設(shè)備),基于baseline,平均性能提高了22.2%、28.3%。
寫延遲示意圖
2. 在預(yù)測(cè)器性能方面,平均準(zhǔn)確率分別為匿名頁68.4%,文件頁79.3%;平均召回率分別為匿名頁60.4%,文件頁52.2%。
預(yù)測(cè)器性能示意圖
3. 在資源利用率方面,平均提高CPU利用率1.18倍(反映了預(yù)取匿名頁的影響);平均提高I/O帶寬的使用率25.2%(反映了預(yù)取文件頁的影響)。
總結(jié)
ASAP通過合理設(shè)計(jì)預(yù)取機(jī)制,在兩種設(shè)備上,平均性能分別提高了22.2%、28.3%,取得了不錯(cuò)的效果。
-
cpu
+關(guān)注
關(guān)注
68文章
11074瀏覽量
216936 -
操作系統(tǒng)
+關(guān)注
關(guān)注
37文章
7140瀏覽量
125531 -
SWAP
+關(guān)注
關(guān)注
0文章
51瀏覽量
13251
原文標(biāo)題:聊聊在手機(jī)上開啟快速swap的可能性
文章出處:【微信號(hào):SSDFans,微信公眾號(hào):SSDFans】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
聲表面濾波器有用在手機(jī)上嗎?
請(qǐng)問怎么通過WIFI模塊在手機(jī)上顯示網(wǎng)頁
藍(lán)牙模塊與安卓手機(jī)相連,串口助手發(fā)信息顯示在手機(jī)上是亂碼
如何用matlab進(jìn)行g(shù)amma可能性分析?
在手機(jī)上采用USB傳輸高清視頻
PSOC5LP與低通濾波器進(jìn)行硬件連接的可能性有多大?
怎么做到在手機(jī)上自主分析數(shù)據(jù)的?
如何在手機(jī)上打開/啟動(dòng)應(yīng)用程序?
中興Axon 30 Ultra帶來手機(jī)多攝體驗(yàn)的更多可能性
在手機(jī)上顯示帶有地震位置標(biāo)記的地圖

評(píng)論