亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

一種基于持續(xù)數(shù)據(jù)多輸入輸出流并發(fā)寫入性能優(yōu)化方法

文檔序號:6523977閱讀:148來源:國知局
一種基于持續(xù)數(shù)據(jù)多輸入輸出流并發(fā)寫入性能優(yōu)化方法
【專利摘要】本發(fā)明涉及一種基于持續(xù)數(shù)據(jù)多輸入輸出流并發(fā)寫入性能優(yōu)化方法,屬于計算機(jī)存儲【技術(shù)領(lǐng)域】。本發(fā)明通過接收數(shù)據(jù)流線程池將數(shù)據(jù)蓄流到緩存池中,再通過下刷線程池將緩存刷入下層設(shè)備中,在接受數(shù)據(jù)蓄流和下刷緩存時,根據(jù)應(yīng)用優(yōu)先級進(jìn)行標(biāo)記,優(yōu)先處理優(yōu)先級最高的應(yīng)用數(shù)據(jù)。本發(fā)明通過對上層應(yīng)用數(shù)據(jù)IO特性和下層設(shè)備的IO訪問能力的學(xué)習(xí),動態(tài)調(diào)整線緩存池和線程池的配置,達(dá)到對持續(xù)數(shù)據(jù)IO的性能優(yōu)化和應(yīng)用優(yōu)先級的保證。本發(fā)明可減少底層存儲設(shè)備的IO寫入次數(shù),充分發(fā)揮下層存儲設(shè)備的IO能力;合理利用存儲設(shè)備的帶寬,有效地提高應(yīng)用的性能;降低底層設(shè)備的高IOPS需求,降低整個設(shè)備的成本;采用功耗更低的部件,落實綠色存儲。
【專利說明】一種基于持續(xù)數(shù)據(jù)多輸入輸出流并發(fā)寫入性能優(yōu)化方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種基于持續(xù)數(shù)據(jù)多輸入輸出(IO)流并發(fā)寫入性能優(yōu)化方法,屬于計算機(jī)存儲【技術(shù)領(lǐng)域】。
【背景技術(shù)】
[0002]目前大部分存儲系統(tǒng)和應(yīng)用使用過程中為分離模式,應(yīng)用和存儲各自只關(guān)注自身的實現(xiàn)和優(yōu)化,沒有進(jìn)行有機(jī)結(jié)合,在遇到性能瓶頸時,優(yōu)先考慮是否要升級硬件提高其處理能力,實際上并沒有將硬件能力充分發(fā)揮。
[0003]應(yīng)用和存儲的簡單結(jié)合,造成了以下局限性:無法充分發(fā)揮下層存儲設(shè)備的IO能力;無法有效地提高應(yīng)用的性能;滿足應(yīng)用IO高峰需求導(dǎo)致對主機(jī)與存儲端硬件成本居高不下;綠色存儲無法落地;高優(yōu)先級應(yīng)用服務(wù)水平無法得到保證。
[0004]基于以上原因,需要針對應(yīng)用的IO特征和存儲IO能力進(jìn)行有機(jī)結(jié)合并徹底優(yōu)化。
【發(fā)明內(nèi)容】

