專利名稱:一種基于連續度聚類和時間序列的i/o區域預取方法
技術領域:
本發明涉及存儲領域,具體是指一種基于連續度聚類和時間序列的I/O區域預取方法。
背景技術:
雖然并行I/O系統(磁盤陣列)可以較大的提高存儲系統的性能,但由于磁盤的固有缺陷(較長時間的尋道延遲和旋轉延遲),它們之間依然存在著較大的性能差距。緩存作為一個基本的實現技術能夠很好的彌補它們之間的性能差距,但單純的增加緩存的容量已不是一個有效的解決問題的方法,預取技術則是通過預測將來的數據請求,將存儲設備中的數據塊在使用之前取到緩存中,使請求總能夠在緩存中命中以減少CPU的停頓時間,并且通過預測緩存缺失、重疊I/O技術來消除對磁盤或通道的爭用,降低磁盤存取的延遲,從而提高系統的性能。同時存儲系統中數據的訪問存在較強的相關性,如訪問某個文件時,必然會訪問這個文件的目錄。系統可以利用數據訪問的相關性改進預取精度,減少緩存污染和通道擁塞。但在現有的文件系統中,處于設備層的存儲系統并不知道任何I/O訪問的語義信息,因此不能充分利用I/O訪問的語義來預取下一時刻要訪問的數據,只能利用較簡單的方式如I/O訪問的局部性、順序訪問和循環訪問等特性來實現簡單的預測。同時我們知道在I/O密集的應用中,I/O訪問存在著突發性的特征,可以在I/O訪問較少的時刻(系統空閑時刻)一次性的預取下一個讀請求密集時刻所有的數據來改善系統的性能,現有存儲系統中大容量緩存也使得這種方法成為可能。因此如何利用原有信息來預測下一時刻讀請求密集區域是需要解決的問題。
發明內容本發明的目的在于提供一種基于連續度聚類和時間序列的I/O區域預取方法,使用該方法可改善存儲子系統的I/O性能,實用且高效的發現密集讀請求訪問的區域并進行準確的預取,進而提高存儲系統的性能。
本發明提供的一種基于連續度聚類和時間序列的I/O區域預取方法,其步驟包括(1)在I/O請求密集時刻,將I/O流中的讀請求根據物理塊地址排序,形成一個對象鏈表;(2)將所有物理地址相連或重疊的對象合并成一個對象,其長度為各對象長度之和,按下述規則計算出所有對象的連續度設對象p的長度為1,若其左側或右側無相連的對象,則設其連續度Sio(p)=a1;若其左側或右側有一個相連的對象,則設其連續度Sio(p)=a2;若兩側均有相連的對象,則設其連續度Sio(p)=a3,其中,a3>a2>a1(3)標記連續度大于閥值Ho的對象作為核心對象,其中,閥值Ho按照公式(1)計算,其中k為對象的數量Ho≥Σi=1kSio(pi)k,i=1,Λ,k---(1)]]>(4)按照下述規則查找與每個核心對象可達或相連的所有對象,將其構造成簇(A1)以核心對象o為中心,左右兩側距離d為半徑的區域稱為o的d-鄰域;如果D是對象集合,p∈D,o∈D,若o是核心對象,p在o的d-鄰域內,則稱p是從o出發關于d直接可達;(A2)若存在一個對象鏈p1,p2,…,pn;pi∈D,1≤i≤n-1,n為對象鏈中對象的個數,pi+1是從pi出發,關于d直接可達,則pn是從p1出發關于d可達;(A3)在對象集合D中,o∈D,p∈D,q∈D,若存在p和q都是從o出發,關于d的可達,則稱p、q是關于d的相連;(A4)將滿足下面條件的所有對象構造成簇
(I)p,q如果p∈C且q是從p出發關于d的可達,則q ∈ C;(II)p,q ∈ Cp、q是關于d的相連,則p∈C;(5)從形成的各簇中選擇出連續度大于等于簇閾值Hc的簇,形成有效結果簇,其中簇閾值Hc按照公式(2)計算Hc=12[a3l-2(a3-a2)]---(2)]]>其中l為簇所占空間長度;(6)重復步驟(1)至(5),直至獲取多個時間段的多個有效結果簇;否則轉入步驟(7);(7)從有效結果簇中獲取訪問區域信息,并以多個密集I/O訪問的時間構成訪問時間信息,分別形成讀請求區域的時間序列和訪問時間的時間序列Tc(t),有效結果簇的中心點和簇半徑構成訪問區域,設有效結果簇的中心點值為PBA(t),對應有效結果簇的簇半徑為R(t);(8)判斷訪問區域信息和訪問時間信息是否滿足ARMA時間序列是零均值的平穩時間序列,如果是,進入步驟(10),否則進入步驟(9);(9)對非平穩的序列進行平穩化處理;(10)將平穩的時間序列構造出ARMA時間序列預測模型,即PBA(t)-φ1PBA(t-1)-Λ-φkPBA(t-p)=at-θ1at-1-Λ-θqat-q(5)R(t)-φ1R(t-1)-Λ-φkR(t-p)=at-θ1at-1-Λ-θqat-q(6)Tc(t)-φ1Tc(t-1)-Λ-φkTc(t-p)=at-θ1at-1-Λ-θqat-q(7)其中,φk、θq為待定系數,at為誤差系數;(11)將最近I/O請求密集時刻及以前多個I/O請求密集時刻所獲取的PBA(t)、R(t)和Tc(t)值帶入公式(5)、(6)和(7)中,預測下一I/O請求密集時刻預取區域和預取時間值;(12)對預測的數據進行還原處理,形成還原后的預取時間的預測值和預取區域信息的預測值;(13)判斷系統是否是空閑,如果空閑,進行預取,然后進入步驟(14),否則重復步驟(13);
(14)將預取的數據與實際的讀訪問數據對比,若二者的誤差超過所規定的門限值時,進入步驟(10),重新構造預測模型,否則進入步驟(15);(15)重復步驟(1)-(15),直到系統工作結束。
本發明從兩個方面入手一是采用基于連續度的聚類算法,它能高效、可靠的發現密集讀請求的區域;其次是利用ARMA(Auto-Regressive andMoving Average)時間序列模型來預測未來密集讀請求可能訪問的區域和訪問時刻。在同一測試環境下,對采用本發明方法的存儲系統和現有的RAID系統進行了對比測試,在利用3個磁盤卷的負載測試表明本發明提出的基于連續度的聚類算法能正確的聚類讀請求;同時基于AMRA時間序列的預測模型的動態預測算法的準確預取密集I/O區域。總之,本發明提出的一種基于連續度聚類和時間序列的I/O區域預取方法能實用且高效的發現密集讀請求訪問的區域,并準確的預取密集讀請求可能訪問的區域,較大的提高存儲系統性能。
圖1為本發明方法的流程圖;圖2為季節性差分判斷示意圖;圖3為聚類結果示意圖;圖4為預取命中率示意圖。
具體實施方式本發明是根據I/O請求具有局部性的特征,在系統空閑時刻預測密集I/O訪問的區域,并對預測的區域進行預取。
如圖1所示,本發明方法的步驟包括(一)利用本發明所定義的基于連續度的聚類算法,對存儲系統的I/O進行分析,發現密集讀請求的區域。為便于描述,將讀請求稱之為對象。其具體過程為(1)在I/O請求密集時刻,將I/O流中的讀請求根據物理塊地址排序,形成一個對象鏈表。
(2)將所有物理地址相連或重疊的對象合并成一個對象,其長度為各對象長度之和,按下述規則計算出所有對象的連續度連續度sio(p)表示對象的連續程度,與其長度成正比。對一個對象p來說,若它的長度為1,其左側或右側無相連的對象,連續度為a1其左側或右側有一個相連的對象,連續度為a2;兩側均有相連的對象,連續度為a3,a3>a2>a1。對象處于a3狀態,其存儲效率最好;請求處于a1狀態,其存儲效率最差。因此根據上面的設定,若一個對象的長度為l’且l’>1,它的連續度為a3l′-2(a3-a2)。
(3)標記連續度大于閥值Ho的對象作為核心對象。
如果一個對象的連續度大于或等于閥值Ho,這個對象稱作核心對象。核心對象閥值Ho的取值是以I/O請求密集時刻中對象的平均連續度為標準,即Ho≥Σi=1kSio(pi)k,i=1,Λ,k---(1)]]>其中k為對象的數量。
(4)找到與每個核心對象可達或相連的所有對象構造成簇(A1)以核心對象o為中心,左右兩側距離d為半徑的區域稱為o的d-鄰域,d的取值通常為核心對象長度的一半。如果D是對象集合,p∈D,o∈D,若o是核心對象,p在o的d-鄰域內,則稱p是從o出發關于d直接可達。鄰域內對象的連續度之和稱作o在d-鄰域內的連續度。
(A2)若存在一個對象鏈p1,p2,…pn;pi∈D(1≤i≤n-1),n為對象鏈中對象的個數,;pi+1是從pi出發,關于d直接可達,則pn是從p1出發關于d可達。
(A3)在對象集合D中,o∈D,p∈D,q∈D,若存在p和q都是從o出發,關于d的可達,則稱p、q是關于d的相連。
(A4)滿足下面條件的所有對象構造成簇。
(I)p,q如果p∈C且q是從p出發關于d的可達,則q∈C。
(II)p,q ∈ Cp、q是關于d的相連,則p∈C。
(5)從形成的各簇中選擇出連續度大于等于閾值Hc的簇,形成有效結果簇。簇閾值Hc設為Hc=12[a3l-2(a3-a2)]---(2)]]>其中l為簇所占空間長度。
(6)如果是首次運行,重復步驟(1)至(5),直至獲取多個時間段的多個有效結果簇;否則轉入步驟(7)。有效結果簇的數量根據下面的預測模型的需要來確定,本發明所確定的數量一般為10-15個。
(二)在獲得了多個密集I/O訪問時間段所形成的多個有效結果簇后,采用ARMA時間序列預測模型預測出下一密集I/O訪問時刻要訪問的I/O區域并一次性的將其預取。
采用ARMA時間序列預測模型進行預測的具體過程為(7)從有效結果簇中獲取訪問區域信息,并以多個密集I/O訪問的時間構成訪問時間信息,分別形成讀請求區域的時間序列和訪問時間的時間序列Tc(t)。其中PBA(t)代表不同時間段的有效結果簇的中心點值,R(t)是對應有效結果簇的簇半徑,有效結果簇的中心點和簇半徑構成了訪問區域。
(8)判斷訪問區域信息和訪問時間信息是否滿足ARMA時間序列是零均值的平穩時間序列,如果是,進入步驟(10),否則進入步驟(9)。
判斷標準是看序列的自相關函數和偏相關函數的衰減是否緩慢,即p=1JΣk=0J|Pk|-|Pk+1||Pk|---(3)]]>其中Pk表示序列的自相關函數值,J表示最后一個超過自信區間的自相關函數值的序號。當變化率小于15%時,認為這個時間序列是非平穩的。
(9)對非平穩的序列進行平穩化處理即對非平穩的序列進行差分或零均值化處理,直到形成平穩序列。
根據等式(4)計算差分的階數dada=[1gΣn=1NX(n)2/21gN]---(4)]]>
其中X(n)表示序列的多個樣本。如果經過差分后的時間序列的自相關函數值仍有部分超過自信區間,那么我們認為這個序列具有季節性。
為了發現序列的季節性的特征,本發明采用的差分方法。如圖2所示,將自相關函數中超過自信區間的值所對應的滯后系數組成一個時間序列,然后對這個序列進行一階差分,如發現某個值在差分后的序列中出現頻率超過門限值(一般為50%),那么我們就可以認為這個值為季節周期數。如果在一階差分后沒有發現其季節性特征,則采用兩階差分并以此類推,直到發現其季節性特征值。
(10)將平穩的時間序列構造出ARMA時間序列預測模型,即PBA(t)-φ1PBA(t-1)-Λ-φkPBA(t-p)=at-θ1at-1-Λ-θqat-q(5)R(t)-φ1R(t-1)-Λ-φkR(t-p)=at-θ1at-1-Λ-θqat-q(6)Tc(t)-φ1Tc(t-1)-Λ-φkTc(t-p)=at-θ1αt-1-Λ-θqat-q(7)通過常規的ARMA時間序列參數評估方法就可獲取待定系數φk、θq和誤差系數at。
(11)將最近I/O請求密集時刻及以前多個I/O請求密集時刻所獲取的PBA(t)、R(t)和Tc(t)值帶入公式(5)、(6)和(7)中,則可以預測出下一I/O讀請求密集時刻預取區域和預取時間值。
(12)對預測的數據進行還原處理,形成還原后的預取時間的預測值和預取區域信息的預測值如果原有數據進行了差分,那么預測的數據需要加上被差分的數據;若原數據序列進行了零均值化處理,預測的數據需要加上原有數據的均值。
如果在建立ARMA模型前對數據進行平穩化處理,而獲得的預測數據也是針對平穩化處理后的數據,因此要獲得真正的實際預測數據,需要對預測的數據進行還原。
(13)判斷系統是否是空閑,如果空閑,進行預取,然后進入步驟(14),否則重復步驟(13)。
經過數據還原后形成預取時間和預取區域信息,由預取時間控制何時進行預取,預取時刻必須是在系統空閑時刻,判斷實際的預取時間的步驟為(B1)假定某個I/O請求為最后一個密集I/O請求,且在
時間內無I/O請求,則認為系統現處于空閑時刻,利用公式(8)計算σ的取值;10≤σ≤Hn‾-σH-tp‾-mtt‾Tio‾---(8)]]>其中Hn‾=Σi=1nHina---(9)]]>其中na為最近10個聚類區域的時間間隔,Hi為各聚類區域時間間隔,平均時間間隔為
,σH為平均時間間隔的均方差,平均密集I/O時間間隔為
磁盤或陣列的平均定位延遲為
(包括旋轉延遲加上尋道延遲),傳輸一個數據塊的時間為
,m為預取的數據塊數量。
(B2)設t1、t2分別為是預取的最早時刻和最后時刻,則t1=10Tio,t2=Hn‾-σH-tp‾-mtt‾,]]>預測的預取時刻為Tc,實際預取時刻為Tp;按照下述方法得到預取時刻Tp,在Tp時刻進行預取(I)如果t2≥Tc≥t1,則Tp=Tc。
(II)如果Tc≤t1,則Tp=t1。
(III)如果Tc≥t2,則Tp=t2。
(14)將預取的數據與實際的讀訪問數據對比,若二者的誤差超過所規定的門限值時(如50%),進入步驟(10),重新構造預測模型,否則進入步驟(15)。
(15)重復步驟(1)-(14),直到系統工作結束。
實例在本項發明的測試中,利用HP公司一段trace文件,它記錄的是典型的辦公環境下客戶端訪問服務器的3個磁盤卷(卷號為21、23和35)情況,時間跨度為191.12小時,有230370個請求數。對a1、a2和a3,本發明采用模糊定量的方法,將其賦值分別為1、2和3。
圖3顯示的是卷21時間跨度為191.12小時的I/O請求點和卷聚內中心結果。從圖中可以看出,通過基于連續度的算法得到的是5個有效簇,即C0-C4。在整個監測過程中,實際聚類的請求數為45523,占整個過程請求數的91.16%。
圖4則反映的是整個測試過程中聚類區域預取命中率過程。可以看出,其預取命中率是一個不斷調整的過程。在預取1089個聚類區域時,產生了316次調節,占總預測次數的29.02%,其比率還是比較低的。在整個測試中,預取了145548個請求,占總請求數的95.37%。其平均命中率為61.12%。
權利要求
1.一種基于連續度聚類和時間序列的I/O區域預取方法,其步驟包括(1)在I/O請求密集時刻,將I/O流中的讀請求根據物理塊地址排序,形成一個對象鏈表;(2)將所有物理地址相連或重疊的對象合并成一個對象,其長度為各對象長度之和,按下述規則計算出所有對象的連續度設對象p的長度為1,若其左側或右側無相連的對象,則設其連續度Sio(p)=a1;若其左側或右側有一個相連的對象,則設其連續度Sio(p)=a2;若兩側均有相連的對象,則設其連續度Sio(p)=a3,其中,a3>a2>a1;(3)標記連續度大于閥值Ho的對象作為核心對象,其中,閥值Ho按照公式(1)計算,其中k為對象的數量Ho≥Σi=1kSio(pi)k,i=1,Λ,k---(1)]]>(4)按照下述規則查找與每個核心對象可達或相連的所有對象,將其構造成簇(A1)以核心對象o為中心,左右兩側距離d為半徑的區域稱為o的d-鄰域;如果D是對象集合,p∈D,o∈D,若o是核心對象,p在o的d-鄰域內,則稱p是從o出發關于d直接可達;(A2)若存在一個對象鏈p1,p2,...,pn;pi∈D,1≤i≤n-1,n為對象鏈中對象的個數,pi+1是從pi出發,關于d直接可達,則pn是從p1出發關于d可達;(A3)在對象集合D中,o∈D,p∈D,q∈D,若存在p和q都是從o出發,關于d的可達,則稱p、q是關于d的相連;(A4)將滿足下面條件的所有對象構造成簇(I)p,q如果p∈C且q是從p出發關于d的可達,則q∈C;(II)p,q∈Cp、q是關于d的相連,則p∈C;(5)從形成的各簇中選擇出連續度大于等于簇閾值Hc的簇,形成有效結果簇,其中簇閾值Hc按照公式(2)計算Hc=12[a3l-2(a3-a2)]---(2)]]>其中l為簇所占空間長度;(6)重復步驟(1)至(5),直至獲取多個時間段的多個有效結果簇;否則轉入步驟(7);(7)從有效結果簇中獲取訪問區域信息,并以多個密集I/O訪問的時間構成訪問時間信息,分別形成讀請求區域的時間序列和訪問時間的時間序列Tc(t),有效結果簇的中心點和簇半徑構成訪問區域,設有效結果簇的中心點值為PBA(t),對應有效結果簇的簇半徑為R(t);(8)判斷訪問區域信息和訪問時間信息是否滿足ARMA時間序列是零均值的平穩時間序列,如果是,進入步驟(10),否則進入步驟(9);(9)對非平穩的序列進行平穩化處理;(10)將平穩的時間序列構造出ARMA時間序列預測模型,即PBA(t)-φ1PBA(t-1)-Λ-φkPBA(t-p)=at-θ1at-1-Λ-θqat-q(5)R(t)-φ1R(t-1)-Λ-φkR(t-p)=at-θ1at-1-Λ-θqat-q(6)Tc(t)-φ1Tc(t-1)-Λ-φkTc(t-p)=at-θ1at-1-Λ-θqat-q(7)其中,φk、θq為待定系數,at為誤差系數;(11)將最近I/O請求密集時刻及以前多個I/O請求密集時刻所獲取的PBA(t)、R(t)和Tc(t)值帶入公式(5)、(6)和(7)中,預測下一I/O請求密集時刻預取區域和預取時間值;(12)對預測的數據進行還原處理,形成還原后的預取時間的預測值和預取區域信息的預測值;(13)判斷系統是否是空閑,如果空閑,進行預取,然后進入步驟(14),否則重復步驟(13);(14)將預取的數據與實際的讀訪問數據對比,若二者的誤差超過所規定的門限值時,進入步驟(10),重新構造預測模型,否則進入步驟(15);(15)重復步驟(1)-(15),直到系統工作結束。
2.根據權利要求
1所述的方法,其特征在于步驟(4)中,d為核心對象長度的一半。
3.根據權利要求
1所述的方法,其特征在于步驟(13)按照下述過程判斷預取時間(B1)假定某個I/O請求為最后一個密集I/O請求,且在
時間內無I/O請求,則認為系統現處于空閑時刻,利用公式(8)計算σ的取值;10≤σ≤Hn‾-σH-tp‾-mtt‾Tio‾---(8)]]>其中Hn‾=Σi=1nHina---(9)]]>其中na為最近10個聚類區域的時間間隔,Hi為各聚類區域時間間隔,平均時間間隔為
σH為平均時間間隔的均方差,平均密集I/O時間間隔為
磁盤或陣列的平均定位延遲為
傳輸一個數據塊的時間為
m為預取的數據塊數量;(B2)設t1、t2分別為是預取的最早時刻和最后時刻,則t1=10Tio,t2=Hn‾-σH-tp‾-mtt‾,]]>預測的預取時刻為Tc,實際預取時刻為Tp;按照下述方法得到預取時刻Tp,在Tp時刻進行預取(I)如果t2≥Tc≥t1,則Tp=Tc;(II)如果Tc≤t1,則Tp=t1;(III)如果Tc≥t2,則Tp=t2。
專利摘要
本發明公開了一種基于連續度聚類和時間序列的I/O區域預取方法。本發明根據I/O請求具有局部性的特征,在系統空閑時刻預測密集I/O訪問的區域,并對預測的區域進行預取。它采用基于連續度的聚類算法,能高效、可靠的發現密集讀請求的區域;其次是利用ARMA時間序列模型來預測未來密集讀請求可能訪問的區域和訪問時刻。在同一測試環境下,對采用本發明儲系統和現有的RAID系統進行了對比測試,在利用3個磁盤卷的負載測試表明本發明聚類算法能正確的聚類讀請求;同時基于AMRA時間序列的預測模型的動態預測算法的準確預取密集I/O區域。本發明能實用且高效的發現密集讀請求訪問的區域,并準確的預取密集讀請求可能訪問的區域,較大的提高存儲系統性能。
文檔編號G06F17/30GK1996226SQ200610166535
公開日2007年7月11日 申請日期2006年12月28日
發明者謝長生, 李懷陽, 劉艷, 黃建忠, 蔡斌 申請人:華中科技大學導出引文BiBTeX, EndNote, RefMan