一種flush緩存的方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及存儲技術(shù)領(lǐng)域,尤其涉及一種flush緩存的方法及裝置。
【背景技術(shù)】
[0002]存儲系統(tǒng)通常采用cache(緩存)系統(tǒng)來緩存寫10(讀寫流)。寫1先寫入寫緩存,在合適的時機(例如:緩存不足或CPU空閑時)再將寫緩存flush(刷新)到RAID (Redundant Arrays of Independent Disks,磁盤陣列)的 disk(磁盤)上,通過控制產(chǎn)生flush 10(緩存回寫的讀寫流)可以提高拼條帶效果,提高實際的1PS能力。
[0003]現(xiàn)有技術(shù)中通過以下方法來產(chǎn)生flush 1:采用最大資源搶占策略來產(chǎn)生flush10,即有多少資源產(chǎn)生多少flush 1 ;或者,每個調(diào)度點產(chǎn)生固定數(shù)量的flush 10
[0004]通過上述描述可見,現(xiàn)有技術(shù)中,在產(chǎn)生flush 1時,很難控制產(chǎn)生flush 1的力度,若產(chǎn)生flush 1的力度小,則下面disk的1吞吐能力可能沒有用滿;若產(chǎn)生flush1的力度太大,則下層會積累很多pending flush 10(待處理的緩存回寫的讀寫流),導致資源沖突(例如1鎖沖突)和資源浪費(例如讀cache被提前釋放,內(nèi)存被占用)。
【發(fā)明內(nèi)容】
[0005]本發(fā)明提供了一種flush緩存的方法及裝置,能夠降低鎖沖突和資源占用。
[0006]一方面,本發(fā)明提供了一種刷新flush緩存的方法,包括:
[0007]S1:預設(shè)待處理的緩存回寫的讀寫流pending flush 1數(shù)量的臨界值;
[0008]S2:判斷pending flush 1數(shù)量是否小于等于所述pending flush 1數(shù)量的臨界值,如果是,則產(chǎn)生緩存回寫的讀寫流flush 10,否則,不產(chǎn)生flush 10
[0009]進一步地,在所述S2之前還包括:
[0010]獲取pending flush 1 數(shù)量。
[0011]另一方面,本發(fā)明提供了一種刷新flush緩存的裝置,包括:
[0012]存儲單元,用于存儲預設(shè)的待處理的緩存回寫的讀寫流pending flush 1數(shù)量的臨界值;
[0013]判斷單元,用于判斷pending flush 1數(shù)量是否小于等于所述pending flush 1數(shù)量的臨界值,如果是,則產(chǎn)生緩存回寫的讀寫流flush 10,否則,不產(chǎn)生flush 10
[0014]進一步地,所述裝置還包括:
[0015]獲取單元,用于獲取pending flush 1數(shù)量。
[0016]通過本發(fā)明提供的一種flush緩存的方法及裝置,使得進入RAID的1數(shù)量平滑,降低了鎖沖突和資源占用,提高了存儲系統(tǒng)的整體性能和平順性。
【附圖說明】
[0017]為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0018]圖1是本發(fā)明實施例提供的一種flush緩存的方法流程圖;
[0019]圖2是本發(fā)明實施例提供的一種flush緩存的裝置結(jié)構(gòu)示意圖。
【具體實施方式】
[0020]為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例,基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動的前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
[0021]本發(fā)明實施例提供了一種flush緩存的方法,參見圖1,包括:
[0022]S1:預設(shè)pending flush 1數(shù)量的臨界值;
[0023]S2:判斷pending flush 1數(shù)量是否小于等于所述pending flush 1數(shù)量的臨界值,如果是,則產(chǎn)生flush 10,否則,不產(chǎn)生flush 10
[0024]在所述S2之前包括:
[0025]獲取pending flush 1 數(shù)量。
[0026]在一種可能的實現(xiàn)方式中,所述pending flush 1數(shù)量的臨界值通過以下方法獲得:
[0027]Al:判斷pending flush 1數(shù)量是否小于等于所述預設(shè)的pending flush 1數(shù)量的初始值,如果是,則產(chǎn)生緩存回寫的讀寫數(shù)據(jù)流flush 10,否則,不產(chǎn)生flush 10;
[0028]A2:如果檢測到所述pending 1數(shù)量在預設(shè)時間段內(nèi)持續(xù)上升,則減小所述pending flush 1數(shù)量的初始值,返回Al,如果檢測到所述pending 1數(shù)量在預設(shè)時間段內(nèi)持續(xù)下降,則增加所述pending flush 1數(shù)量的初始值,返回Al ;如果檢測到所述pending 1數(shù)量收斂,則將所述pending flush 1數(shù)量的初始值作為所述pending flush1數(shù)量的臨界值。
[0029]在另一種可能的實現(xiàn)方式中,所述pending flush 1數(shù)量的臨界值通過以下方法獲得:
[0030]B1:判斷pending flush 1數(shù)量是否小于等于所述預設(shè)的pending flush 1數(shù)量的初始值,如果是,則產(chǎn)生緩存回寫的讀寫數(shù)據(jù)流flush 10,否則,不產(chǎn)生flush 10;
[0031]B2:檢測所述pending 1數(shù)量在預設(shè)時間段內(nèi)的增長率,如果所述增長率為正,則減小所述pending flush 1數(shù)量的初始值,返回BI,如果所述增長率為負,則增加所述pending 1數(shù)量的初始值,返回BI ;如果所述增長率為0,則將所述pending flush 1數(shù)量的初始值作為所述pending 1數(shù)量的臨界值。
[0032]再一種可能的實現(xiàn)方式中,所述pending flush 1數(shù)量的臨界值通過以下方法獲得:
[0033]設(shè)定一個臨界點經(jīng)驗值NO,
[0034]系統(tǒng)運行一段時間后:若檢查pending 1數(shù)量持續(xù)上升,則1壓力已經(jīng)超過臨界點,可降低NO繼續(xù)測試;若檢查pending 1數(shù)持續(xù)下降,則1壓力沒有到達臨界點,可增大NO繼續(xù)測試;直到pending 1數(shù)值收斂為止,確定最終的pending flush 1數(shù)量的臨界值。
[0035]其中,pending flush 1數(shù)量的臨界值可以通過動態(tài)自測過程來產(chǎn)生。
[0036]本發(fā)明實施例還提供了一種flush緩存的裝置,參見圖2,包括:
[0037]存儲單元201,用于存儲預設(shè)的pending flush 1數(shù)量的臨界值;
[0038]判斷單元202,用于判斷pending flush 1數(shù)量是否小于等于所述pending flush1數(shù)量的臨界值,如果是,則產(chǎn)生flush 10,否則,不產(chǎn)生flush 10
[0039]所述裝置還包括:
[0040]獲取單元,用于獲取pending flush 1數(shù)量。
[0041]通過上述實施例提供的一種flush緩存的方法及裝置,使得進入RAID的1數(shù)量平滑,降低了鎖沖突和資源占用,提高了存儲系統(tǒng)的整體性能和平順性。
[0042]上述設(shè)備內(nèi)的各單元之間的信息交互、執(zhí)行過程等內(nèi)容,由于與本發(fā)明方法實施例基于同一構(gòu)思,具體內(nèi)容可參見本發(fā)明方法實施例中的敘述,此處不再贅述。
[0043]需要說明的是,在本文中,諸如第一和第二之類的關(guān)系術(shù)語僅僅用來將一個實體或者操作與另一個實體或操作區(qū)分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個......”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同因素。
[0044]本領(lǐng)域普通技術(shù)人員可以理解:實現(xiàn)上述方法實施例的全部或部分步驟可以通過程序指令相關(guān)的硬件來完成,前述的程序可以存儲在計算機可讀取的存儲介質(zhì)中,該程序在執(zhí)行時,執(zhí)行包括上述方法實施例的步驟;而前述的存儲介質(zhì)包括:R0M、RAM、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)中。
[0045]最后需要說明的是:以上所述僅為本發(fā)明的較佳實施例,僅用于說明本發(fā)明的技術(shù)方案,并非用于限定本發(fā)明的保護范圍。凡在本發(fā)明的精神和原則之內(nèi)所做的任何修改、等同替換、改進等,均包含在本發(fā)明的保護范圍內(nèi)。
【主權(quán)項】
1.一種刷新flush緩存的方法,其特征在于,包括: 51:預設(shè)待處理的緩存回寫的讀寫流pending flush 1數(shù)量的臨界值; 52:判斷pending flush 1數(shù)量是否小于等于所述pending flush 1數(shù)量的臨界值,如果是,則產(chǎn)生緩存回寫的讀寫流flush 10,否則,不產(chǎn)生flush 10
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,在所述S2之前還包括: 獲取 pending flush 1 數(shù)量。
3.一種刷新flush緩存的裝置,其特征在于,包括: 存儲單元,用于存儲預設(shè)的待處理的緩存回寫的讀寫流pending flush 1數(shù)量的臨界值; 判斷單元,用于判斷pending flush 1數(shù)量是否小于等于所述pending flush 1數(shù)量的臨界值,如果是,則產(chǎn)生緩存回寫的讀寫流flush 10,否則,不產(chǎn)生flush 10
4.根據(jù)權(quán)利要求1所述的裝置,其特征在于,所述裝置還包括: 獲取單元,用于獲取pending flush 1數(shù)量。
【專利摘要】本發(fā)明提供了一種刷新flush緩存的方法及裝置,該方法包括:S1:預設(shè)待處理的緩存回寫的讀寫流pending flush IO數(shù)量的臨界值;S2:判斷pending flush IO數(shù)量是否小于等于所述pending flush IO數(shù)量的臨界值,如果是,則產(chǎn)生緩存回寫的讀寫流flush IO,否則,不產(chǎn)生flush IO。本發(fā)明提供的一種flush緩存的方法及裝置,能夠降低鎖沖突和資源占用。
【IPC分類】G06F12-08
【公開號】CN104794068
【申請?zhí)枴緾N201510058628
【發(fā)明人】王俊
【申請人】北京神州云科數(shù)據(jù)技術(shù)有限公司
【公開日】2015年7月22日
【申請日】2015年2月4日