[0005]本發(fā)明具體技術(shù)方案為:
[0006]步驟一、多個并發(fā)寫IO流寫入主模塊,系統(tǒng)開辟一組大小可動態(tài)擴(kuò)展的緩存池,為緩存池的管理開辟可按并發(fā)IO流數(shù)和后端存儲設(shè)備數(shù)分別動態(tài)調(diào)整的讀、寫線程池。
[0007]步驟二、確定IO流的初始優(yōu)先級,根據(jù)IO流的不同應(yīng)用場景,每一路IO數(shù)據(jù)流的應(yīng)用和下層的卷對應(yīng)起來,用戶可以根據(jù)應(yīng)用IO流實際需求,設(shè)置其對應(yīng)卷設(shè)備的緩存優(yōu)先級屬性;相應(yīng)地,將緩存池劃分為N個區(qū)域,每個區(qū)域?qū)?yīng)一種優(yōu)先級,并根據(jù)優(yōu)先級策略寫緩存,多IO流時,高優(yōu)先級應(yīng)用數(shù)據(jù)IO可征用低優(yōu)先級的IO流所使用的緩存塊,同時將其優(yōu)先級調(diào)整為高優(yōu)先級;
[0008]步驟三、獲取下層設(shè)備的多并發(fā)IO流和固定IO塊大小的最大寫入總帶寬,根據(jù)這些計算出初始條件下的下刷緩存大小,等待IO流接入系統(tǒng);
[0009]下層存儲設(shè)備包括塊設(shè)備,如RAID、卷組、文件系統(tǒng)等,其IO能力指在。
[0010]步驟四、IO流接入系統(tǒng)后,系統(tǒng)調(diào)度讀線程池進(jìn)行IO數(shù)據(jù)接收,開始緩存蓄流;緩存池的大小隨著應(yīng)用的個數(shù)動態(tài)增加,當(dāng)緩存池使用率達(dá)到較高的水平時,緩存池總?cè)萘孔詣訑U(kuò)展;當(dāng)緩存池大小擴(kuò)展到系統(tǒng)緩存的一定比例時,容量停止擴(kuò)展;
[0011]步驟五、在緩存池的N個區(qū)域中,每個IO流根據(jù)緩存下刷的大小又劃分為M塊,以“塊”作為下刷的基本單位;“塊”填滿,置下刷標(biāo)記,釋放讀線程回讀線程池,從緩存下刷線程中找一個空閑的線程進(jìn)行緩存下刷處理,下刷完成后,將下刷線程歸還線程池。
[0012]緩存下刷的大小采用一種動態(tài)學(xué)習(xí)和動態(tài)調(diào)整的自適應(yīng)機(jī)制,通過讀寫下層的設(shè)備,測試出寫入設(shè)備的IO最優(yōu)值時,計算出初始條件下每IO流的下刷緩存的大小,當(dāng)IO流真實寫入后,可根據(jù)IO特征進(jìn)行動態(tài)學(xué)習(xí),結(jié)合初始值,適當(dāng)調(diào)整每個IO流下刷緩存的大小,使得IO流和設(shè)備本身的IO能力得到有機(jī)結(jié)合。IO特征包括IO讀寫比例,IO塊最大和平均大小,IO流數(shù),順序與隨機(jī)比例、最大延時等,通過向下層設(shè)備讀取和寫入不同大小的數(shù)據(jù)塊采集這些IO特征的數(shù)據(jù)。此學(xué)習(xí)過程不局限一次,根據(jù)下層設(shè)備的固有屬性,在設(shè)備因為某些屬性而導(dǎo)致性能達(dá)到臨界值時,為緩存池中的空閑緩存塊設(shè)置閾值,超過此閾值時,觸發(fā)動態(tài)學(xué)習(xí)機(jī)制,調(diào)整下刷緩存的大小,使得N個區(qū)域中各自空閑緩存塊的數(shù)量保持平衡。
[0013]讀線程池中將優(yōu)先級較高的IO流優(yōu)先寫入緩存,寫線程池中的線程也將優(yōu)先級較高的緩存下刷到下層設(shè)備。只有在優(yōu)先級較高的應(yīng)用IO數(shù)據(jù)被響應(yīng)完成后,才去考慮優(yōu)先級較低的IO流響應(yīng),從而能夠充分利用下層設(shè)備的IO性能,提高應(yīng)用本身的性能,將應(yīng)用的IO請求變得更為平滑,減少IO流的超時重試的情況,降低實時IO流為保證實時性而丟棄部分?jǐn)?shù)據(jù)的可能性,提高系統(tǒng)的可靠性,保障優(yōu)先級較高的IO流得到優(yōu)先響應(yīng)和充分處理。
[0014]為減少緩存不停地分配和釋放造成的資源調(diào)度和內(nèi)存碎片,只將動態(tài)擴(kuò)展時新分配的內(nèi)存通過新的指針進(jìn)行指向,和老緩存池進(jìn)行線性組合,不將老緩存池歸還系統(tǒng)。同時緩存下刷后,緩存釋放只是回到緩存池,不釋放回整個系統(tǒng)。同時,讀線程池和緩存下刷緩存池也不會直接歸還系統(tǒng),只是返回到各自的池中等待新的調(diào)度。
[0015]有益效果
[0016]本發(fā)明減少了底層存儲設(shè)備的IO寫入次數(shù),充分發(fā)揮下層存儲設(shè)備的IO能力;合理利用存儲設(shè)備的帶寬,減少單個緩存的情況下的數(shù)據(jù)丟棄有效地提高應(yīng)用的性能;固定設(shè)備上增加持續(xù)數(shù)據(jù)應(yīng)用的個數(shù),應(yīng)用IO持續(xù)平滑寫入;降低底層設(shè)備的高IOPS需求,降低整個設(shè)備的成本;采用功耗更低的部件,綠色存儲實際落地;優(yōu)先響應(yīng)和處理較高優(yōu)先級的應(yīng)用請求。
【專利附圖】

