專利名稱:共享緩存管理系統(tǒng)及方法
技術(shù)領(lǐng)域:
本發(fā)明涉及信息技術(shù)領(lǐng)域,特別涉及共享緩存管理系統(tǒng)及方法。
背景技術(shù):
緩存是決定存儲系統(tǒng)性能的重要因素之一,它利用1/0負(fù)載中普遍存在 的時空局部性來降低慢速磁盤VO對系統(tǒng)性能的影響。在網(wǎng)絡(luò)存儲應(yīng)用模式
下,存儲系統(tǒng)作為一種共享資源需要同時向多種應(yīng)用提供存儲服務(wù),不同類 型的應(yīng)用通常具有不同的負(fù)載特征和性能需求,因而要求存儲系統(tǒng)中的緩存 管理子系統(tǒng)能夠相應(yīng)提供應(yīng)用級的緩存管理功能。
具體來說, 一方面緩存管理系統(tǒng)能夠通過多應(yīng)用間的緩存資源來達(dá)成某
種既定系統(tǒng)優(yōu)化目標(biāo),該系統(tǒng)優(yōu)化目標(biāo)包括系統(tǒng)整體性能最優(yōu)、緩存服務(wù) 質(zhì)量保證以及基于緩存過濾效應(yīng)的節(jié)能存儲和負(fù)載均衡等;另一方面,系統(tǒng) 要能夠根據(jù)應(yīng)用負(fù)載特征為應(yīng)用配置適合的緩存替換算法以優(yōu)化分配緩存資 源的利用率。
現(xiàn)有技術(shù)中的緩存管理系統(tǒng)不能有效的支持網(wǎng)絡(luò)存儲這種多應(yīng)用共享使 用模式。以Linux操作系統(tǒng)中的緩存分區(qū)管理模塊(Limix-醒)為例,它采 用基于單一固定的全局緩存替換算法的方式來管理系統(tǒng)中的緩存資源,其缺
點在于(l)不能支持應(yīng)用級的緩存管理語義,因而無法有效的支持存儲系統(tǒng) 某種特定的系統(tǒng)優(yōu)化目標(biāo);(2)因為緩存替換算法的性能取決于應(yīng)用的負(fù)載 特征,不同的應(yīng)用往往具有各自不同的負(fù)載類型,單一固定的緩存替換算法 不能高效使用為應(yīng)用所分配的緩存資源。
發(fā)明內(nèi)容
為解決上述問題,本發(fā)明提供共享緩存管理系統(tǒng)及方法,能夠根據(jù)應(yīng)用 的負(fù)載特征為應(yīng)用分配對應(yīng)的緩存替換算法,進(jìn)而高效使用緩存資源。
本發(fā)明公開共享緩存管理系統(tǒng),所述系統(tǒng)包括緩存分區(qū)管理模塊、緩存分配模塊和多個緩存分區(qū);
所述緩存分區(qū),具有緩存空間,用于同應(yīng)用關(guān)聯(lián),在所述緩存空間中承 載所述應(yīng)用當(dāng)前訪問的數(shù)據(jù);
所述緩存分區(qū)管理模塊,用于根據(jù)緩存分區(qū)對應(yīng)的應(yīng)用的負(fù)載特征,為 每個緩存分區(qū)分配對應(yīng)的緩存替換算法;
所述緩存分配模塊,用于以共享緩存池的方式管理所有空閑緩存資源, 運用緩存分區(qū)對應(yīng)的緩存替換算法對所述緩存分區(qū)的緩存空間進(jìn)行管理。
所述緩存分配模塊對所述緩存分區(qū)的緩存空間進(jìn)行的管理包括向所述 緩存分區(qū)分配緩存塊和從所述緩存分區(qū)回收緩存塊。
所述緩存分配模塊在向所述緩存分區(qū)分配緩存塊時進(jìn)一步用于從所述共 享緩存池中為所述緩存分區(qū)分配新的緩存塊,運用所述緩存分區(qū)對應(yīng)的緩存 替換算法將所述新的緩存塊添加到所述緩存分區(qū)中。
所述緩存分配模塊在從所述緩存分區(qū)回收緩存塊時進(jìn)一步用于根據(jù)緩存 分配策略確定被回收的緩存分區(qū)以及每個所述緩存分區(qū)被回收的緩存塊的數(shù) 量;運用所述緩存分區(qū)對應(yīng)的緩存替換算法從所述緩存分區(qū)替換出所述數(shù)量 的緩存塊,將所述緩存塊重新置于所述共享緩存池。
所述緩存分配模塊還用于在所述共享緩存池的緩存空間小于預(yù)設(shè)的低臨 界值時,從所述緩存分區(qū)回收緩存塊,以使共享緩存池的緩存空間在預(yù)設(shè)的 高臨界值和所述低臨界值之間。
所述緩存分區(qū)管理模塊還用于當(dāng)從所述應(yīng)用對應(yīng)的緩存空間查找到應(yīng)用 訪問的數(shù)據(jù)塊對應(yīng)的緩存塊時,通過所述緩存分區(qū)對應(yīng)的緩存替換算法更新 所述緩存塊在所述緩存分區(qū)的狀態(tài)。
本發(fā)明還公開了共享緩存管理方法,所述方法包括
步驟1,多個緩存分區(qū)分別同應(yīng)用關(guān)聯(lián),在所述緩存空間中承載所述應(yīng) 用當(dāng)前訪問的數(shù)據(jù);
步驟2,根據(jù)緩存分區(qū)對應(yīng)的應(yīng)用的負(fù)載特征,為每個緩存分區(qū)分配對 應(yīng)的緩存替換算法;
步驟3,以共享緩存池的方式管理所有空閑緩存資源,運用緩存分區(qū)對 應(yīng)的緩存替換算法對所述緩存分區(qū)的緩存空間進(jìn)行管理。
所述對所述緩存分區(qū)的緩存空間進(jìn)行的管理包括向所述緩存分區(qū)分配緩存塊和從所述緩存分區(qū)回收緩存塊。
所述步驟3中向所述緩存分區(qū)分配緩存塊進(jìn)一步為,
步驟91,從所述共享緩存池中為所述緩存分區(qū)分配新的緩存塊,運用所
述緩存分區(qū)對應(yīng)的緩存替換算法將所述新的緩存塊添加到所述緩存分區(qū)中。
所述步驟3中從所述緩存分區(qū)回收緩存塊進(jìn)一步為,
步驟101,根據(jù)緩存分配策略確定被回收的緩存分區(qū)以及每個所述緩存 分區(qū)被回收的緩存塊的數(shù)量;
步驟102,運用所述緩存分區(qū)對應(yīng)的緩存替換算法從所述緩存分區(qū)替換 出所述數(shù)量的緩存塊,將所述緩存塊重新置于所述共享緩存池。
所述步驟3還包括,
步驟111,在所述共享緩存池的緩存空間小于預(yù)設(shè)的低臨界值時,從所 述緩存分區(qū)回收緩存塊,以使共享緩存池的緩存空間在預(yù)設(shè)的高臨界值和所 述低臨界值之間。
所述步驟2后還包括,
步驟121,當(dāng)從所述應(yīng)用對應(yīng)的緩存空間査找到應(yīng)用訪問的數(shù)據(jù)塊對應(yīng) 的緩存塊時,通過所述緩存分區(qū)對應(yīng)的緩存替換算法更新所述緩存塊在所述 緩存分區(qū)的狀態(tài)。
本發(fā)明的有益效果在于,本發(fā)明基于應(yīng)用的緩存分區(qū)自治能夠針對具體 應(yīng)用的性能進(jìn)行優(yōu)化,自治指本發(fā)明中的各緩存分區(qū)的緩存空間相互獨立且 能夠根據(jù)對應(yīng)的應(yīng)用的負(fù)載特征采用緩存替換算法進(jìn)行管理;本發(fā)明按需分 配與區(qū)分回收相結(jié)合的緩存分配能夠?qū)崿F(xiàn)基于緩存分配策略的應(yīng)用級緩存管 理語義,區(qū)分回收是指本發(fā)明從不同緩存分區(qū)的緩存空間中回收不等量的緩 存資源,且緩存回收方案取決于緩存分配策略,由于采用對緩存資源的區(qū)分 回收,緩存分配策略能夠?qū)Ω骶彺娣謪^(qū)的緩存空間大小進(jìn)行動態(tài)調(diào)節(jié),進(jìn)而 實現(xiàn)應(yīng)用級緩存管理語義。
圖1是本發(fā)明的共享緩存管理系統(tǒng)的結(jié)構(gòu)圖2是本發(fā)明的共享緩存管理系統(tǒng)具體實施方式
示意圖;圖3是本發(fā)明實施例緩存分區(qū)添加和更新的示意圖; 圖4是是本發(fā)明實施例緩存分配的示意圖; 圖5是本發(fā)明的共享緩存管理方法流程圖。
具體實施例方式
下面結(jié)合附圖,對本發(fā)明做進(jìn)一步的詳細(xì)描述。 本發(fā)明的共享緩存管理系統(tǒng)的結(jié)構(gòu)如圖1所示。
系統(tǒng)包括緩存分區(qū)管理模塊200、緩存分配模塊300和多個緩存分區(qū)100。
緩存分區(qū)100,具有緩存空間,用于同應(yīng)用關(guān)聯(lián),在該緩存空間中承載 所述應(yīng)用當(dāng)前訪問的數(shù)據(jù)。
緩存分區(qū)管理模塊200,用于根據(jù)緩存分區(qū)IOO對應(yīng)的應(yīng)用的負(fù)載特征, 為每個緩存分區(qū)100分配對應(yīng)的緩存替換算法。
在較佳的方案中,緩存分區(qū)管理模塊200還用于當(dāng)從應(yīng)用對應(yīng)的緩存分 區(qū)100中査找到應(yīng)用訪問的數(shù)據(jù)塊對應(yīng)的緩存塊時,通過該緩存分區(qū)100對 應(yīng)的緩存替換算法更新該緩存塊在該緩存分區(qū)100的狀態(tài)。
緩存分配模塊300,用于以共享緩存池的方式管理所有空閑緩存資源, 運用緩存分區(qū)100對應(yīng)的緩存替換算法對該緩存分區(qū)100的緩存空間進(jìn)行管 理。
緩存分配模塊300對緩存分區(qū)100的緩存空間進(jìn)行的管理包括向該緩 存分區(qū)100分配緩存塊和從該緩存分區(qū)100回收緩存塊。
緩存分配模塊300在向緩存分區(qū)100分配緩存塊時進(jìn)一步用于從共享緩 存池中為該緩存分區(qū)IOO分配新的緩存塊,運用該緩存分區(qū)IOO對應(yīng)的緩存 替換算法將該新的緩存塊添加到該緩存分區(qū)100中。
緩存分配模塊300在從緩存分區(qū)100回收緩存塊時進(jìn)一步用于根據(jù)緩存 分配策略確定被回收的緩存分區(qū)100以及每個被回收的緩存分區(qū)100被回收 的緩存塊的數(shù)量;運用每個被回收的緩存分區(qū)100對應(yīng)的緩存替換算法從該 緩存分區(qū)IOO替換出所述數(shù)量的緩存塊,將該緩存塊重新置于共享緩存池。
在較佳的方案中,緩存分配模塊300還用于在共享緩存池的緩存空間小 于預(yù)設(shè)的低臨界值時,從緩存分區(qū)100回收緩存塊,以使共享緩存池的緩存 空間在預(yù)設(shè)的高臨界值和所述低臨界值之間。本發(fā)明系統(tǒng)的一個具體實施方式
如圖2所示。
系統(tǒng)由緩存分區(qū)100、緩存分區(qū)管理模塊200和緩存分配模塊300組成。 圖2中,I表示緩存空間管理接口, II表示緩存資源分配接口, III表示緩 存資源釋放接口。
緩存分區(qū)100,直接與具體應(yīng)用關(guān)聯(lián),每個緩存分區(qū)100具有自己獨立 的緩存空間并為應(yīng)用提供相應(yīng)的緩存服務(wù),其中緩存空間中承載著應(yīng)用當(dāng)前 訪問的活躍數(shù)據(jù)。
緩存分區(qū)管理模塊200,通過緩存空間管理接口為各緩存分區(qū)100中的 緩存空間提供基于不同替換算法的緩存管理服務(wù),根據(jù)每個緩存分區(qū)100具 體的應(yīng)用負(fù)載特征選擇對應(yīng)的緩存替換算法,從而提高緩存空間的利用率。
緩存分配模塊300,以共享緩存池的方式統(tǒng)一管理系統(tǒng)中的空閑緩存資 源,通過緩存資源分配接口為各緩存分區(qū)ioo的緩存空間提供緩存資源。
具體而言,應(yīng)用在讀寫緩存分區(qū)100的緩存空間過程中按需從共享緩存 池中申請緩存資源,新分配的緩存塊由該緩存分區(qū)ioo對應(yīng)的緩存替換算法 加入到緩存空間中;當(dāng)共享緩存池中的空閑緩存資源不足時,緩存分配模塊 300進(jìn)行系統(tǒng)緩存資源回收,緩存分配策略決定被回收緩存資源的緩存空間 和數(shù)量,而緩存分區(qū)100對應(yīng)的緩存替換算法則具體決定應(yīng)從緩存分區(qū)100 中替換出的緩存塊,該些被回收的緩存資源又通過緩存資源釋放接口被重新 置于共享緩存池中。
緩存分區(qū)100將應(yīng)用與下層物理存儲介質(zhì)相關(guān)聯(lián),在兩者I/O路徑間為 應(yīng)用提供所需的緩存服務(wù)以加速應(yīng)用的1/0性能。
具體來說,緩存分區(qū)IOO通過以下四類功能訪問接口來實現(xiàn)緩存服務(wù)
應(yīng)用I/0接口,處理來自應(yīng)用的1/0讀寫請求;
存儲I/0接口,向物理存儲介質(zhì)發(fā)起I/0讀寫請求,以更新新加入緩存 空間的數(shù)據(jù)塊或同步緩存空間中修改過的數(shù)據(jù)塊;
緩存空間管理接口,向緩存分區(qū)管理模塊200申請基于某種替換策略的 緩存空間管理功能;如向緩存分區(qū)100中加入新分配的緩存塊,更新緩存分 區(qū)100中讀寫命中緩存塊的狀態(tài),以及從緩存分區(qū)100中回收緩存塊;其中 緩存塊的加入/更新操作由I/O線程發(fā)起,而緩存塊的回收操作則由緩存分區(qū) 100的緩存資源回收線程發(fā)起。緩存資源分配/釋放接口 ,同緩存分配模塊300進(jìn)行交互以分配和釋放空
閑緩存資源。
緩存分區(qū)100是本發(fā)明的核心樞紐所在,它將應(yīng)用、存儲介質(zhì)、緩存分 區(qū)管理模塊200和緩存分配模塊300四種功能實體有機結(jié)合在一起。
現(xiàn)有技術(shù)中,緩存替換算法包括LFU、 LRU、 FBR、 LRU-K、 LRFU、 2Q、 ARC、 LIRS、 MQ等多種,但是,沒有一種緩存替換算法能夠高效的適用于各種類型 的應(yīng)用,現(xiàn)有技術(shù)中的緩存替換算法只能是以犧牲對特定應(yīng)用優(yōu)化為代價的。
本發(fā)明中緩存分區(qū)管理模塊200根據(jù)緩存分區(qū)100對應(yīng)的應(yīng)用的負(fù)載特 征,為每個緩存分區(qū)100分配對應(yīng)的緩存替換算法,其中緩存替換算法為現(xiàn) 有技術(shù)中的一種緩存替換算法。緩存分區(qū)管理模塊200根據(jù)緩存分區(qū)100自 身的負(fù)載特征從公知的緩存替換算法中選擇適合于該應(yīng)用的一種緩存替換算 法,作為該應(yīng)用對應(yīng)的緩存替換算法。
例如,算法LFU對應(yīng)于應(yīng)用負(fù)載特征為二級緩存的緩存分區(qū);算法LRU 對應(yīng)于應(yīng)用負(fù)載特征為PC (個人計算機)負(fù)載的緩存分區(qū);算法2Q對于應(yīng) 用負(fù)載特征為數(shù)據(jù)庫負(fù)載,例如MySQL,的緩存分區(qū)。
當(dāng)系統(tǒng)回收緩存資源時,緩存替換算法還負(fù)責(zé)決定應(yīng)從緩存分區(qū)中具體 回收哪些緩存塊。為了提高緩存資源的利用率,緩存替換算法每次從緩存分 區(qū)中選擇替換它認(rèn)為最沒有價值的緩存塊,不同的緩存替換算法有各自不同 的緩存塊評價標(biāo)準(zhǔn),評價標(biāo)準(zhǔn)包括數(shù)據(jù)訪問熱度、數(shù)據(jù)訪問頻度、失效開銷 以及數(shù)據(jù)訪問模式等。應(yīng)用的I/0性能取決于緩存替換算法的效率,而緩存 替換算法的效率又取決于應(yīng)用的負(fù)載特征。本發(fā)明的系統(tǒng)采用的應(yīng)用級分區(qū) 自治機制通過為不同應(yīng)用配置各自適合的緩存替換算法來實現(xiàn)對具體應(yīng)用的 優(yōu)化,該特點適合于網(wǎng)絡(luò)存儲系統(tǒng)中多種負(fù)載類型不同的應(yīng)用共享存儲。
緩存分配模塊300以共享緩存池的方式統(tǒng)一管理系統(tǒng)中的空閑緩存資 源。當(dāng)系統(tǒng)處于初始狀態(tài)時,共享緩存池中存放了系統(tǒng)中所有的緩存資源; 隨著系統(tǒng)的運行,各應(yīng)用按需從共享緩存池中分配緩存資源;當(dāng)共享緩存池 中空閑緩存塊數(shù)第一次不足預(yù)設(shè)的低臨界值后,緩存分配模塊300相應(yīng)發(fā)起 第一輪的緩存回收操作,至此系統(tǒng)進(jìn)入了飽和狀態(tài)。
在系統(tǒng)進(jìn)入飽和狀態(tài)后,進(jìn)行周期性的緩存資源回收,能夠使得緩存池 中的空閑緩存塊數(shù)始終保持在高臨界值和低臨值之間。作用在于能夠避免I/O線程在讀寫緩存時因沒有空閑緩存資源而被迫掛起等待,稱之為緩存分
配阻塞;配合緩存分配策略實現(xiàn)應(yīng)用級的緩存管理語義。
緩存分配策略決定了緩存回收方案,它在按需分配的基礎(chǔ)上通過基于緩 存分配策略的區(qū)分緩存資源回收來控制各緩存分區(qū)100的緩存空間大小的動 態(tài)調(diào)節(jié),只有分配的緩存塊數(shù)超過其被回收塊數(shù)的緩存分區(qū)100的緩存空間 才能得以擴張。在給定緩存替換算法的條件下,緩存空間的大小決定了應(yīng)用 的性能,因此本系統(tǒng)所采用的按需分配和區(qū)分回收相結(jié)合的緩存分配機制可 以有效實現(xiàn)應(yīng)用級的緩存管理。
實施例
以下以一個具體應(yīng)用為例,其對應(yīng)的緩存替換算法為2Q,對本發(fā)明的系 統(tǒng)進(jìn)行詳細(xì)說明。
2Q是現(xiàn)有技術(shù)中一種適合負(fù)數(shù)據(jù)庫負(fù)載的高效緩存替換算法。在2Q算 法中,ql隊列是用于識別負(fù)載中的活躍數(shù)據(jù),ql隊列是按照FIFO方式進(jìn)行 管理, 一旦數(shù)據(jù)訪問在ql隊列中命中則相應(yīng)將緩存數(shù)據(jù)遷移至qm隊列;qm 隊列是以LRU方式管理當(dāng)前負(fù)載中識別出的活躍數(shù)據(jù),此處非活躍數(shù)據(jù)是指 相鄰訪問間距較大或者僅訪問一次的數(shù)據(jù)塊,活躍數(shù)據(jù)是頻繁多次訪問且相 鄰訪問間距相對較小的數(shù)據(jù)。由于ql隊列在功能上只是為了能夠快速區(qū)分出 負(fù)載中的非活躍數(shù)據(jù),為了降低ql隊列所占緩存容量比例,ql隊列被劃分 為ql. in和ql.out兩部分,其中前者ql. in隊列在緩存中,ql. out隊列只 是記錄數(shù)據(jù)塊ID而并不保存數(shù)據(jù)內(nèi)容本身,ql. in隊列長度限制通常設(shè)為緩 存總?cè)萘康暮苄∫徊糠郑?/10。
實施例中緩存分區(qū)添加和更新如圖3所示。此時應(yīng)用需要讀取存儲介質(zhì) 中數(shù)據(jù)塊表示為N。
步驟S301,應(yīng)用的I/O線程首先通過應(yīng)用I/O接口在緩存分區(qū)100中 査找數(shù)據(jù)塊N,如果數(shù)據(jù)塊N當(dāng)前不在緩存分區(qū)100的緩存空間中,則執(zhí)行 步驟S304,進(jìn)行緩存失效處理;否則,執(zhí)行步驟S302。
步驟S302,數(shù)據(jù)塊N在緩存分區(qū)100的緩存空間中命中且對應(yīng)于緩存 空間中的緩存塊n, I/O線程通過2Q算法更新緩存塊n在緩存空間中的狀態(tài), 執(zhí)行步驟S303。
步驟S303,緩存分區(qū)100的緩存空間中各緩存塊間的狀態(tài)關(guān)系是按照2Q算法邏輯進(jìn)行組織維護(hù)的,如果緩存塊n當(dāng)前在qm鏈表中,則該緩存塊n 被移至qm鏈表頭;否則不做處理;在完成緩存塊的狀態(tài)更新后,I/O線程執(zhí)
行步驟S308讀取緩存數(shù)據(jù)。
步驟S304,由于數(shù)據(jù)塊N不在緩存分區(qū)100的緩存空間中,1/0線程首 先從緩存分配模塊300為N分配新的緩存塊n,執(zhí)行步驟S305。
步驟S305, I/O線程通過存儲I/O接口從物理存儲介質(zhì)中讀取數(shù)據(jù)塊N 的內(nèi)容并更新至新分配的緩存塊n。
步驟S306, I/O線程通過2Q算法將更新后的緩存塊n,加入緩存分區(qū)100 的緩存空間中。
步驟S307,如果數(shù)據(jù)塊N記錄在ql.out隊列中,相應(yīng)的緩存塊n,被置
于q2鏈表頭,否則被置于ql.in隊列首。
步驟S308, 1/0線程從緩存塊n中讀取數(shù)據(jù)塊N的內(nèi)容。 在上面例子中,給出了緩存替換算法在1/0操作中對緩存空間的管理,
即緩存塊的更新(步驟S302和S303)和加入(步驟S306和步驟S307)兩種操作。
實施例中緩存分配如圖4所示。系統(tǒng)中包括兩個緩存分區(qū)100,對應(yīng)的 緩存替換算法為2Q和LRU。
步驟S401, I/O線程通過緩存分配接口從共享緩存池中申請空閑緩存塊。
步驟S402,在當(dāng)前緩存池中的空閑資源不足低臨界值(lowmark—nr)時, I/O線程喚醒系統(tǒng)資源回收線程(swapd)進(jìn)行新一輪的緩存回收操作。
步驟S403, swapd線程首先根據(jù)當(dāng)前共享緩存池中所剩緩存塊的數(shù)量, 表示為free—nr,計算本輪所需回收的緩存塊的數(shù)量。
一個具體計算方法為回收的緩存塊數(shù)量,表示為target—nr, target_nr=highmark—nr-free—nr, highmark—nr為高臨界值。但是,本發(fā)明 中確定回收的緩存塊的數(shù)量的方法不限于此。
所述當(dāng)系統(tǒng)進(jìn)入飽和狀態(tài)后,共享緩存池中的空閑緩存資源始終限制在 高臨界值和低臨界值之間,基于高臨界值和低臨界值的批量緩存資源回收可 以避免因頻繁觸發(fā)swapd線程而導(dǎo)致高開銷低效率的緩存回收操作。swapd 線程接著通過緩存回收策略來決定緩存回收方案。步驟S404,緩存分配策略根據(jù)當(dāng)前系統(tǒng)負(fù)載以及各緩存分區(qū)100所占緩 存資源比例以及緩存分配策略所基于的緩存區(qū)分服務(wù)語義來決定應(yīng)如何調(diào)整 各緩存分區(qū)100緩存空間的大小,并相應(yīng)將這target_nr個回收緩存塊分配 至不同的緩存分區(qū)100從而生成新一輪的緩存回收方案。
例如, 一種能夠提供保證相對優(yōu)先級緩存區(qū)分服務(wù)語義的全局緩存分配 策略WT-GAP (weight-based global cache allocation policy),該策略 使能系統(tǒng)為共享存儲的各應(yīng)用提供基于權(quán)重的動態(tài)緩存區(qū)分服務(wù)。具體而言, 權(quán)重相對更高的應(yīng)用在系統(tǒng)運行過程可以獲得優(yōu)于權(quán)重相對較低應(yīng)用的緩存 服務(wù),這里緩存服務(wù)的優(yōu)劣以應(yīng)用實際分配所得緩存容量來衡量。
WT-GAP策略為每個緩存分區(qū)定義一個靜態(tài)優(yōu)先級(prio),其取值范圍 為[1, 8],根據(jù)應(yīng)用的重要性或緩存效用等因素相應(yīng)配置應(yīng)用優(yōu)先級。WT-GAP 策略在系統(tǒng)資源回收時,根據(jù)每個緩存分區(qū)的優(yōu)先級、當(dāng)前緩存資源占有率 以及最近負(fù)載強度三種因素在線計算該緩存分區(qū)的資源回收友好值(nice), 并根據(jù)上述動態(tài)計算得到的nice值按比例從各緩存分區(qū)中回收一定數(shù)量的 空閑緩存資源,其中當(dāng)前nice值越高的緩存分區(qū)所回收的緩存資源就越多。 原則上,優(yōu)先級越高的應(yīng)用在系統(tǒng)運行過中所擁有的緩存資源就越多。 下面給出了 WT-GAP策略的算法流程,
步驟4041,更新當(dāng)前WT-GAP策略管理域內(nèi)每個緩存分區(qū)的回收nice值, 將nice值非0的緩存分區(qū)加入資源回收鏈表(rlc一list)并統(tǒng)計回收鏈表中 緩存分區(qū)的nice值得累加和(tot_nice);
步驟4042,從回收鏈表中找出那些可回收資源不足的緩存分區(qū),其判斷 依據(jù)為分區(qū)中的緩存容量是否小于其按nice值比例回收數(shù),對于那些資源不 足的緩存分區(qū),標(biāo)記回收其當(dāng)前所有的緩存資源。并相應(yīng)更新tot—nice值和 步驟S403中target』r,最后將該緩存分區(qū)從回收鏈表中刪除;
步驟4043,對于每一個在回收鏈表中的緩存分區(qū),按比例標(biāo)記所需回收 的緩存資源數(shù)。
步驟S405, sw鄰d線程同時喚醒所有需要進(jìn)行回收的緩存分區(qū)100的分 區(qū)緩存回收線程(reapd) , re即d完成對單個緩存分區(qū)100的資源回收。
步驟S406,每個reapd線程通過緩存空間管理接口向緩存替換算法提出 緩存塊回收申請。步驟S407,緩存替換算法相應(yīng)從緩存分區(qū)100的緩存空間中替換出指定 數(shù)目的緩存塊并通過緩存資源釋放接口將被替換的緩存塊重新置于共享緩存 池中。
步驟S408,當(dāng)所有喚醒的reapd線程都完成緩存回收操作后,sw鄰d線 程檢査當(dāng)前空閑緩存塊數(shù)是否高于低臨界值,如果高于則終止本輪回收操作; 否則跳回至步驟S403開始新一輪的回收操作。
由上可知,本系統(tǒng)所采用的緩存分配不僅可以避免系統(tǒng)空閑緩存資源的 閑置,同時其所采用的異步回收操作可以有效避免緩存分配阻塞,在上述實 施例中,I/O線程在步驟S402步喚醒sw鄰d線程后繼續(xù)從共享緩存池中獲取 資源,由于只有空閑緩存塊為零時,I/O線程才被掛起等待,而通常緩存回 收操作相對于I/O操作要快很多,因此上述情況只有在極端情況下才會發(fā)生。 此外,本發(fā)明的系統(tǒng)將緩存分配策略與緩存回收策略相分離,不同的緩存分 配策略能夠?qū)崿F(xiàn)不同的緩存管理語義,如應(yīng)用服務(wù)質(zhì)量保證、應(yīng)用間的負(fù)載 均衡、應(yīng)用優(yōu)先級等。從而使能本系統(tǒng)可以靈活配置不同的緩存分配策略以 滿足存儲系統(tǒng)具體應(yīng)用場景的需求。
本發(fā)明的共享緩存管理方法流程如圖5所示。
步驟S510,多個緩存分區(qū)分別同應(yīng)用關(guān)聯(lián),在所述緩存空間中承載所述 應(yīng)用當(dāng)前訪問的數(shù)據(jù)。
步驟S520,根據(jù)緩存分區(qū)對應(yīng)的應(yīng)用的負(fù)載特征,為每個緩存分區(qū)分配 對應(yīng)的緩存替換算法。
步驟S530,以共享緩存池的方式管理所有空閑緩存資源,運用緩存分區(qū) 對應(yīng)的緩存替換算法對所述緩存分區(qū)的緩存空間進(jìn)行管理。
一較佳的實施方式
所述對所述緩存分區(qū)的緩存空間進(jìn)行的管理包括向所述緩存分區(qū)分配 緩存塊和從所述緩存分區(qū)回收緩存塊。
其中,向所述緩存分區(qū)分配緩存塊進(jìn)一步為從所述共享緩存池中為所述 緩存分區(qū)分配新的緩存塊,運用所述緩存分區(qū)對應(yīng)的緩存替換算法將所述新 的緩存塊添加到所述緩存分區(qū)中。
其中,從所述緩存分區(qū)回收緩存塊進(jìn)一步為根據(jù)緩存分配策略確定被回 收的緩存分區(qū)以及每個所述緩存分區(qū)被回收的緩存塊的數(shù)量;運用所述緩存分區(qū)對應(yīng)的緩存替換算法從所述緩存分區(qū)替換出所述數(shù)量的緩存塊,將所述 緩存塊重新置于所述共享緩存池。 一較佳的實施方式
所述步驟S530還包括,
步驟111,在所述共享緩存池的緩存空間小于預(yù)設(shè)的低臨界值時,從所 述緩存分區(qū)回收緩存塊,以使共享緩存池的緩存空間在預(yù)設(shè)的高臨界值和所 述低臨界值之間。
一較佳的實施方式
所述步驟S520后還包括,
步驟121,當(dāng)從所述應(yīng)用對應(yīng)的緩存空間查找到應(yīng)用訪問的數(shù)據(jù)塊對應(yīng) 的緩存塊時,通過所述緩存分區(qū)對應(yīng)的緩存替換算法更新所述緩存塊在所述 緩存分區(qū)的狀態(tài)。
本領(lǐng)域的技術(shù)人員在不脫離權(quán)利要求書確定的本發(fā)明的精神和范圍的條 件下,還可以對以上內(nèi)容進(jìn)行各種各樣的修改。因此本發(fā)明的范圍并不僅限 于以上的說明,而是由權(quán)利要求書的范圍來確定的。
權(quán)利要求
1.一種共享緩存管理系統(tǒng),其特征在于,所述系統(tǒng)包括緩存分區(qū)管理模塊、緩存分配模塊和多個緩存分區(qū);所述緩存分區(qū),具有緩存空間,用于同應(yīng)用關(guān)聯(lián),在所述緩存空間中承載所述應(yīng)用當(dāng)前訪問的數(shù)據(jù);所述緩存分區(qū)管理模塊,用于根據(jù)緩存分區(qū)對應(yīng)的應(yīng)用的負(fù)載特征,為每個緩存分區(qū)分配對應(yīng)的緩存替換算法;所述緩存分配模塊,用于以共享緩存池的方式管理所有空閑緩存資源,運用緩存分區(qū)對應(yīng)的緩存替換算法對所述緩存分區(qū)的緩存空間進(jìn)行管理。
2. 如權(quán)利要求1所述的共享緩存管理系統(tǒng),其特征在于, 所述緩存分配模塊對所述緩存分區(qū)的緩存空間進(jìn)行的管理包括向所述緩存分區(qū)分配緩存塊和從所述緩存分區(qū)回收緩存塊。
3. 如權(quán)利要求2所述的共享緩存管理系統(tǒng),其特征在于,所述緩存分配模塊在向所述緩存分區(qū)分配緩存塊時進(jìn)一步用于從所述共 享緩存池中為所述緩存分區(qū)分配新的緩存塊,運用所述緩存分區(qū)對應(yīng)的緩存 替換算法將所述新的緩存塊添加到所述緩存分區(qū)中。
4. 如權(quán)利要求2所述的共享緩存管理系統(tǒng),其特征在于,所述緩存分配模塊在從所述緩存分區(qū)回收緩存塊時進(jìn)一步用于根據(jù)緩存 分配策略確定被回收的緩存分區(qū)以及每個所述緩存分區(qū)被回收的緩存塊的數(shù) 量;運用所述緩存分區(qū)對應(yīng)的緩存替換算法從所述緩存分區(qū)替換出所述數(shù)量 的緩存塊,將所述緩存塊重新置于所述共享緩存池。
5. 如權(quán)利要求4所述的共享緩存管理系統(tǒng),其特征在于, 所述緩存分配模塊還用于在所述共享緩存池的緩存空間小于預(yù)設(shè)的低臨界值時,從所述緩存分區(qū)回收緩存塊,以使共享緩存池的緩存空間在預(yù)設(shè)的 高臨界值和所述低臨界值之間。
6. 如權(quán)利要求2所述的共享緩存管理系統(tǒng),其特征在于, 所述緩存分區(qū)管理模塊還用于當(dāng)從所述應(yīng)用對應(yīng)的緩存空間查找到應(yīng)用訪問的數(shù)據(jù)塊對應(yīng)的緩存塊時,通過所述緩存分區(qū)對應(yīng)的緩存替換算法更新 所述緩存塊在所述緩存分區(qū)的狀態(tài)。
7. —種共享緩存管理方法,其特征在于,所述方法包括步驟1,多個緩存分區(qū)分別同應(yīng)用關(guān)聯(lián),在所述緩存空間中承載所述應(yīng) 用當(dāng)前訪問的數(shù)據(jù);步驟2,根據(jù)緩存分區(qū)對應(yīng)的應(yīng)用的負(fù)載特征,為每個緩存分區(qū)分配對 應(yīng)的緩存替換算法;步驟3,以共享緩存池的方式管理所有空閑緩存資源,運用緩存分區(qū)對 應(yīng)的緩存替換算法對所述緩存分區(qū)的緩存空間進(jìn)行管理。
8. 如權(quán)利要求7所述的共享緩存管理方法,其特征在于, 所述對所述緩存分區(qū)的緩存空間進(jìn)行的管理包括向所述緩存分區(qū)分配緩存塊和從所述緩存分區(qū)回收緩存塊。
9. 如權(quán)利要求8所述的共享緩存管理方法,其特征在于, 所述步驟3中向所述緩存分區(qū)分配緩存塊進(jìn)一步為,步驟91,從所述共享緩存池中為所述緩存分區(qū)分配新的緩存塊,運用所 述緩存分區(qū)對應(yīng)的緩存替換算法將所述新的緩存塊添加到所述緩存分區(qū)中。
10. 如權(quán)利要求8所述的共享緩存管理方法,其特征在于, 所述步驟3中從所述緩存分區(qū)回收緩存塊進(jìn)一步為,步驟101,根據(jù)緩存分配策略確定被回收的緩存分區(qū)以及每個所述緩存 分區(qū)被回收的緩存塊的數(shù)量;步驟102,運用所述緩存分區(qū)對應(yīng)的緩存替換算法從所述緩存分區(qū)替換 出所述數(shù)量的緩存塊,將所述緩存塊重新置于所述共享緩存池。
11. 如權(quán)利要求10所述的共享緩存管理方法,其特征在于, 所述步驟3還包括,步驟111,在所述共享緩存池的緩存空間小于預(yù)設(shè)的低臨界值時,從所 述緩存分區(qū)回收緩存塊,以使共享緩存池的緩存空間在預(yù)設(shè)的高臨界值和所 述低臨界值之間。
12. 如權(quán)利要求9所述的共享緩存管理方法,其特征在于, 所述步驟2后還包括,步驟121,當(dāng)從所述應(yīng)用對應(yīng)的緩存空間査找到應(yīng)用訪問的數(shù)據(jù)塊對應(yīng) 的緩存塊時,通過所述緩存分區(qū)對應(yīng)的緩存替換算法更新所述緩存塊在所述 緩存分區(qū)的狀態(tài)。
全文摘要
本發(fā)明涉及一種共享緩存管理系統(tǒng)及方法,所述系統(tǒng)包括緩存分區(qū)管理模塊、緩存分配模塊和多個緩存分區(qū);緩存分區(qū),具有緩存空間,用于同應(yīng)用關(guān)聯(lián),在存分區(qū)對應(yīng)的應(yīng)用的負(fù)載特征,為每個緩存分區(qū)分配對應(yīng)的緩存替換算法;所述緩存空間中承載所述應(yīng)用當(dāng)前訪問的數(shù)據(jù);緩存分區(qū)管理模塊,用于根據(jù)緩存分配模塊,用于以共享緩存池的方式管理所有空閑緩存資源,運用緩存分區(qū)對應(yīng)的緩存替換算法對所述緩存分區(qū)的緩存空間進(jìn)行管理。本發(fā)明能夠根據(jù)應(yīng)用的負(fù)載特征為應(yīng)用分配對應(yīng)的緩存替換算法,進(jìn)而高效使用緩存資源。
文檔編號G06F12/12GK101609432SQ20091008829
公開日2009年12月23日 申請日期2009年7月13日 優(yōu)先權(quán)日2009年7月13日
發(fā)明者司成祥, 孟曉烜, 張建剛, 魯 許, 韓曉明 申請人:中國科學(xué)院計算技術(shù)研究所;天津中科藍(lán)鯨信息技術(shù)有限公司