[發(fā)明專利]一種自動將緩存在易失介質(zhì)中的數(shù)據(jù)寫回方法有效
| 申請?zhí)枺?/td> | 201110363871.6 | 申請日: | 2011-11-17 |
| 公開(公告)號: | CN102521173A | 公開(公告)日: | 2012-06-27 |
| 發(fā)明(設(shè)計)人: | 袁清波;許建衛(wèi);劉新春;邵宗有 | 申請(專利權(quán))人: | 曙光信息產(chǎn)業(yè)(北京)有限公司 |
| 主分類號: | G06F13/16 | 分類號: | G06F13/16 |
| 代理公司: | 北京安博達(dá)知識產(chǎn)權(quán)代理有限公司 11271 | 代理人: | 徐國文 |
| 地址: | 100084 *** | 國省代碼: | 北京;11 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 自動 緩存 介質(zhì) 中的 數(shù)據(jù) 方法 | ||
技術(shù)領(lǐng)域
本發(fā)明涉及磁盤緩存技術(shù),具體來說,涉及一種自動將緩存在易失介質(zhì)中的數(shù)據(jù)寫回方法。?
背景技術(shù)
在Linux操作系統(tǒng)中,當(dāng)應(yīng)用程序需要讀取文件中的數(shù)據(jù)時,操作系統(tǒng)先分配一些內(nèi)存,將數(shù)據(jù)從存儲設(shè)備讀入到這些內(nèi)存中,然后再將數(shù)據(jù)分發(fā)給應(yīng)用程序;當(dāng)需要往文件中寫數(shù)據(jù)時,操作系統(tǒng)先分配內(nèi)存接收用戶數(shù)據(jù),然后再將數(shù)據(jù)從內(nèi)存寫到磁盤上。文件Cache管理指的就是對這些由操作系統(tǒng)分配,并用來存儲文件數(shù)據(jù)的內(nèi)存的管理。Cache管理的優(yōu)劣通過兩個指標(biāo)衡量:一是Cache命中率,Cache命中時數(shù)據(jù)可以直接從內(nèi)存中獲取,不再需要訪問低速外設(shè),因而可以顯著提高性能;二是有效Cache的比率,有效Cache是指真正會被訪問到的Cache項,如果有效Cache的比率偏低,則相當(dāng)部分磁盤帶寬會被浪費到讀取無用Cache上,而且無用Cache會間接導(dǎo)致系統(tǒng)內(nèi)存緊張,最后可能會嚴(yán)重影響性能。?
當(dāng)系統(tǒng)中物理內(nèi)存減少時,Linux內(nèi)存管理子系統(tǒng)必須釋放物理頁面。這個任務(wù)由核心交換后臺進程(kswapd)來完成。核心交換后臺進程是一種特殊的核心線程,它是沒有虛擬內(nèi)存的進程,在物理地址空間上以核心態(tài)運行,其目標(biāo)是保證系統(tǒng)中有足夠的空閑頁面來維?持內(nèi)存管理系統(tǒng)運行效率。此進程由核心的init進程在系統(tǒng)啟動時運行,被核心交換定時器周期性的調(diào)用。當(dāng)定時器到時后,交換后臺進程將檢查系統(tǒng)中的空閑頁面數(shù)是否太少。它使用兩個變量:free_pages_high和free_page_low來判斷是否該釋放一些頁面。只要系統(tǒng)中的空閑頁面數(shù)大于free_pages_high,核心交換后臺進程不做任何工作;它將睡眠到下一次定時器到時。如果系統(tǒng)中的空閑頁面數(shù)在free_pages_high甚至free_pages_low以下時,核心交換后臺進程將會選擇一部分頁面將其交換出去。?
以上是將磁盤數(shù)據(jù)緩存在內(nèi)存中時操作系統(tǒng)將數(shù)據(jù)寫回的機制,這些緩存的數(shù)據(jù)操作系統(tǒng)以及讀寫這些數(shù)據(jù)的應(yīng)用程序是知道其沒有被寫入磁盤的,所以在系統(tǒng)掉電的情況下即便數(shù)據(jù)沒有被寫入磁盤影響也不大。現(xiàn)在存在另外一種情況,某些程序使用device?mapper機制將高速設(shè)備作為慢速設(shè)備的緩存,并向上提供與磁盤完全一致的接口,這樣當(dāng)數(shù)據(jù)寫入此接口后,操作系統(tǒng)與應(yīng)用程序確信已經(jīng)不會丟失了,但實際情況卻是這些數(shù)據(jù)被緩存到了一個高速易失設(shè)備上,在掉電時這些數(shù)據(jù)將會丟失,而操作系統(tǒng)和應(yīng)用程序完全不知道這種情況,這時的數(shù)據(jù)丟失是比較嚴(yán)重的。所以必須提供一種相對及時的自動寫回機制來減少數(shù)據(jù)丟失發(fā)生的幾率。?
發(fā)明內(nèi)容
為解決上述問題,本發(fā)明提出了一種自動將緩存在易失介質(zhì)中的數(shù)據(jù)寫回方法。?
一種自動將緩存在易失介質(zhì)中的數(shù)據(jù)寫回方法,將低速設(shè)備與高速設(shè)備分別劃分region管理,管理region的數(shù)據(jù)結(jié)構(gòu)在內(nèi)存中,對一個region的操作首先調(diào)用讀取接口,操作完成后調(diào)用釋放接口釋放;?
在系統(tǒng)建立時創(chuàng)建后臺沖洗線程,沖洗線程在沒有任務(wù)時處于睡眠狀態(tài),在對region操作完成后喚醒沖洗線程,沖洗線程根據(jù)策略將region寫回低速設(shè)備。?
優(yōu)選的,所述沖洗線程在被喚醒后的工作過程為:?
判斷是否存在臟region,如果沒有則繼續(xù)睡眠;?
如果存在臟region,根據(jù)策略寫回臟region;?
如果臟region的數(shù)量大于零,從高速設(shè)備中讀出臟region寫入低速設(shè)備;?
如果策略暫時不允許寫回,則延遲,之后再重新執(zhí)行沖洗線程。?
優(yōu)選的,所述策略包括只考慮安全不考慮性能的強制寫回,兼顧安全和性能的無IO訪問時寫回和只考慮性能不考慮安全的不寫回。?
優(yōu)選的,所述沖洗線程存在一個運行標(biāo)志位,用于避免兩個沖洗線程同時執(zhí)行。?
優(yōu)選的,所述沖洗線程存在一個執(zhí)行標(biāo)志位,用于判斷是否沖洗線程剛剛執(zhí)行完畢;如果執(zhí)行標(biāo)志位為空,則繼續(xù)執(zhí)行;如果執(zhí)行標(biāo)志位不為空,則延遲后,再重新執(zhí)行時判斷是否有臟region;如果沒有則清空運行和執(zhí)行標(biāo)志位,進入休眠,如果有則寫回。?
優(yōu)選的,所述沖洗線程在寫回時判斷臟region是否為連續(xù)區(qū)域,?如果為連續(xù)區(qū)域,則只讀這一區(qū)域;如果不為連續(xù)區(qū)域,則讀整個region區(qū)域,再從磁盤中讀入整個region區(qū)域,根據(jù)臟位圖將高速設(shè)備上的臟數(shù)據(jù)寫回磁盤。?
附圖說明
圖1是本發(fā)明的緩存映射圖?
具體實施方式
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于曙光信息產(chǎn)業(yè)(北京)有限公司,未經(jīng)曙光信息產(chǎn)業(yè)(北京)有限公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201110363871.6/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- 上一篇:一種高爐風(fēng)口小套
- 下一篇:一種冶金預(yù)熔渣鑄渣裝置





