一種基于時間片輪轉機制的樹狀存儲結構寫放大優(yōu)化方法
【技術領域】
[0001]本發(fā)明屬于計算機軟件技術領域,涉及到一種基于時間片輪轉機制的樹狀存儲結構寫放大優(yōu)化方法。
【背景技術】
[0002]LSM Tree是一種多組件的樹狀存儲結構??傮w來說,LSM Tree由內存空間和磁盤空間兩部分構成。數(shù)據首先會被緩存在內存空間中,當內存空間達到一定閾值時,內存的數(shù)據會被批量地刷寫到磁盤空間上。磁盤空間由多層組件構成,各層組件都有一個存儲數(shù)據大小的閾值,閾值自上而下呈指數(shù)增長。剛從內存刷寫到磁盤的數(shù)據會先存儲在上層組件中,當組件中的數(shù)據達到閾值時,會通過合并操作將本層數(shù)據合并到下層組件中。當LSM-Tree中有多個組件的數(shù)據量達到閾值時,會根據合并選擇優(yōu)先級機制,選擇優(yōu)先級最高的組件進行合并操作。
[0003]寫放大是目前影響LSM-Tree性能的主要原因。寫放大表示一次合并操作的有效率,其計算公式為:寫放大=寫操作總10量/有效移動數(shù)據總量,可以看出,寫放大越大,表明此次操作的無效10比例越大,效率就越低,性能也就越差。LSM-Tree寫放大較大的原因主要是:在合并操作時,需要從待合并的上下兩個組件中各讀取一部分數(shù)據到內存中進行合并,合并后將結果寫回下層組件,而只有上層組件的數(shù)據是有效移動數(shù)據,下層組件的數(shù)據并沒有移動,所以下層組件的數(shù)據量越大,寫放大就越大。現(xiàn)有的LSM-Tree合并選擇優(yōu)先級機制存在缺陷,不能保證各個組件的數(shù)據順利向下層組件移動,一旦數(shù)據量增加,數(shù)據就會滯留在某一組件中,導致組件在合并時寫放大較大,影響整體性能。
【發(fā)明內容】
[0004]本發(fā)明的主要目的在于提出一種基于時間片輪轉的合并機制,通過設定的合并選擇機制,選擇待合并的組件,賦予其占用時間片(一種合并所需的系統(tǒng)資源)的權限,并根據組件當前數(shù)據量的大小,動態(tài)調整時間片的閾值大小,從而有效控制其占用時間片的時間長短,保證其在占用時間片的過程中連續(xù)進行若干次合并操作,從而有效控制組件的文件個數(shù),降低寫放大,提升系統(tǒng)整體吞吐量。
[0005]本發(fā)明的技術方案為:
[0006]—種基于時間片輪轉機制的樹狀存儲結構寫放大優(yōu)化方法,其步驟為:
[0007]1)選取磁盤空間中一待合并的組件,賦予其占用時間片的權限;其中,磁盤空間為多組件的樹狀存儲結構;
[0008]2)根據所選組件當前數(shù)據量的大小,動態(tài)調整時間片的閾值大小;
[0009]3)所選組件在占用時間片的過程中連續(xù)進行若干次合并操作。
[0010]進一步的,選擇待合并的組件需滿足的條件為:組件的數(shù)據量大于該組件的數(shù)據量閾值。
[0011]進一步的,優(yōu)先選擇上次分配時間片的組件的相鄰下個組件作為待合并的組件。
[0012]進一步的,如果相鄰組件不滿足組件的數(shù)據量大于該組件的數(shù)據量閾值條件時,則計算其他組件的當前數(shù)據量與對應組件的數(shù)據量閾值的比值,選取滿足組件的數(shù)據量大于該組件的數(shù)據量閾值條件且比值最大的組件。
[0013]進一步的,動態(tài)調整時間片的閾值大小的方法為:T為當前分配時間片占用權限的組件Ci的時間片閾值,T=(超出組件Ci的數(shù)據量閾值的數(shù)據總量/每次合并平均移動數(shù)據量)*每次合并的平均時間;其中每次合并平均移動數(shù)據量表示為:當組件Ci參與合并且合并后的數(shù)據寫回下層組件時,從該組件Ci讀取的數(shù)據總量。
[0014]進一步的,將所選組件每次合并所消耗的時間進行累加,當消耗的總合并時間超過了對應時間片的閾值,則將取消所選組件的占用時間片的權限。
[0015]進一步的,當所選組件當前數(shù)據量已小于該組件的數(shù)據量閾值,則將取消所選組件的占用時間片的權限。
[0016]本發(fā)明主要包括以下三個階段:
[0017]1)分配時間片占用權限
[0018]為LSM-Tree的某個組件分配時間片占用權限。被分配的組件需要滿足以下條件:
[0019]①被分配的組件必須滿足本組件的數(shù)據量大于本組件的數(shù)據量閾值。
[0020]②優(yōu)先選擇上次分配時間片的組件的相鄰下個組件進行分配。如組件&剛剛占用完時間片,則優(yōu)先選擇C3進行分配。
[0021]③如果根據條件②選擇的組件不滿足條件①,或當前時間片的占用權限為空,則計算其他所有組件的當前數(shù)據量與對應組件閾值的比值,將滿足條件①且比值最大的組件將被分配時間片的占用權限。
[0022]④如果所有組件均不滿足條件①,則時間片占用權限暫時置空,即沒有組件擁有時間片占用權限,等待當有組件滿足條件①時再進行分配。
[0023]2)使用時間片
[0024]當時間片被新的組件占用時,將根據該組件的相關信息,通過如下公式,重新計算時間片的閾值:T=(超出組件Ci的數(shù)據量閾值的數(shù)據總量/每次合并平均移動數(shù)據量)*每次合并的平均時間;T為當前分配時間片占用權限的組件Ci的時間片閾值,其中每次合并移動數(shù)據量表示為:當本組件參與合并,且合并后的數(shù)據寫回下層組件時,從本組件讀取的數(shù)據總量。經過統(tǒng)計可以計算出每次合并的平均移動數(shù)據量。
[0025]隨后,在每次合并時,會將每次合并所消耗的時間進行累加,一旦總的合并時間超過了時間片的閾值,則將取消其占用時間片的權限。
[0026]需要指出的是,當?shù)谝淮螢槟骋唤M件分配時間片權限時,由于該組件從未進行過合并操作,因此設置的時間片閾值為固定值。
[0027]3)取消時間片占用權限
[0028]取消組件的時間片占用權限主要有以下兩種情況:
[0029]①組件在使用時間片過程中,進行合并操作的總時間大于時間片閾值。
[0030]②組件當前數(shù)據量已小于該組件的數(shù)據量閾值。
[0031]取消組件的時間片權限后,會重新進入分配時間片占用權限的階段,進行下一次時間片的權限分配。
[0032]與現(xiàn)有技術相比,本發(fā)明的積極效果為:
[0033]本發(fā)明對擁有時間片的組件具有最高的合并選擇優(yōu)先級,不能進行合并操作的組件將自動放棄時間片,避免不必要的長期占用,導致系統(tǒng)資源空閑。
[0034]通過使用本發(fā)明提供的方式優(yōu)化LSM-Tree,可以將LSM-Tree的整體寫吞吐量提升40%以上。
【附圖說明】
[0035]圖1為本發(fā)明的方法流程圖。
【具體實施方式】
[0036]為使本發(fā)明的目的、技術方案和優(yōu)點更加清楚,下面結合附圖和具體實施例對本發(fā)明做進一步說明。
[0037]實例1基于時間片輪轉機制的樹狀存儲結構寫放大優(yōu)化方法
[0038]本發(fā)明基于RocksDB進行實現(xiàn)和實驗。具體的實現(xiàn)方法如下:
[0039]①在系統(tǒng)初始化時,將時間片的占用權限置空。
[0040]②當有組件(不一定是占用時間片的組件)滿足本組件數(shù)據量大于本組件閾值時,判斷當前時間片是否被組件占用。如果沒有被占用,則執(zhí)行④;如果已經被占用,則判斷當前占用時間片的組件是否滿足本組件數(shù)據量大于本組件閾值,如果不滿足,則執(zhí)行③;如果滿足則判斷該組件的合并時間是否已超過當前時間片的閾值,如果沒有超過,則該組件繼續(xù)進行合并操作,并在合并完成后執(zhí)行⑤,否則執(zhí)行③。
[0041]③判斷當前占用時間片的組件的相鄰下一組件是否滿足本組件數(shù)據量大于本組件閾值,如當前占用時間片的組件為C2,則判斷C3是否滿足。如果滿足,則根據下一組件的相關信息計算時間片閾值大小,為其分配時間片占用權限,并由該組件進行合并操作,合并操作完成后,執(zhí)行⑤;如果不滿足,則執(zhí)行④。
[0042]④根據如下公式計算所有組件的分數(shù):組件分數(shù)=組件數(shù)據量+組件閾值。如果分數(shù)最大的組件的分數(shù)大于1,則根據該組件信息重新計算時間片閾值大小,為其分配時間片占用權限,并由該組件進行合并操作,合并操作完成后,執(zhí)行⑤;否則,將時間片占用權限置空。
[0043]⑤記錄本次合并消耗的時間,并計算自該組件最近一次占用時間片以后所進行的所有合并操作的總時間。
【主權項】
1.一種基于時間片輪轉機制的樹狀存儲結構寫放大優(yōu)化方法,其步驟為: 1)選取磁盤空間中一待合并的組件,賦予其占用時間片的權限;其中,磁盤空間為多組件的樹狀存儲結構; 2)根據所選組件當前數(shù)據量的大小,動態(tài)調整時間片的閾值大??; 3)所選組件在占用時間片的過程中連續(xù)進行若干次合并操作。2.如權利要求1所述的方法,其特征在于,選擇待合并的組件需滿足的條件為:組件的數(shù)據量大于該組件的數(shù)據量閾值。3.如權利要求2所述的方法,其特征在于,優(yōu)先選擇上次分配時間片的組件的相鄰下個組件作為待合并的組件。4.如權利要求3所述的方法,其特征在于,如果相鄰組件不滿足組件的數(shù)據量大于該組件的數(shù)據量閾值條件時,則計算其他組件的當前數(shù)據量與對應組件的數(shù)據量閾值的比值,選取滿足組件的數(shù)據量大于該組件的數(shù)據量閾值條件且比值最大的組件。5.如權利要求1或2所述的方法,其特征在于,動態(tài)調整時間片的閾值大小的方法為:T為當前分配時間片占用權限的組件Ci的時間片閾值,T=(超出組件Ci的數(shù)據量閾值的數(shù)據總量/每次合并平均移動數(shù)據量)*每次合并的平均時間;其中每次合并平均移動數(shù)據量表示為:當組件Ci參與合并且合并后的數(shù)據寫回下層組件時,從該組件Ci讀取的數(shù)據總量。6.如權利要求1所述的方法,其特征在于,將所選組件每次合并所消耗的時間進行累加,當消耗的總合并時間超過了對應時間片的閾值,則將取消所選組件的占用時間片的權限。7.如權利要求1所述的方法,其特征在于,當所選組件當前數(shù)據量已小于該組件的數(shù)據量閾值,則將取消所選組件的占用時間片的權限。
【專利摘要】本發(fā)明公開了一種基于時間片輪轉機制的樹狀存儲結構寫放大優(yōu)化方法。本方法為:1)選取磁盤空間中一待合并的組件,賦予其占用時間片的權限;其中,磁盤空間為多組件的樹狀存儲結構;2)根據所選組件當前數(shù)據量的大小,動態(tài)調整時間片的閾值大??;3)所選組件在占用時間片的過程中連續(xù)進行若干次合并操作。本發(fā)明對擁有時間片的組件具有最高的合并選擇優(yōu)先級,不能進行合并操作的組件將自動放棄時間片,避免不必要的長期占用,導致系統(tǒng)資源空閑,可以將LSM-Tree的整體寫吞吐量提升40%以上。
【IPC分類】G06F3/06
【公開號】CN105487820
【申請?zhí)枴緾N201510859463
【發(fā)明人】岳銀亮, 李宇哲, 王偉平
【申請人】中國科學院信息工程研究所
【公開日】2016年4月13日
【申請日】2015年11月30日