- 相關(guān)推薦
Flash數(shù)據(jù)資源回收策略論文
摘要:
介紹了一種嵌入式設(shè)備的Flash資源回收策略。該策略的實(shí)現(xiàn)需要嵌入式系統(tǒng)支持多任務(wù),在后臺(tái)實(shí)現(xiàn)兩個(gè)任務(wù),一個(gè)用來統(tǒng)計(jì)CPU占有率的CPU負(fù)載檢測任務(wù),一個(gè)是Flash資源回收檢測任務(wù)。Flash垃圾回收策略能夠自動(dòng)根據(jù)CPU負(fù)載情況、資源剩余情況來調(diào)整垃圾后臺(tái)回收的頻率,并在Flash資源嚴(yán)重不足的情況下報(bào)警,能夠有效避免設(shè)備在資源不足的環(huán)境下運(yùn)行造成大的損失,保證了設(shè)備運(yùn)行的安全性。
關(guān)鍵詞:嵌入式設(shè)備;Flash資源回收;時(shí)間粒度滑動(dòng)窗口;CPU負(fù)載
嵌入式設(shè)備對(duì)其本身的可靠性要求極高,由于一些不可預(yù)測的因素或者是沒有發(fā)現(xiàn)的潛在危險(xiǎn)導(dǎo)致Flash的垃圾資源回收不及時(shí),會(huì)出現(xiàn)文件操作耗時(shí)較長等異常情況,會(huì)導(dǎo)致嵌入式設(shè)備產(chǎn)生不可預(yù)知的危險(xiǎn),在這種情況下很難保證設(shè)備的可靠性、安全性,甚至?xí)䦟?duì)整個(gè)嵌入式系統(tǒng)造成嚴(yán)重的后果。
鑒于此,本文提出了一種Flash資源回收的策略:設(shè)備能夠在運(yùn)行過程中根據(jù)CPU負(fù)載情況和Flash的有效資源空間剩余情況,自動(dòng)調(diào)整后臺(tái)回收的頻率,能夠有效利用CPU的空閑時(shí)刻進(jìn)行垃圾回收,盡量避免異常情況的發(fā)生,但是如果一旦有異常情況發(fā)生,設(shè)備會(huì)將異常情況記錄并報(bào)警,幫助現(xiàn)場工作人員盡快定位并解決問題,避免問題擴(kuò)大而造成不可挽回的損失[1——3]。
一、時(shí)間窗口和時(shí)間粒度。
本文提出一種嵌入式設(shè)備的Flash資源回收的策略,能夠通過實(shí)時(shí)檢測到的CPU負(fù)載率和Flash空間利用率(Flash已被占用空間與Flash總空間的百分比)來確定后臺(tái)資源回收的周期(即設(shè)備每次清理內(nèi)存的時(shí)間間隔),定時(shí)清理內(nèi)存。在具體介紹該方法之前,首先對(duì)本回收策略的時(shí)間粒度滑動(dòng)窗口和時(shí)間粒度進(jìn)行說明。如圖1所示,嵌入式設(shè)備后臺(tái)資源回收的清理周期按照大小順序依次排列,形成時(shí)間粒度(資源回收周期)進(jìn)度條,進(jìn)度條上面每個(gè)具體的時(shí)間粒度的大小是由設(shè)備特性如CPU主頻、CPU負(fù)載、Flash空間大小、Flash空間利用率、系統(tǒng)的資源回收能力來決定的。其中T表示清理周期,coefficient為與具體工程應(yīng)用有關(guān)的經(jīng)驗(yàn)系數(shù),free_block表示有效的Flash資源剩余量,complexity表示業(yè)務(wù)的系統(tǒng)復(fù)雜度,erase speed表示塊擦除速度,gc_ability表示嵌入式系統(tǒng)本身的垃圾回收能力,fCPU表示使用CPU的主頻,need_space表示業(yè)務(wù)對(duì)Flash空間大小的要求。如圖1所示,時(shí)間粒度滑動(dòng)窗口表示在當(dāng)前CPU負(fù)載率情況下,能夠選擇的資源回收周期的范圍,然后根據(jù)Flash空間利用率等因素,在時(shí)間粒度窗口的范圍內(nèi)確定具體的時(shí)間粒度值。資源回收時(shí)間粒度滑動(dòng)窗口是根據(jù)CPU的負(fù)載情況,實(shí)時(shí)地在時(shí)間粒度進(jìn)度條上滑動(dòng)[4]。
在CPU負(fù)載比較低的狀態(tài)下,資源回收時(shí)間粒度滑動(dòng)窗口向時(shí)間粒度進(jìn)度條的左側(cè)(時(shí)間粒度值小的一端)滑行。在CPU負(fù)載比較高的狀態(tài)下,資源回收時(shí)間粒度滑動(dòng)窗口向時(shí)間粒度進(jìn)度條的右側(cè)(時(shí)間粒度值小的一端)滑行。Flash空間利用率的大小決定了時(shí)間粒度在資源回收時(shí)間粒度滑動(dòng)窗口上取值的位置。在Flash空間利用率比較低的情況下,也就是Flash可用空間剩余比較充分的情況下,垃圾資源回收的需求不迫切,時(shí)間粒度就在資源回收時(shí)間粒度滑動(dòng)窗口偏右的位置取值,即時(shí)間粒度取得相對(duì)較大的值,垃圾資源回收頻率就變小。在Flash空間利用率比較高的情況下,也就是Flash可用空間剩余比較少的情況下,垃圾資源回收的需求就變得很迫切,時(shí)間粒度就在資源回收時(shí)間粒度滑動(dòng)窗口偏左的位置取值,即時(shí)間粒度取得相對(duì)較小的值,垃圾資源回收頻率就變大[5]。設(shè)備運(yùn)行期間,根據(jù)CPU負(fù)載率和Flash有效資源空間剩余程度自動(dòng)判斷垃圾資源回收的頻率,在不影響設(shè)備性能的情況下保證設(shè)備運(yùn)行的安全性和可靠性。
二、方案。
1、方案實(shí)現(xiàn)基本思路。
本方案的實(shí)現(xiàn)需要兩個(gè)任務(wù)配合實(shí)現(xiàn):CPU負(fù)載監(jiān)視任務(wù)、資源回收檢測任務(wù),如圖2所示。CPU負(fù)載檢測任務(wù)負(fù)責(zé)實(shí)時(shí)檢測CPU使用情況(占有率)、完成對(duì)資源回收時(shí)間粒度滑動(dòng)窗口滑動(dòng)趨勢的判定和控制。資源回收檢測任務(wù)主要負(fù)責(zé)Flash資源回收的具體事務(wù),并且根據(jù)時(shí)間粒度判定模塊確定的具體時(shí)間粒度確認(rèn)回收資源的快慢[6]。資源回收時(shí)間粒度是由CPU負(fù)載率和Flash空間利用率共同決定的,CPU負(fù)載率負(fù)責(zé)判定資源回收時(shí)間粒度窗口的滑動(dòng)趨勢,F(xiàn)lash空間利用率負(fù)責(zé)確定在滑動(dòng)窗口上定位具體的時(shí)間粒度值[4]。
2、CPU負(fù)載檢測任務(wù)。
CPU負(fù)載檢測任務(wù)負(fù)責(zé)實(shí)時(shí)檢測CPU的負(fù)載情況,并決定時(shí)間粒度滑動(dòng)窗口的滑動(dòng)方向和初度。當(dāng)CPU負(fù)載小的時(shí)候,時(shí)間粒度向時(shí)間力度條的左端滑動(dòng),減小后臺(tái)資源回收檢測任務(wù)的時(shí)間、增大回收粒度,這樣做是為了提高垃圾回收速度。當(dāng)CPU負(fù)載大的時(shí)候,時(shí)間粒度向時(shí)間力度條的右端滑動(dòng),增大后臺(tái)資源回收檢測任務(wù)的間隔時(shí)間、減小回收粒度,這樣做是為了降低垃圾回收速度,減輕CPU負(fù)載。
3、資源回收檢測任務(wù)。
首先,資源回收是每個(gè)嵌入式文件系統(tǒng)自身應(yīng)該具備的功能。資源回收檢測任務(wù)實(shí)現(xiàn)了一個(gè)優(yōu)化使用資源回收的策略。任務(wù)初始化時(shí)需要定義垃圾回收時(shí)間粒度的默認(rèn)值,比如回收間隔時(shí)間(時(shí)間粒度)默認(rèn)值定義為400ms,那么每隔400ms就會(huì)進(jìn)行一次后臺(tái)的垃圾回收。其次,任務(wù)的每次循環(huán)都需要檢測有效資源剩余,根據(jù)Flash有效資源的剩余情況來確定資源回收時(shí)間粒度。在CPU負(fù)載檢測任務(wù)控制的時(shí)間粒度滑動(dòng)窗口上面確定具體的時(shí)間粒度,根據(jù)時(shí)間粒度調(diào)整下次后臺(tái)垃圾回收的時(shí)間。
三、實(shí)現(xiàn)。
1、時(shí)間粒度初始化。
首先,設(shè)備需要實(shí)現(xiàn)時(shí)間粒度條和時(shí)間粒度滑動(dòng)窗口的初始化:時(shí)間進(jìn)度條上的時(shí)間粒度保證從小到大的趨勢,具體的時(shí)間粒度值和相鄰值之間的跨度由用戶根據(jù)設(shè)備特性(CPU速率和基本負(fù)載、存儲(chǔ)空間大小等)來決定。時(shí)間粒度滑動(dòng)窗口根據(jù)CPU負(fù)載的變化在時(shí)間粒度條上滑動(dòng),該窗口的大小可以由用戶自定義,如圖1所示的示意圖,窗口的大小定義為7,即窗口每次包含7個(gè)時(shí)間粒度值。
2、CPU負(fù)載檢測任務(wù)。
在嵌入式設(shè)備上電之后,系統(tǒng)初始化階段,啟動(dòng)一個(gè)最低優(yōu)先級(jí)的任務(wù):CPU負(fù)載檢測任務(wù),該任務(wù)在初始化期間記錄一段變量遞增算法的時(shí)間間隔T1,由于初始化期間其他任務(wù)都沒有開始運(yùn)行,所以可以獲取一個(gè)比較精確的標(biāo)準(zhǔn)參照時(shí)間間隔[7]。CPU負(fù)載檢測任務(wù)運(yùn)行期間,記錄同樣一段變量遞增算法(與CPU負(fù)載檢測任務(wù)初始化時(shí)的算法一樣)的時(shí)間間隔T2,由于CPU負(fù)載檢測任務(wù)的優(yōu)先級(jí)最低,所以嵌入式設(shè)備運(yùn)行期間,只要有其他任務(wù)運(yùn)行,該任務(wù)就會(huì)被打斷去執(zhí)行其他任務(wù),直到其他任務(wù)都執(zhí)行完畢并處于掛起狀態(tài),該任務(wù)才會(huì)被繼續(xù)執(zhí)行。
所以CPU任務(wù)越多,執(zhí)行越頻繁,實(shí)際統(tǒng)計(jì)的時(shí)間間隔就越長。當(dāng)CPU負(fù)載減小的時(shí)候,說明空閑時(shí)間較多,有能力處理更多的任務(wù),這時(shí)時(shí)間粒度滑動(dòng)窗口向左端滑動(dòng),減小后臺(tái)資源回收檢測任務(wù)的時(shí)間粒度(間隔)、增大回收粒度,這樣做可以提高垃圾回收速度,同時(shí)也提高了CPU的利用率[8]。當(dāng)CPU負(fù)載增大的時(shí)候,說明空閑時(shí)間減少,這時(shí)時(shí)間粒度滑動(dòng)窗口向右端滑動(dòng),增大后臺(tái)資源回收檢測任務(wù)的間隔時(shí)間、減小回收粒度,這樣做可以降低垃圾回收速度,減輕CPU負(fù)荷。
3、資源回收檢測任務(wù)。
資源回收檢測任務(wù)最重要的功能就是根據(jù)策略判定資源回收的時(shí)間粒度,然后調(diào)用系統(tǒng)本身的資源回收功能進(jìn)行Flash垃圾資源的回收。該任務(wù)初始化時(shí)需要定義垃圾回收時(shí)間粒度的默認(rèn)值,比如回收間隔時(shí)間默認(rèn)值定義為400ms,那么每隔400ms就會(huì)進(jìn)行一次后臺(tái)的垃圾回收。任務(wù)的每個(gè)循環(huán)都需要檢測有效資源的剩余情況、業(yè)務(wù)對(duì)資源的需求情況,由此在時(shí)間粒度滑動(dòng)窗口上面確定具體的時(shí)間粒度,任務(wù)根據(jù)時(shí)間粒度調(diào)整下次后臺(tái)垃圾回收的時(shí)間間隔。舉個(gè)簡單的例子(實(shí)際應(yīng)用中各門檻值都可以根據(jù)自身具體的業(yè)務(wù)更加細(xì)化)。當(dāng)CPU占有率小于30%時(shí)候,此時(shí)負(fù)載比較低,時(shí)間粒度滑動(dòng)窗口向數(shù)值小的一端滑行,可以看到窗口的范圍是200——700ms,共包括7個(gè)時(shí)間粒度值,具體選擇哪個(gè)粒度值就需要由剩余的有效Flash資源、業(yè)務(wù)需求決定。當(dāng)有效資源剩余量充足的時(shí)候,說明資源足夠,垃圾回收的需求不迫切,可以選擇700ms的粒度。當(dāng)有效資源剩余量比較少的時(shí)候,垃圾回收的需求就比較迫切,可以選擇200ms的粒度,加快垃圾回收。
當(dāng)CPU占有率在60%左右時(shí)CPU負(fù)載適中,時(shí)間粒度滑動(dòng)窗口向右端滑行,可以看到窗口的范圍是500——1200ms,共包括7個(gè)時(shí)間粒度值,具體選擇哪個(gè)粒度值由剩余的有效資源決定。當(dāng)有效資源剩余量比較多的時(shí)候,說明資源足夠,垃圾回收的需求不迫切,可以選擇1200ms的粒度。當(dāng)有效資源剩余量比較少的時(shí)候,垃圾回收的需求就比較迫切,可以選擇500ms的粒度,加快垃圾回收。當(dāng)CPU占有率大于90%時(shí)CPU負(fù)載很大,時(shí)間粒度滑動(dòng)窗口向數(shù)值大的一端滑行,可以看到窗口的范圍是1000——2200ms,共包括7個(gè)時(shí)間粒度值,具體選擇哪個(gè)粒度值由剩余的有效資源決定。當(dāng)有效資源剩余量比較多的時(shí)候,說明資源足夠,垃圾回收的需求不迫切,可以選擇2200ms的粒度。當(dāng)有效資源剩余量比較少的時(shí)候,垃圾回收的需求就比較迫切,可以選擇1000ms的粒度,加快垃圾回收。一旦檢測到Flash剩余有效資源減少到需求門檻以下、CPU負(fù)載比較重、資源回收不及時(shí)的情況,任務(wù)觸發(fā)嵌入式裝置報(bào)警。
四、模擬測試。
為了方便測試和說明問題,將資源回收時(shí)間粒度、Flash剩余空間、CPU負(fù)載組成三維坐標(biāo),模擬出示意圖說明CPU負(fù)載、Flash剩余空間和回收時(shí)間粒度的變化趨勢之間的關(guān)系。條件如下:
、賹r(shí)間粒度進(jìn)度條長度限定為3000ms,即時(shí)間粒度只能在0——3000ms范圍內(nèi)選擇。
、趯r(shí)間粒度滑動(dòng)窗口長度限定為500ms,滑動(dòng)窗口的滑動(dòng)粒度是25ms,即CPU負(fù)載每變化1%,滑動(dòng)窗口就會(huì)滑動(dòng)25ms的范圍。
、蹠r(shí)間粒度最小選擇單位為5ms,即Flash剩余空間每變化1%,時(shí)間粒度選擇就會(huì)有5ms的改變。在時(shí)間粒度的三維分布入中,存在安全區(qū)域和報(bào)警區(qū)域:在安全區(qū)域以內(nèi)說明Flash剩余有效空間充足,或者是CPU對(duì)垃圾資源的回收速度大于Flash剩余空間的使用速度;當(dāng)Flash剩余空間不充足并且CPU回收粒度跟不上Flash空間使用速度的時(shí)候,就會(huì)觸發(fā)報(bào)警,警告設(shè)備可能會(huì)存在異常情況。
結(jié)語:
本方案在保證嵌入式系統(tǒng)正常運(yùn)行的情況下,做好了垃圾資源回收工作,為資源的有效利用做好了準(zhǔn)備。這樣就能夠盡量提高CPU利用率,在不影響高優(yōu)先級(jí)實(shí)時(shí)任務(wù)的前提下盡可能快速回收Flash資源,保證有效資源剩余空間并保證在資源緊張時(shí)候報(bào)警,提高了設(shè)備運(yùn)行的安全性、可靠性和高效性。
【Flash數(shù)據(jù)資源回收策略論文】相關(guān)文章:
鉬資源的回收與應(yīng)用04-27
家具產(chǎn)品回收利用的思維與策略04-28
圖書館資源管理策略論文04-30
數(shù)據(jù)挖掘論文04-29
中學(xué)語文教學(xué)資源開發(fā)策略論文05-02
油田企業(yè)物資供應(yīng)鏈的回購再造及回收利用策略論文04-30
資源回收與可持續(xù)發(fā)展04-28