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