【附圖說明】
[0017]圖1為設(shè)計原理圖【具體實施方式】
[0018]下面結(jié)合具體實施案例對本發(fā)明進(jìn)行詳細(xì)說明。
[0019]在存儲系統(tǒng)中部署一個新的模塊,下層設(shè)備可以為文件系統(tǒng),也可為單顆硬盤或者磁盤陣列等存儲設(shè)備卷,在下例中,下層共有4個RAID,每個RAID為15塊盤組成的RAID5,每塊盤的容量為2TB,每個RAID的平均容量為25TB,系統(tǒng)總?cè)萘繛?00TB。而上層共有30路IO流,這30路IO流由Webserver應(yīng)用,數(shù)據(jù)庫應(yīng)用,和視頻應(yīng)用組成,流程如圖1所示。
[0020]根據(jù)步驟一,模塊啟用后,開辟一組大小可動態(tài)配置的緩存池,系統(tǒng)總緩存大小為8GB,設(shè)置緩存池的初始容量為256MB,并開辟讀、寫線程池用于管理緩存池,讀寫線程分別設(shè)置30、4個。
[0021]根據(jù)步驟二,進(jìn)行緩存池及讀、寫線程池的初始化工作。將緩存池分為1024個緩存塊,每一個緩存塊大小為256KB,這1024個緩存塊編號為0-1023,分為三個區(qū)域。0-340號緩存塊優(yōu)先級設(shè)置為“低”,應(yīng)用于諸如Webserver等對響應(yīng)時間要求不高的應(yīng)用場景,;341-682號緩存塊優(yōu)先級設(shè)置為“中”,應(yīng)用于諸如視頻碼流等對響應(yīng)時間要求適中的應(yīng)用場景;683-1023號緩存塊優(yōu)先級設(shè)置為“高”應(yīng)用于諸如數(shù)據(jù)庫應(yīng)用等對響應(yīng)時間要求較高的應(yīng)用場景。當(dāng)屬于數(shù)據(jù)庫應(yīng)用的IO流到來時,從683-1023號緩存塊中分出若干塊給該IO流,若此時683-1023號緩存塊大小不夠,可從O號開始依次征用低優(yōu)先級區(qū)域的緩存,例如,此時0-2號緩存塊沒有被使用,則征用0-2號緩存,并把該緩存塊優(yōu)先級標(biāo)記為“高”。
[0022]根據(jù)步驟三,獲取下層設(shè)備的多并發(fā)IO流和固定IO塊大小的最大寫入總帶寬,根據(jù)這些計算出初始條件下的下刷緩存大小,等待IO流接入系統(tǒng);例如,這時下層設(shè)備的最大寫入速率為100MB/S,分給4個RAID,下層最大響應(yīng)時間為0.6毫秒,由此計算出初始條件下的下刷緩存大小為緩存塊大小的3/4,即192KB,并等待IO流接入系統(tǒng)。
[0023]根據(jù)步驟四,IO流寫入數(shù)據(jù)后,主模塊調(diào)度讀線程池進(jìn)行IO數(shù)據(jù)接收,開始緩存蓄流。并計算緩存池的使用量,若緩存池使用量達(dá)到緩存池總?cè)萘康?0%,即179MB時,緩存池總?cè)萘孔詣訑U(kuò)展到原來的2倍,即512MB ;當(dāng)緩存池大小擴(kuò)展到系統(tǒng)緩存的5%時,SP409MB時停止擴(kuò)展。
[0024]根據(jù)步驟五,判斷IO寫入特征,根據(jù)IO寫入特征結(jié)合下層設(shè)備的IO能力,計算出下刷緩存大小,對初始下刷緩存大小進(jìn)行動態(tài)調(diào)整。例如,此時底層設(shè)備為15塊盤創(chuàng)建的RAID5,采用順序?qū)懙姆绞?,塊大小為512KB,獲得此時寫入的帶寬為112MB/s,結(jié)合當(dāng)前IO流的速率2Mb/s,以及此IO流所使用的緩存塊大小256KB,計算出下刷緩存大小為緩存塊大小的1/2,即128KB,并將下刷緩存大小調(diào)整至此大小。蓄流完成后,置下刷標(biāo)記,釋放讀線程回讀線程池,從緩存下刷線程池中找一個空閑的線程進(jìn)行緩存下刷處理,下刷完成后,將下刷線程歸還線程池。同時主模塊計算下層設(shè)備的空閑容量,當(dāng)不足20%時,即20T時,強(qiáng)制獲取下層設(shè)備的IO能力,將下刷緩存塊大小進(jìn)行調(diào)整,減少至當(dāng)前下刷大小的一半,若此時緩存塊大小動態(tài)調(diào)整為128KB,則減少到64KB。
[0025]此為一個周期的工作。
【權(quán)利要求】
1.一種基于持續(xù)數(shù)據(jù)多輸入輸出流并發(fā)寫入性能優(yōu)化方法,其特征在于: 步驟一、多個并發(fā)寫IO流寫入主模塊,系統(tǒng)開辟一組大小可動態(tài)擴(kuò)展的緩存池,為緩存池的管理開辟可按并發(fā)IO流數(shù)和后端存儲設(shè)備數(shù)分別動態(tài)調(diào)整的讀、寫線程池; 步驟二、確定IO流的初始優(yōu)先級,根據(jù)IO流的不同應(yīng)用場景,每一路IO數(shù)據(jù)流的應(yīng)用和下層的卷對應(yīng)起來,用戶可以根據(jù)應(yīng)用IO流實際需求,設(shè)置其對應(yīng)卷設(shè)備的緩存優(yōu)先級屬性;相應(yīng)地,將緩存池劃分為N個區(qū)域,每個區(qū)域?qū)?yīng)一種優(yōu)先級,并根據(jù)優(yōu)先級策略寫緩存,多IO流時,高優(yōu)先級應(yīng)用數(shù)據(jù)IO可征用低優(yōu)先級的IO流所使用的緩存塊,同時將其優(yōu)先級調(diào)整為高優(yōu)先級; 步驟三、獲取下層設(shè)備的多并發(fā)IO流和固定IO塊大小的最大寫入總帶寬,根據(jù)這些計算出初始條件下的下刷緩存大小,等待IO流接入系統(tǒng); 步驟四、IO流接入系統(tǒng)后,系統(tǒng)調(diào)度讀線程池進(jìn)行IO數(shù)據(jù)接收,開始緩存蓄流;緩存池的大小隨著應(yīng)用的個數(shù)動態(tài)增加,當(dāng)緩存池使用率達(dá)到較高的水平時,緩存池總?cè)萘孔詣訑U(kuò)展;當(dāng)緩存池大小擴(kuò)展到系統(tǒng)緩存的一定比例時,容量停止擴(kuò)展; 步驟五、在緩存池的N個區(qū)域中,每個IO流根據(jù)緩存下刷的大小又劃分為M塊,以“塊”作為下刷的基本單位;“塊”填滿,置下刷標(biāo)記,釋放讀線程回讀線程池,從緩存下刷線程中找一個空閑的線程進(jìn)行緩存下刷處理,下刷完成后,將下刷線程歸還線程池。
2.如權(quán)利I要求所述的一種基于持續(xù)數(shù)據(jù)多輸入輸出流并發(fā)寫入性能優(yōu)化方法,緩存下刷的大小采用一種動態(tài)學(xué)習(xí)和動態(tài)調(diào)整的自適應(yīng)機(jī)制,通過讀寫下層的設(shè)備,測試出寫入設(shè)備的IO最優(yōu)值時,計算出初始條件下每IO流的下刷緩存的大小,當(dāng)IO流真實寫入后,可根據(jù)IO流的頻率和數(shù)據(jù)量大小,進(jìn)行動態(tài)學(xué)習(xí),結(jié)合初始值,適當(dāng)調(diào)整每個IO流下刷緩存的大小,使得IO流和設(shè)備本身的IO能力得到有機(jī)結(jié)合;此學(xué)習(xí)過程不局限一次,根據(jù)下層設(shè)備的固有屬性,在設(shè)備因為某些屬性而導(dǎo)致性能達(dá)到臨界值時,為緩存池中的空閑緩存塊設(shè)置閾值,超過此閾值時,觸發(fā)動態(tài)學(xué)習(xí)機(jī)制,調(diào)整下刷緩存的大小。
3.如權(quán)利要求1所述的一種基于持續(xù)數(shù)據(jù)多輸入輸出流并發(fā)寫入性能優(yōu)化方法,其特征還在于:讀線程池中將優(yōu)先級較高的IO流優(yōu)先寫入緩存,寫線程池中的線程也將優(yōu)先級較高的緩存下刷到下層設(shè)備;只有在優(yōu)先級較高的應(yīng)用IO數(shù)據(jù)被響應(yīng)完成后,才去考慮優(yōu)先級較低的IO流響應(yīng),從而能夠充分利用下層設(shè)備的IO性能,提高應(yīng)用本身的性能,將應(yīng)用的IO請求變得更為平滑,減少IO流的超時重試的情況,降低實時IO流為保證實時性而丟棄部分?jǐn)?shù)據(jù)的可能性,提高系統(tǒng)的可靠性,保障優(yōu)先級較高的IO流得到優(yōu)先響應(yīng)和充分處理。
4.如權(quán)利I要求所述的一種基于持續(xù)數(shù)據(jù)多輸入輸出流并發(fā)寫入性能優(yōu)化方法,其特征還在于:只將動態(tài)擴(kuò)展時新分配的內(nèi)存通過新的指針進(jìn)行指向,和老緩存池進(jìn)行線性組合,不將老緩存池歸還系統(tǒng);同時緩存下刷后,緩存釋放只是回到緩存池,不釋放回整個系統(tǒng);同時,讀線程池和緩存下刷緩存池也不會直接歸還系統(tǒng),只是返回到各自的池中等待新的調(diào)度。
【文檔編號】G06F3/06GK103761051SQ201310689138
【公開日】2014年4月30日 申請日期:2013年12月17日 優(yōu)先權(quán)日:2013年12月17日
【發(fā)明者】王道邦, 錢文, 孫斌, 謝紅軍, 羅華, 周澤湘, 李輝, 郭毅 申請人:北京同有飛驥科技股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1