Ssd緩存的輸入輸出流量控制方法及裝置制造方法
【專利摘要】本發(fā)明提供了一種SSD緩存的輸入輸出流量控制方法及裝置,該方法包括:截獲磁盤讀寫進程或者線程的磁盤數(shù)據(jù),將磁盤數(shù)據(jù)緩存到SSD緩存裝置空間中作為緩存數(shù)據(jù);檢測是否通過緩存清空線程將緩存數(shù)據(jù)清空到外部目的磁盤;并判斷進行緩存清空處理;計算生成比例因子,并根據(jù)比例因子對SSD緩存裝置進行緩存數(shù)據(jù)清空速度進行調(diào)整,對SSD緩存流量控制,直至SSD緩存裝置的緩存使用率低于預(yù)先設(shè)定的第二預(yù)設(shè)比率。其根據(jù)外部磁盤的IO流量,動態(tài)控制進入SSD緩存的IO流量,最大化的利用SSD空間和性能來滿足用戶需求。
【專利說明】SSD緩存的輸入輸出流量控制方法及裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計算機存儲控制【技術(shù)領(lǐng)域】,特別是涉及一種以SSD (固態(tài)硬盤)作為緩存的SSD緩存的輸入輸出(IO)流量控制方法及SSD緩存裝置。
【背景技術(shù)】
[0002]目前傳統(tǒng)存儲器(如磁盤)的IO(Input/Output,輸入輸出)速度明顯成為存儲性能瓶頸,而以SSD (Solid State Disk,固態(tài)硬盤)作為存儲器,使存儲器的IO速度有了明顯提升,但是由于SSD的價格相對較高,無法在整個存儲器中全部安裝使用,因此現(xiàn)有技術(shù)中將其作為緩存(Cache)使用,也就是SSD作為內(nèi)存(memory)和硬盤(外部存儲器)之間的一層緩存(Cache)來緩沖數(shù)據(jù),以提高IO帶寬和響應(yīng)速度,稱為SSD緩存(SSD Cache)。
[0003]在現(xiàn)有技術(shù)中實現(xiàn)的SSD緩存方法中,需要解決一個問題,即在大壓力IO的情況下,SSD緩存的空間將很快被消耗,這時必須啟動flush機制(清空緩存機制),將緩存的數(shù)據(jù)寫回到目的磁盤,由于磁盤IO速度明顯慢于SSD的IO速度,相對于緩存(Cache)來講,流入的IO速度遠大于流出的IO速度,會導(dǎo)致緩存(Cache)空間被耗盡,最終出現(xiàn)拒絕服務(wù)等惡劣情況。
[0004]因此,如何控制SSD緩存流量成為了迫切需要解決的問題。
【發(fā)明內(nèi)容】
[0005]為了解決現(xiàn)有技術(shù)中存在的問題,本發(fā)明提供一種SSD緩存的輸入輸出(IO)流量控制方法及裝置,其根據(jù)外部磁盤的IO流量,動態(tài)控制進入SSD緩存的IO流量,最大化的利用SSD空間和性能來滿足用戶需求。
[0006]為實現(xiàn)本發(fā)明目的而提供的一種SSD緩存的輸入輸出流量控制方法,包括如下步驟:
[0007]步驟S100,截獲磁盤讀寫進程或者線程的磁盤數(shù)據(jù),將磁盤數(shù)據(jù)緩存到SSD緩存裝置空間中作為緩存數(shù)據(jù);
[0008]步驟S200,檢測SSD緩存裝置中是否通過緩存清空線程將緩存數(shù)據(jù)清空到外部目的磁盤;如果是,則進入步驟S500 ;否則進入步驟S300 ;
[0009]步驟S300,統(tǒng)計作為緩存使用的固態(tài)硬盤的已使用空間,得到SSD緩存使用率,并在SSD緩存使用率超過第一預(yù)設(shè)比率時,進入步驟S400 ;
[0010]步驟S400,啟動緩存清空線程,通過緩存清空線程,按預(yù)先設(shè)定的基準參考因子對應(yīng)的緩存數(shù)據(jù)清空速度,將SSD緩存裝置中的緩存數(shù)據(jù)清空到目的磁盤;
[0011]步驟S500,計算生成比例因子,并根據(jù)比例因子對SSD緩存裝置進行緩存數(shù)據(jù)清空速度進行調(diào)整,對SSD緩存流量控制,直至SSD緩存裝置的緩存使用率低于預(yù)先設(shè)定的第二預(yù)設(shè)比率。
[0012]較優(yōu)地,作為一實施例,所述步驟S200包括如下步驟:
[0013]步驟S210,判斷是否正在將SSD緩存裝置中的緩存數(shù)據(jù)通過緩存清空線程清空到外部目的磁盤;
[0014]步驟S220,如果判斷沒有正在將SSD緩存裝置中的緩存數(shù)據(jù)通過緩存清空線程清空到外部目的磁盤,則進入步驟S300,監(jiān)控其是否達到緩存清空線程啟動條件而通知啟動緩存清空線程;否則跳轉(zhuǎn)到步驟S500,監(jiān)控緩存清空速度。
[0015]較優(yōu)地,作為一實施例,所述步驟S500包括如下步驟:
[0016]步驟S510,在將緩存數(shù)據(jù)寫入到目的磁盤的過程中,累計統(tǒng)計寫入SSD緩存裝置的寫IO的緩存數(shù)據(jù)的字節(jié)長度,即SSD緩存裝置的IO流入速度,以及累計寫出SSD緩存統(tǒng)計flush字節(jié)長度,即SSD緩存磁盤中的緩存數(shù)據(jù)清空速度,計算生成SSD緩存裝置中的比例因子;
[0017]步驟S520,比較比例因子和基準參考因子,根據(jù)比較結(jié)果調(diào)整緩存清空速度,以新的緩存清空速度,將SSD緩存裝置中的緩存數(shù)據(jù)清空到目的磁盤;
[0018]步驟530,將SSD緩存中的數(shù)據(jù)寫回到目的磁盤后,繼續(xù)記錄統(tǒng)計SSD緩存裝置的每個寫入寫出的字節(jié)長度,并釋放相應(yīng)的SSD緩存裝置空間,統(tǒng)計得到SSD緩存裝置的緩存使用率;
[0019]步驟S540,判斷SSD緩存裝置的緩存使用率是否低于第二預(yù)設(shè)比率;如果是,則結(jié)束緩存清空線程并返回;否則,返回步驟S510,循環(huán)進行流量控制。
[0020]較優(yōu)地,作為一實施例,所述步驟S520中,根據(jù)比較結(jié)果調(diào)整緩存清空速度,包括如下步驟:
[0021 ] 步驟S521,若比例因子ratio大于等于基準參考因子RefRatio,則表明流入速度大于等于flush速度,根據(jù)比例因子ratio的值調(diào)整flush速度,使流入速度小于等于flush 速度,即 vi ^ vf ;
[0022]步驟S522,若比例因子ratio小于基準參考因子RefRatio,則表明流入速度小于flush速度,則flush速度vf不變。
[0023]較優(yōu)地,作為一實施例,所述預(yù)先設(shè)定的第一預(yù)設(shè)比率為70%~90% ;
[0024]所述預(yù)先設(shè)定的第二預(yù)設(shè)比率為20%~30%。
[0025]較優(yōu)地,作為一實施例,其中,所述步驟S510中,所述根據(jù)累計統(tǒng)計的寫10的字節(jié)長度和flush字節(jié)長度,計算得到比例因子ratio為:
[0026]設(shè)流入速度為vi,flush速度為vf,基準參考因子RefRatio,則:
[0027]Ratio=(vi/vf) ^RefRatio ;
[0028]其中,所述步驟S521中,若比例因子ratio大于基準參考因子RefRatio JlJflush速度 vf = vi* (rat io/Ref Ratio);
[0029]其中,所述步驟S522中,若比例因子ratio小于基準參考因子RefRatio,則flush速度vf保持不變。
[0030]為實現(xiàn)本發(fā)明目的還提供一種SSD緩存裝置,包括作為連接在外部磁盤上作為緩存的固態(tài)硬盤SSD,還包括緩存控制裝置;
[0031]所述緩存控制裝置,包括截獲模塊,檢測模塊,統(tǒng)計模塊,清空處理模塊,計算調(diào)整控制模塊;
[0032]其中:
[0033]所述截獲模塊,用于截獲磁盤讀寫進程或者線程的磁盤數(shù)據(jù),將磁盤數(shù)據(jù)緩存到固態(tài)硬盤SSD中作為緩存數(shù)據(jù);
[0034]所述檢測模塊,用于檢測是否通過緩存清空線程將緩存數(shù)據(jù)清空到外部目的磁盤;如果是,則轉(zhuǎn)到計算調(diào)整控制模塊進行處理;否則轉(zhuǎn)到統(tǒng)計模塊進行處理;
[0035]所述統(tǒng)計模塊,用于統(tǒng)計固態(tài)硬盤的已使用空間,得到SSD緩存使用率,并在SSD緩存使用率超過第一預(yù)設(shè)比率時,進入清空處理模塊;
[0036]所述清空處理模塊,用于啟動緩存清空線程,通過緩存清空線程,按預(yù)先設(shè)定的基準參考因子對應(yīng)的緩存數(shù)據(jù)清空速度,將SSD緩存裝置中的緩存數(shù)據(jù)清空到目的磁盤;
[0037]所述計算調(diào)整控制模塊,用于計算生成比例因子,并根據(jù)比例因子對SSD緩存裝置進行緩存數(shù)據(jù)清空速度進行調(diào)整,對SSD緩存流量控制,直至SSD緩存裝置的緩存使用率低于預(yù)先設(shè)定的第二預(yù)設(shè)比率。
[0038]較優(yōu)地,作為一實施例,所述檢測模塊包括判斷子模塊,判斷處理子模塊,其中:
[0039]所述判斷子模塊,用于判斷是否正在將SSD緩存裝置中的緩存數(shù)據(jù)通過緩存清空線程清空到外部目的磁盤;
[0040]所述判斷處理子模塊,用于如果判斷沒有正在將固態(tài)硬盤中的緩存數(shù)據(jù)通過緩存清空線程清空到外部目的磁盤,則轉(zhuǎn)到統(tǒng)計模塊,監(jiān)控其是否達到緩存清空線程啟動條件而通知啟動緩存清空線程;否則跳轉(zhuǎn)到計算調(diào)整控制模塊,監(jiān)控緩存清空速度。
[0041]較優(yōu)地,作為一實施例,所述計算調(diào)整控制模塊,包括計算子模塊,比較調(diào)整子模塊,釋放子模塊,判斷結(jié)束子模塊;
[0042]其中:
[0043]所述計算子模塊,用于在將緩存數(shù)據(jù)寫入到目的磁盤的過程中,累計統(tǒng)計寫入SSD緩存裝置的寫IO的緩存數(shù)據(jù)的字節(jié)長度,即SSD緩存裝置的IO流入速度,以及累計寫出SSD緩存統(tǒng)計flush字節(jié)長度,即SSD緩存磁盤中的緩存數(shù)據(jù)清空速度,計算生成SSD緩存裝置中的比例因子;
[0044]所述比較調(diào)整子模塊,用于比較比例因子和基準參考因子,根據(jù)比較結(jié)果調(diào)整緩存清空速度,以新的緩存清空速度,將SSD緩存裝置中的緩存數(shù)據(jù)清空到目的磁盤;
[0045]所述釋放子模塊,用于將SSD緩存中的數(shù)據(jù)寫回到目的磁盤后,繼續(xù)記錄統(tǒng)計SSD緩存裝置的每個寫入寫出的字節(jié)長度,并釋放相應(yīng)的SSD緩存裝置空間,統(tǒng)計得到SSD緩存裝置的緩存使用率;
[0046]所述判斷結(jié)束子模塊,用于判斷SSD緩存裝置的緩存使用率是否低于第二預(yù)設(shè)比率;如果是,則結(jié)束緩存清空線程并返回;否則,返回計算子模塊,循環(huán)進行流量控制。
[0047]本發(fā)明的有益效果是:
[0048]本發(fā)明的SSD緩存的輸入輸出(IO)流量控制方法及裝置,其根據(jù)外部磁盤的IO流量,動態(tài)控制進入SSD緩存的IO流量,其能夠在多個線程之間實現(xiàn)流量的精確控制,并且根據(jù)SSD緩存可用空間自動調(diào)整控制的比例因子,依據(jù)目前資源情況盡最大可能滿足用戶寫入流量請求,最大化的利用SSD空間和性能來滿足用戶需求。
【專利附圖】
【附圖說明】
[0049]以下結(jié)合具體附圖及具體實施例,對本發(fā)明進行進一步詳細說明。
[0050]圖1是本發(fā)明實施例的SSD緩存的輸入輸出(10)流量控制方法流程圖;[0051]圖2是本發(fā)明實施例SSD緩存裝置結(jié)構(gòu)示意圖。
【具體實施方式】
[0052]為了解決現(xiàn)有技術(shù)中存在的問題,給IO提供更好的服務(wù)質(zhì)量,本發(fā)明實施例中,通過監(jiān)控SSD緩存(SSD Cache)裝置空間的使用情況和flush (清空緩存)速度,動態(tài)調(diào)整流入流出IO速度。
[0053]作為緩存使用的SSD緩存裝置的物理空間是有限的,在寫入一定的緩存數(shù)據(jù)后,該SSD緩存裝置空間會被慢慢消耗掉,空余空間逐漸減少,如果不作任何處理,當(dāng)空余空間為零的時候,就不能對寫請求做緩存處理。因此,需要監(jiān)控并調(diào)整SSD緩存裝置空間,并將已緩存的緩存數(shù)據(jù)(占用著緩存空間)flush到目的磁盤中,在這個過程中,SSD緩存裝置空間的變化依賴于進入的寫請求速度(流入速度)和flush的速度(流出速度),為了做到SSD緩存裝置空間可控,就需要控制SSD緩存裝置的流入流出速度。
[0054]本發(fā)明實施例中,在進行SSD緩存裝置監(jiān)控時,考慮以下3種情況:I)是SSD緩存裝置空間足夠,不需要控制SSD緩存裝置流入流出IO速度;2)是SSD緩存裝置空間即將被用盡,為保證流入IO速度小于等于流出IO速度,需要動態(tài)調(diào)整SSD緩存裝置流入流出IO速度;3)在有讀寫IO (SSD緩存裝置流入流出同時存在)的情況下,在保證讀寫IO正確處理的前提下,將已經(jīng)在SSD緩存裝置的數(shù)據(jù)flush到目的磁盤,保證在有限的時間內(nèi)結(jié)束。
[0055]作為一種可實施方式,如圖1所不,本發(fā)明實施例的一種SSD緩存的輸入輸出(IO)流量控制方法,包括如下步驟:
[0056]步驟S100,截獲磁盤讀寫進程或者線程的磁盤數(shù)據(jù),將磁盤數(shù)據(jù)緩存到SSD緩存裝置空間中作為緩存數(shù)據(jù);
[0057]計算機用戶可利用用戶態(tài)的多個進程或者線程通過已知的內(nèi)核系統(tǒng)API(Application Programming Interface,應(yīng)用程序編程接口)來讀寫緩存數(shù)據(jù),而因為讀寫目的磁盤速度相對較慢,因此可以通過SSD緩存(cache)裝置空間加速(uf〈us)存儲。
[0058]通常地,通過內(nèi)核API截獲所述多個進程或者線程的讀寫請求,可以將其目的地址由速度較慢的磁盤改為速度較快作為緩存(cache)使用的固態(tài)硬盤(SSD),即SSD緩存裝置空間中進行緩存,將磁盤數(shù)據(jù)緩存到SSD緩存裝置空間中作為緩存數(shù)據(jù);
[0059]步驟S200,檢測SSD緩存裝置中是否通過緩存清空線程(flush線程)將緩存數(shù)據(jù)清空到外部目的磁盤;如果是,則進入步驟S500 ;否則進入步驟S300 ;
[0060]較佳地,作為一種可實施方式,所述步驟S200包括如下步驟:
[0061]步驟S210,判斷是否正在將SSD緩存裝置中的緩存數(shù)據(jù)通過緩存清空線程(flush線程)清空到外部目的磁盤;
[0062]緩存清空線程(flush線程)是一種現(xiàn)有技術(shù),因此,在本發(fā)明實施例中,不再一一詳細描述。
[0063]發(fā)生SSD緩存裝置中的緩存數(shù)據(jù)清空(flush)到外部目的磁盤的情況包括但不限于I) SSD緩存裝置空間不足;2)用戶操作控制啟動緩存清空線程清空(flush)緩存數(shù)據(jù);3)用戶預(yù)設(shè)條件滿足,計算機存儲系統(tǒng)啟動緩存清空線程清空等。
[0064]步驟S220,如果判斷沒有正在將SSD緩存裝置中的緩存數(shù)據(jù)通過緩存清空線程清空(flush)到外部目的磁盤,則進入步驟S300,監(jiān)控其是否達到本發(fā)明實施例的SSD緩存裝置中的緩存清空線程(flush線程)啟動條件而通知啟動緩存清空線程;否則跳轉(zhuǎn)到步驟S500,監(jiān)控緩存清空速度。
[0065]如果SSD緩存裝置沒有通過緩存清空線程進行清空(flush),此SSD緩存裝置還不需要進行流量控制,但是隨著不斷緩存輸入輸出(IO)的進行,SSD緩存裝置的未使用空間慢慢被占用,為了進行流量控制,則進入步驟S300繼續(xù)監(jiān)控。
[0066]步驟S300,統(tǒng)計作為緩存(cache)使用的固態(tài)硬盤(SSD)的已使用空間,得出SSD緩存空間中已經(jīng)緩存的緩存數(shù)據(jù)的空間與未使用空間的比例,得到其使用百分比,即SSD緩存使用率,并在SSD緩存使用率超過第一預(yù)設(shè)比率時,進入步驟S400 ;
[0067]作為一種可實施方式,較佳地,預(yù)先設(shè)定的第一預(yù)設(shè)比率為70%?90%,則步驟S300中SSD緩存使用率大于等于70%?90%時,跳轉(zhuǎn)到步驟S400,啟動flush線程;否則循環(huán)統(tǒng)計已使用空間。
[0068]更佳地,作為一種可實施方式,根據(jù)緩存空間的空余空間的比例是否超過第一預(yù)設(shè)比率80%,決定是否啟動flush線程,即如果SSD緩存裝置的空余空間不足20%,即SSD緩存使用率大于等于80%時,則通知啟動flush線程,進入步驟S400。
[0069]作為一種可實施方式,在監(jiān)控過程中,設(shè)置flush線程等待,檢查控制條件(檢測是否大于等于預(yù)設(shè)比率),一旦滿足條件,通知該flush線程啟動。
[0070]步驟S400,啟動緩存清空線程(flush線程),通過緩存清空線程(flush線程),按預(yù)先設(shè)定的基準參考因子RefRatio對應(yīng)的緩存數(shù)據(jù)清空速度(flush),將SSD緩存裝置中的緩存數(shù)據(jù)清空(flush)到目的磁盤;
[0071]其中,作為一種可實施方式,所述基準參考因子RefRatio為預(yù)設(shè)的無符號整型常量,該基準參考因子RefRatio根據(jù)經(jīng)驗值得到,其使得對應(yīng)的flush速度進行清空時,讀寫控制處于動態(tài)平衡狀態(tài)。
[0072]步驟S500,計算生成比例因子ratio,并根據(jù)比例因子ratio對SSD緩存裝置進行緩存數(shù)據(jù)清空速度進行調(diào)整,對SSD緩存流量控制,直至SSD緩存裝置的緩存使用率低于預(yù)先設(shè)定的第二預(yù)設(shè)比率。
[0073]較佳地,預(yù)先設(shè)定的第二預(yù)設(shè)比率為20%?30%,則步驟S500中SSD緩存使用率小于等于20%?30%時,結(jié)果flush線程并返回;否則循環(huán)進行流量監(jiān)控。
[0074]較佳地,作為一種可實施方式,所述步驟S500包括如下步驟:
[0075]步驟S510,在將緩存數(shù)據(jù)寫入到目的磁盤的過程中,累計統(tǒng)計寫入SSD緩存裝置的寫10的緩存數(shù)據(jù)的字節(jié)長度,即SSD緩存裝置的10流入速度,以及累計寫出SSD緩存統(tǒng)計flush字節(jié)長度,即SSD緩存磁盤中的緩存數(shù)據(jù)清空速度(flush速度),計算生成SSD緩存裝置中的比例因子;
[0076]本發(fā)明實施例中,字節(jié)長度對應(yīng)寫入寫出(10)傳輸帶寬(速度),通過統(tǒng)計字節(jié)長度,也就統(tǒng)計了寫入寫出(10)帶寬(速度)。
[0077]本發(fā)明實施例的讀寫控制方法中,較佳地,作為一種可實施方式,在步驟S510中,根據(jù)累計統(tǒng)計的寫10的字節(jié)長度,即SSD緩存裝置的10流入速度,以及flush字節(jié)長度,即SSD緩存磁盤中的flush速度,計算調(diào)整比例因子ratio。
[0078]作為一種可實施方式,根據(jù)累計統(tǒng)計的寫10的字節(jié)長度和flush字節(jié)長度,計算得到比例因子ratio:[0079]設(shè)流入速度為vi, flush 速度為 vf,則:vi/vf=ratio/RefRatio,即:
[0080]Ratio=(vi/vf)^RefRatio ?
[0081]由于在開始進行流量監(jiān)控時,流出速度會大于流入速度,因此,比例因子小于基準參考因子RefRatio。
[0082]步驟S520,比較比例因子ratio和基準參考因子RefRatio,根據(jù)比較結(jié)果調(diào)整緩存清空速度,以新的緩存清空速度,將SSD緩存裝置中的緩存數(shù)據(jù)清空到目的磁盤。
[0083]較佳地,作為一種可實施方式,所述步驟S520根據(jù)比較結(jié)果調(diào)整緩存清空速度,包括如下步驟:
[0084]步驟S521,若比例因子ratio大于等于基準參考因子RefRatio,則表明流入速度(寫10到SSD緩存裝置)大于等于flush速度(flush出SSD緩存裝置到目的磁盤),因此,根據(jù)比例因子ratio的值調(diào)整flush速度,使流入速度小于等于flush速度,即vi〈=vf ;
[0085]作為一種可實施方式,若比例因子ratio大于基準參考因子RefRatio,則flush速度vf = vi* (ratio/RefRatio),替換原來的flush速度,繼續(xù)將SSD緩存裝置中的緩存數(shù)據(jù)清空到目的磁盤。
[0086]步驟S522,若比例因子ratio小于基準參考因子RefRatio,則表明流入速度(寫10到SSD緩存裝置)小于flush速度(flush出SSD緩存裝置到目的磁盤),SSD緩存裝置的可用空間可以承受流入速度vi比flush速度快所帶來的壓力,則flush速度vf不變。
[0087]本發(fā)明實施例中,較佳地,若比例因子ratio小于基準參考因子RefRatio,則vf保持不變,緩存清空速度vf不變,繼續(xù)將SSD緩存裝置中的緩存數(shù)據(jù)清空到目的磁盤。
[0088]本發(fā)明實施例中,通過控制緩存清空速度Vf,從而有效地清空SSD緩存裝置中的緩存數(shù)據(jù),直至SSD緩存裝置的緩存`使用率低于第二預(yù)設(shè)比率。
[0089]步驟530,將SSD緩存中的數(shù)據(jù)寫回到目的磁盤后,繼續(xù)記錄統(tǒng)計SSD緩存裝置的每個寫入寫出(10)的字節(jié)長度,并釋放相應(yīng)的SSD緩存(cache)裝置空間,統(tǒng)計得到SSD緩存裝置的緩存使用率;
[0090]步驟S540,判斷SSD緩存裝置的緩存使用率是否低于第二預(yù)設(shè)比率;如果是,則結(jié)束flush線程并返回;否則,返回步驟S510,循環(huán)進行流量控制。
[0091]作為一種可實施方式,可以通過Write 10 API結(jié)束flush線程并返回,完成該SSD緩存裝置的流量控制。
[0092]相應(yīng)地,基于同一發(fā)明構(gòu)思,本發(fā)明實施例還提供一種SSD緩存裝置。由于此裝置解決問題的原理與前述一種SSD緩存流量控制方法的過程相似,因此,此裝置的實施可以通過前述方法具體實現(xiàn),重復(fù)之處不再贅述。
[0093]如圖2所示,本發(fā)明實施例的一種SSD緩存裝置,包括作為連接在外部磁盤上作為緩存的固態(tài)硬盤(SSD) 100,還包括緩存控制裝置200。
[0094]所述緩存控制裝置200,包括截獲模塊210,檢測模塊220,統(tǒng)計模塊230,清空處理模塊240,計算調(diào)整控制模塊250 ;
[0095]其中:
[0096]所述截獲模塊210,用于截獲磁盤讀寫進程或者線程的磁盤數(shù)據(jù),將磁盤數(shù)據(jù)緩存到固態(tài)硬盤SSD中作為緩存數(shù)據(jù);
[0097]所述檢測模塊220,用于檢測是否通過緩存清空線程(flush線程)將緩存數(shù)據(jù)清空到外部目的磁盤;如果是,則轉(zhuǎn)到計算調(diào)整控制模塊進行處理;否則轉(zhuǎn)到統(tǒng)計模塊進行處理;
[0098]所述統(tǒng)計模塊230,用于統(tǒng)計固態(tài)硬盤(SSD)的已使用空間,得到SSD緩存使用率,并在SSD緩存使用率超過第一預(yù)設(shè)比率時,進入清空處理模塊;
[0099]所述清空處理模塊240,用于啟動緩存清空線程(flush線程),通過緩存清空線程(flush線程),按預(yù)先設(shè)定的基準參考因子RefRatio對應(yīng)的緩存數(shù)據(jù)清空速度(flush),將SSD緩存裝置中的緩存數(shù)據(jù)清空(flush)到目的磁盤;
[0100]所述計算調(diào)整控制模塊250,用于計算生成比例因子ratio,并根據(jù)比例因子ratio對SSD緩存裝置進行緩存數(shù)據(jù)清空速度進行調(diào)整,對SSD緩存流量控制,直至SSD緩存裝置的緩存使用率低于預(yù)先設(shè)定的第二預(yù)設(shè)比率。
[0101]較佳地,作為一種可實施方式,所述檢測模塊220包括判斷子模塊221,判斷處理子模塊222,其中:
[0102]所述判斷子模塊221,用于判斷是否正在將SSD緩存裝置中的緩存數(shù)據(jù)通過緩存清空線程(flush線程)清空到外部目的磁盤;
[0103]所述判斷處理子模塊222,用于如果判斷沒有正在將固態(tài)硬盤中的緩存數(shù)據(jù)通過緩存清空線程清空(flush)到外部目的磁盤,則轉(zhuǎn)到統(tǒng)計模塊,監(jiān)控其是否達到緩存清空線程(flush線程)啟動條件而通知啟動緩存清空線程;否則跳轉(zhuǎn)到計算調(diào)整控制模塊,監(jiān)控
緩存清空速度。
[0104]較佳地,作為一種可實施方式,所述預(yù)先設(shè)定的第一預(yù)設(shè)比率為70%~90%,更佳地,所述第一預(yù)設(shè)比率為80%。所述預(yù)先設(shè)定的第二預(yù)設(shè)比率為20%~30%。
[0105]較佳地,作為一種可實施方式,所述計算調(diào)整控制模塊250,包括計算子模塊251,比較調(diào)整子模塊252,釋放子模塊253,判斷結(jié)束子模塊254,其中:
[0106]所述計算子模塊251,用于在將緩存數(shù)據(jù)寫入到目的磁盤的過程中,累計統(tǒng)計寫入SSD緩存裝置的寫IO的緩存數(shù)據(jù)的字節(jié)長度,即SSD緩存裝置的IO流入速度,以及累計寫出SSD緩存統(tǒng)計flush字節(jié)長度,即SSD緩存磁盤中的緩存數(shù)據(jù)清空速度(flush速度),計算生成SSD緩存裝置中的比例因子;
[0107]更佳地,作為一種可實施方式,根據(jù)累計統(tǒng)計的寫IO的字節(jié)長度和flush字節(jié)長度,計算得到比例因子ratio:
[0108]設(shè)流入速度為vi, flush 速度為 vf,則:vi/vf=ratio/RefRatio,即:
[0109]Ratio=(vi/vf)^RefRatio?
[0110]所述比較調(diào)整子模塊252,用于比較比例因子ratio和基準參考因子RefRatio,根據(jù)比較結(jié)果調(diào)整緩存清空速度,以新的緩存清空速度,將SSD緩存裝置中的緩存數(shù)據(jù)清空到目的磁盤。
[0111]若比例因子ratio大于等于基準參考因子RefRatio,則表明流入速度(寫10到SSD緩存裝置)大于等于flush速度(flush出SSD緩存裝置到目的磁盤),因此,根據(jù)比例因子ratio的值調(diào)整flush速度,使流入速度小于等于flush速度,即vi〈=vf ;
[0112]作為一種可實施方式,若比例因子ratio大于基準參考因子RefRatio,則flush速度vf = vi* (ratio/RefRatio),替換原來的flush速度,繼續(xù)將SSD緩存裝置中的緩存數(shù)據(jù)清空到目的磁盤。[0113]若比例因子ratio小于基準參考因子RefRatio,則表明流入速度(寫IO到SSD緩存裝置)小于flush速度(flush出SSD緩存裝置到目的磁盤),SSD緩存裝置的可用空間可以承受流入速度vi比flush速度快所帶來的壓力,則flush速度不變。
[0114]本發(fā)明實施例中,較佳地,若比例因子ratio小于基準參考因子RefRatio,則vf保持不變,緩存清空速度不變,將SSD緩存裝置中的緩存數(shù)據(jù)清空到目的磁盤。
[0115]所述釋放子模塊253,用于將SSD緩存中的數(shù)據(jù)寫回到目的磁盤后,繼續(xù)記錄統(tǒng)計SSD緩存裝置的每個寫入寫出(IO)的字節(jié)長度,并釋放相應(yīng)的SSD緩存(cache)裝置空間,統(tǒng)計得到SSD緩存裝置的緩存使用率;
[0116]所述判斷結(jié)束子模塊254,用于判斷SSD緩存裝置的緩存使用率是否低于第二預(yù)設(shè)比率;如果是,則結(jié)束flush線程并返回;否則,返回計算子模塊,循環(huán)進行流量控制。
[0117]本發(fā)明實施例的SSD緩存的輸入輸出(IO)流量控制方法及裝置,其根據(jù)外部磁盤的IO流量,動態(tài)控制進入SSD緩存的IO流量,其能夠在多個線程之間實現(xiàn)流量的精確控制,并且根據(jù)SSD緩存可用空間自動調(diào)整控制的比例因子,依據(jù)目前資源情況盡最大可能滿足用戶寫入流量請求,最大化的利用SSD空間和性能來滿足用戶需求。
[0118]最后,需要說明的是,在本專利文件中,諸如第一、第二等之類的關(guān)系術(shù)語僅僅用于將一個實體或者操作與另一個實體或者操作區(qū)分開來,而不一定要求或者暗示這些實體或操作之間存在任何關(guān)系或者順序。而且,在本專利文件中,術(shù)語“包括”、“包含”或者其任何其他變體,其意在涵蓋而非排他性包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備,不僅包括這些要素,而且還包括沒有明確列出而本領(lǐng)域技術(shù)人員能夠知曉的其他要素,或者還包括為這些過程、方法、物品或者設(shè)備所公知的必不可少的要素。
[0119]以上所述實施例僅表達了本發(fā)明的幾種實施方式,其描述較為具體和詳細,但并不能因此而理解為對本發(fā)明專利范圍的限制。應(yīng)當(dāng)指出的是,對于本領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干變形和改進,這些都屬于本發(fā)明的保護范圍。因此,本發(fā)明專利的保護范圍應(yīng)以所附權(quán)利要求為準。
【權(quán)利要求】
1.一種SSD緩存的輸入輸出流量控制方法,其特征在于,包括如下步驟: 步驟S100,截獲磁盤讀寫進程或者線程的磁盤數(shù)據(jù),將磁盤數(shù)據(jù)緩存到SSD緩存裝置空間中作為緩存數(shù)據(jù); 步驟S200,檢測SSD緩存裝置中是否通過緩存清空線程將緩存數(shù)據(jù)清空到外部目的磁盤;如果是,則進入步驟S500 ;否則進入步驟S300 ; 步驟S300,統(tǒng)計作為緩存使用的固態(tài)硬盤的已使用空間,得到SSD緩存使用率,并在SSD緩存使用率超過第一預(yù)設(shè)比率時,進入步驟S400 ; 步驟S400,啟動緩存清空線程,通過緩存清空線程,按預(yù)先設(shè)定的基準參考因子對應(yīng)的緩存數(shù)據(jù)清空速度,將SSD緩存裝置中的緩存數(shù)據(jù)清空到目的磁盤; 步驟S500,計算生成比例因子,并根據(jù)比例因子對SSD緩存裝置進行緩存數(shù)據(jù)清空速度進行調(diào)整,對SSD緩存流量控制,直至SSD緩存裝置的緩存使用率低于預(yù)先設(shè)定的第二預(yù)設(shè)比率。
2.根據(jù)權(quán)利要求1所述的SSD緩存的輸入輸出流量控制方法,其特征在于,所述步驟S200包括如下步驟: 步驟S210,判斷是否正在將SSD緩存裝置中的緩存數(shù)據(jù)通過緩存清空線程清空到外部目的磁盤; 步驟S220,如果判斷沒有正在將SSD緩存裝置中的緩存數(shù)據(jù)通過緩存清空線程清空到外部目的磁盤,則進 入步驟S300,監(jiān)控其是否達到緩存清空線程啟動條件而通知啟動緩存清空線程;否則跳轉(zhuǎn)到步驟S500,監(jiān)控緩存清空速度。
3.根據(jù)權(quán)利要求1所述的SSD緩存的輸入輸出流量控制方法,其特征在于,所述步驟S500包括如下步驟: 步驟S510,在將緩存數(shù)據(jù)寫入到目的磁盤的過程中,累計統(tǒng)計寫入SSD緩存裝置的寫IO的緩存數(shù)據(jù)的字節(jié)長度,即SSD緩存裝置的IO流入速度,以及累計寫出SSD緩存統(tǒng)計flush字節(jié)長度,即SSD緩存磁盤中的緩存數(shù)據(jù)清空速度,計算生成SSD緩存裝置中的比例因子; 步驟S520,比較比例因子和基準參考因子,根據(jù)比較結(jié)果調(diào)整緩存清空速度,以新的緩存清空速度,將SSD緩存裝置中的緩存數(shù)據(jù)清空到目的磁盤; 步驟530,將SSD緩存中的數(shù)據(jù)寫回到目的磁盤后,繼續(xù)記錄統(tǒng)計SSD緩存裝置的每個寫入寫出的字節(jié)長度,并釋放相應(yīng)的SSD緩存裝置空間,統(tǒng)計得到SSD緩存裝置的緩存使用率; 步驟S540,判斷SSD緩存裝置的緩存使用率是否低于第二預(yù)設(shè)比率;如果是,則結(jié)束緩存清空線程并返回;否則,返回步驟S510,循環(huán)進行流量控制。
4.根據(jù)權(quán)利要求3所述的SSD緩存的輸入輸出流量控制方法,其特征在于,所述步驟S520中,根據(jù)比較結(jié)果調(diào)整緩存清空速度,包括如下步驟: 步驟S521,若比例因子ratio大于等于基準參考因子RefRatio,則表明流入速度大于等于flush速度,根據(jù)比例因子ratio的值調(diào)整flush速度,使流入速度小于等于flush速度,即 vi < vf ; 步驟S522,若比例因子ratio小于基準參考因子RefRatio,則表明流入速度小于flush速度,則flush速度vf不變。
5.根據(jù)權(quán)利要求1所述的SSD緩存的輸入輸出流量控制方法,其特征在于: 所述預(yù)先設(shè)定的第一預(yù)設(shè)比率為70%~90% ; 所述預(yù)先設(shè)定的第二預(yù)設(shè)比率為20%~30%。
6.根據(jù)權(quán)利要求4所述的SSD緩存的輸入輸出流量控制方法,其特征在于: 其中,所述步驟S510中,所述根據(jù)累計統(tǒng)計的寫IO的字節(jié)長度和flush字節(jié)長度,計算得到比例因子ratio為: 設(shè)流入速度為vi,flush速度為vf,基準參考因子RefRatio,則:
Ratio=(vi/vf)^RefRatio ; 其中,所述步驟S521中,若比例因子ratio大于基準參考因子RefRatio,則flush速度vf = vi* (ratio/RefRatio); 其中,所述步驟S522中,若比例因子ratio小于基準參考因子RefRatio,則flush速度vf保持不變。
7.—種SSD緩存裝置 ,包括作為連接在外部磁盤上作為緩存的固態(tài)硬盤SSD,其特征在于,還包括緩存控制裝置; 所述緩存控制裝置,包括截獲模塊,檢測模塊,統(tǒng)計模塊,清空處理模塊,計算調(diào)整控制模塊; 其中: 所述截獲模塊,用于截獲磁盤讀寫進程或者線程的磁盤數(shù)據(jù),將磁盤數(shù)據(jù)緩存到固態(tài)硬盤SSD中作為緩存數(shù)據(jù); 所述檢測模塊,用于檢測是否通過緩存清空線程將緩存數(shù)據(jù)清空到外部目的磁盤;如果是,則轉(zhuǎn)到計算調(diào)整控制模塊進行處理;否則轉(zhuǎn)到統(tǒng)計模塊進行處理; 所述統(tǒng)計模塊,用于統(tǒng)計固態(tài)硬盤的已使用空間,得到SSD緩存使用率,并在SSD緩存使用率超過第一預(yù)設(shè)比率時,進入清空處理模塊; 所述清空處理模塊,用于啟動緩存清空線程,通過緩存清空線程,按預(yù)先設(shè)定的基準參考因子對應(yīng)的緩存數(shù)據(jù)清空速度,將SSD緩存裝置中的緩存數(shù)據(jù)清空到目的磁盤; 所述計算調(diào)整控制模塊,用于計算生成比例因子,并根據(jù)比例因子對SSD緩存裝置進行緩存數(shù)據(jù)清空速度進行調(diào)整,對SSD緩存流量控制,直至SSD緩存裝置的緩存使用率低于預(yù)先設(shè)定的第二預(yù)設(shè)比率。
8.根據(jù)權(quán)利要求7所述的SSD緩存裝置,其特征在于,所述檢測模塊包括判斷子模塊,判斷處理子模塊,其中: 所述判斷子模塊,用于判斷是否正在將SSD緩存裝置中的緩存數(shù)據(jù)通過緩存清空線程清空到外部目的磁盤; 所述判斷處理子模塊,用于如果判斷沒有正在將固態(tài)硬盤中的緩存數(shù)據(jù)通過緩存清空線程清空到外部目的磁盤,則轉(zhuǎn)到統(tǒng)計模塊,監(jiān)控其是否達到緩存清空線程啟動條件而通知啟動緩存清空線程;否則跳轉(zhuǎn)到計算調(diào)整控制模塊,監(jiān)控緩存清空速度。
9.根據(jù)權(quán)利要求7所述的SSD緩存裝置,其特征在于,所述計算調(diào)整控制模塊,包括計算子模塊,比較調(diào)整子模塊,釋放子模塊,判斷結(jié)束子模塊; 其中: 所述計算子模塊,用于在將緩存數(shù)據(jù)寫入到目的磁盤的過程中,累計統(tǒng)計寫入SSD緩存裝置的寫IO的緩存數(shù)據(jù)的字節(jié)長度,即SSD緩存裝置的IO流入速度,以及累計寫出SSD緩存統(tǒng)計flush字節(jié)長度,即SSD緩存磁盤中的緩存數(shù)據(jù)清空速度,計算生成SSD緩存裝置中的比例因子; 所述比較調(diào)整子模塊,用于比較比例因子和基準參考因子,根據(jù)比較結(jié)果調(diào)整緩存清空速度,以新的緩存清空速度,將SSD緩存裝置中的緩存數(shù)據(jù)清空到目的磁盤; 所述釋放子模塊,用于將SSD緩存中的數(shù)據(jù)寫回到目的磁盤后,繼續(xù)記錄統(tǒng)計SSD緩存裝置的每個寫入寫出的字節(jié)長度,并釋放相應(yīng)的SSD緩存裝置空間,統(tǒng)計得到SSD緩存裝置的緩存使用率; 所述判斷結(jié)束子模塊,用于判斷SSD緩存裝置的緩存使用率是否低于第二預(yù)設(shè)比率;如果是,則結(jié)束緩存清空線程并返回;否則,返回計算子模塊,循環(huán)進行流量控制。
10.根據(jù)權(quán)利要求7所述的SSD緩存裝置,其特征在于,所述預(yù)先設(shè)定的第一預(yù)設(shè)比率為70%~90% ;所述預(yù) 先設(shè)定的第二預(yù)設(shè)比率為20%~30%。
【文檔編號】G06F3/06GK103729313SQ201210383733
【公開日】2014年4月16日 申請日期:2012年10月11日 優(yōu)先權(quán)日:2012年10月11日
【發(fā)明者】裴金干, 劉虹越, 王術(shù), 王旭光 申請人:蘇州捷泰科信息技術(shù)有限公司