塊級(jí)別存儲(chǔ)系統(tǒng)性能測(cè)試工具的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及根據(jù)來(lái)自真實(shí)存儲(chǔ)系統(tǒng)的I/O記錄,生成相同的I/O請(qǐng)求負(fù)載,以模擬運(yùn)行環(huán)境的真實(shí)負(fù)載變化,從而達(dá)到對(duì)存儲(chǔ)系統(tǒng)進(jìn)行性能測(cè)試的塊級(jí)別存儲(chǔ)系統(tǒng)性能測(cè)試工具。
【背景技術(shù)】
[0002]近年來(lái),數(shù)據(jù)爆炸性增長(zhǎng)而計(jì)算能力迅速提高,I/O密集型的應(yīng)用提出高帶寬、低延遲的存儲(chǔ)性能需求。塊級(jí)別存儲(chǔ)設(shè)備應(yīng)用廣泛,其上可以構(gòu)建裸設(shè)備、文件系統(tǒng)、數(shù)據(jù)庫(kù)、云存儲(chǔ)等多種訪問(wèn)接口。因此,研制高性能的塊級(jí)別存儲(chǔ)系統(tǒng)一直是存儲(chǔ)系統(tǒng)研究領(lǐng)域的一個(gè)熱點(diǎn)。性能測(cè)試有助于確定影響存儲(chǔ)系統(tǒng)性能的關(guān)鍵因素,從而可以有針對(duì)性地進(jìn)行分析和改進(jìn);亦可用于比較不同的存儲(chǔ)系統(tǒng),為選取或購(gòu)買存儲(chǔ)系統(tǒng)提供參考。面對(duì)高容量存儲(chǔ)設(shè)備,復(fù)雜的網(wǎng)絡(luò)存儲(chǔ)系統(tǒng),以及多維度的應(yīng)用需求,有必要推動(dòng)現(xiàn)有存儲(chǔ)系統(tǒng)測(cè)試評(píng)價(jià)技術(shù),設(shè)計(jì)并實(shí)現(xiàn)可信、可靠、可重復(fù)的存儲(chǔ)系統(tǒng)性能測(cè)試工具。
[0003]通常情況下,一個(gè)存儲(chǔ)系統(tǒng)性能的好壞,主要通過(guò)它處理負(fù)載的能力來(lái)衡量。根據(jù)添加負(fù)載的真實(shí)程度和輕重情況的不同來(lái)劃分,一般有三種方法可以實(shí)現(xiàn)。運(yùn)行實(shí)際應(yīng)用,即搭建真實(shí)的系統(tǒng)環(huán)境,添加用戶所關(guān)心的真實(shí)的應(yīng)用負(fù)載;生成人工合成負(fù)載,即針對(duì)系統(tǒng)的情況以及用戶群體的需求等,來(lái)生成合成的負(fù)載,并向該系統(tǒng)播放;播放I/O記錄,SP向存儲(chǔ)系統(tǒng)播放已有的,得到公眾認(rèn)可的真實(shí)的負(fù)載。
[0004]存儲(chǔ)系統(tǒng)性能測(cè)試的最準(zhǔn)確方法是運(yùn)行真正使用的應(yīng)用程序。但是,應(yīng)用程序往往難于配置,甚至由于涉密等原因而不可使用。而且當(dāng)用戶需求發(fā)生變化而重新測(cè)試時(shí),需要修改應(yīng)用,重新配置實(shí)驗(yàn)環(huán)境,使得該方法的復(fù)雜度明顯提高。人工負(fù)載生成技術(shù)與trace重放同時(shí)具有實(shí)現(xiàn)復(fù)雜度低的優(yōu)勢(shì),但是人工合成的負(fù)載不具有真實(shí)性,它依賴I/O負(fù)載生成程序并根據(jù)用戶指定的參數(shù)配置,生成用戶預(yù)期的負(fù)載。已有的I/O負(fù)載生成程序包括 TPC 基準(zhǔn)測(cè)試程序,Postmark, 1zone,Bonnie, SPC,SPEC SFS,1meter 等。用人工負(fù)載生成工具來(lái)預(yù)測(cè)現(xiàn)實(shí)世界中系統(tǒng)的性能是具有挑戰(zhàn)性的,而且配置和運(yùn)行起來(lái)很復(fù)雜。trace重放技術(shù)提供了基于實(shí)際應(yīng)用程序測(cè)試的一種替代方案。trace是在真實(shí)應(yīng)用或者基準(zhǔn)應(yīng)用程序運(yùn)行過(guò)程中記錄的存儲(chǔ)訪問(wèn)日志。給定某個(gè)應(yīng)用程序的1/0記錄,trace重放技術(shù)試圖生成相同的1/0請(qǐng)求負(fù)載,以模擬運(yùn)行環(huán)境的真實(shí)負(fù)載變化。trace重放技術(shù)的優(yōu)點(diǎn)是負(fù)載有代表性且易于使用。
[0005]通過(guò)播放1/0記錄的方式進(jìn)行塊級(jí)別存儲(chǔ)系統(tǒng)性能測(cè)試,兼具運(yùn)行實(shí)際應(yīng)用的真實(shí)程度高和生成人工合成負(fù)載的實(shí)現(xiàn)難度低的雙重優(yōu)勢(shì),即負(fù)載真實(shí)具有代表性,且不需要配置參數(shù),運(yùn)行起來(lái)簡(jiǎn)單方便。但是,已有的1/0記錄重放工具缺乏簡(jiǎn)單而精確地重現(xiàn)1/0負(fù)載的能力,容易給存儲(chǔ)系統(tǒng)性能指標(biāo)觀測(cè)值帶來(lái)顯著誤差。
【發(fā)明內(nèi)容】
[0006]針對(duì)現(xiàn)有技術(shù)中的問(wèn)題,本發(fā)明提供一種測(cè)試工具,根據(jù)來(lái)自真實(shí)存儲(chǔ)系統(tǒng)的1/0記錄,生成相同的I/O請(qǐng)求負(fù)載,以模擬運(yùn)行環(huán)境的真實(shí)負(fù)載變化,進(jìn)而達(dá)到對(duì)存儲(chǔ)系統(tǒng)進(jìn)行性能測(cè)試的目的。
[0007]為實(shí)現(xiàn)以上技術(shù)目的,本發(fā)明的技術(shù)方案是:本發(fā)明1mark根據(jù)來(lái)自真實(shí)存儲(chǔ)系統(tǒng)的I/O記錄,生成相同的I/O請(qǐng)求負(fù)載,以模擬運(yùn)行環(huán)境的真實(shí)負(fù)載變化,進(jìn)而達(dá)到對(duì)存儲(chǔ)系統(tǒng)進(jìn)行性能測(cè)試的目的。如附圖1所示,1mark由五個(gè)功能器件組成,包括I/O記錄讀取器、I/O請(qǐng)求控制器、I/O發(fā)射器、結(jié)果收集器和結(jié)果分析器。
[0008](1) I/O記錄讀取器負(fù)責(zé)將trace文件中的I/O記錄讀取出來(lái),每條I/O記錄的內(nèi)容一般包括:盤號(hào)、開(kāi)始字節(jié)、訪問(wèn)的字節(jié)總數(shù)、請(qǐng)求開(kāi)始時(shí)間。
[0009](2) I/O請(qǐng)求控制器主要有三個(gè)功能,控制負(fù)載的輕重,跟蹤I/O記錄的狀態(tài)和控制I/O記錄的發(fā)送時(shí)間。(3) I/O發(fā)射器負(fù)責(zé)將I/O請(qǐng)求以異步的方式提交出去,交給系統(tǒng)去處理。
[0010](4)結(jié)果收集器在播放I/O記錄過(guò)程中,查看I/O讀寫(xiě)的狀態(tài),如果I/O讀寫(xiě)完成,則將性能測(cè)試的結(jié)果數(shù)據(jù)收集到結(jié)果文件中。
[0011](5)結(jié)果分析器在測(cè)試結(jié)束后,按照測(cè)試人員的要求將結(jié)果文件中的數(shù)據(jù)進(jìn)行統(tǒng)計(jì)和分析,采用累計(jì)分布函數(shù)(cumulative distribut1n funct1n, CDF)、分段求均值等統(tǒng)計(jì)方法,獲得方便評(píng)價(jià)存儲(chǔ)系統(tǒng)性能的數(shù)據(jù),避免數(shù)據(jù)量過(guò)大造成性能評(píng)價(jià)結(jié)果不直觀以及存在信息噪聲等問(wèn)題。
[0012]從以上描述可以看出,本發(fā)明具備以下優(yōu)點(diǎn):本發(fā)明1mark根據(jù)來(lái)自真實(shí)存儲(chǔ)系統(tǒng)的1/0記錄,生成相同的1/0請(qǐng)求負(fù)載,以模擬運(yùn)行環(huán)境的真實(shí)負(fù)載變化,進(jìn)而達(dá)到對(duì)存儲(chǔ)系統(tǒng)進(jìn)行性能測(cè)試的目的。如附圖1所示,1mark由五個(gè)功能器件組成,包括1/0記錄讀取器、1/0請(qǐng)求控制器、1/0發(fā)射器、結(jié)果收集器和結(jié)果分析器。
[0013](1) 1/0記錄讀取器負(fù)責(zé)將trace文件中的1/0記錄讀取出來(lái),每條1/0記錄的內(nèi)容一般包括:盤號(hào)、開(kāi)始字節(jié)、訪問(wèn)的字節(jié)總數(shù)、請(qǐng)求開(kāi)始時(shí)間。
[0014](2) 1/0請(qǐng)求控制器主要有三個(gè)功能,控制負(fù)載的輕重,跟蹤1/0記錄的狀態(tài)和控制1/0記錄的發(fā)送時(shí)間。(3) 1/0發(fā)射器負(fù)責(zé)將1/0請(qǐng)求以異步的方式提交出去,交給系統(tǒng)去處理。
[0015](4)結(jié)果收集器在播放1/0記錄過(guò)程中,查看1/0讀寫(xiě)的狀態(tài),如果1/0讀寫(xiě)完成,則將性能測(cè)試的結(jié)果數(shù)據(jù)收集到結(jié)果文件中。
[0016](5)結(jié)果分析器在測(cè)試結(jié)束后,按照測(cè)試人員的要求將結(jié)果文件中的數(shù)據(jù)進(jìn)行統(tǒng)計(jì)和分析,采用累計(jì)分布函數(shù)(cumulative distribut1n funct1n, CDF)、分段求均值等統(tǒng)計(jì)方法,獲得方便評(píng)價(jià)存儲(chǔ)系統(tǒng)性能的數(shù)據(jù),避免數(shù)據(jù)量過(guò)大造成性能評(píng)價(jià)結(jié)果不直觀以及存在信息噪聲等問(wèn)題。
【附圖說(shuō)明】
[0017]圖1是本發(fā)明的塊級(jí)別存儲(chǔ)系統(tǒng)性能測(cè)試工具的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0018]根據(jù)附圖1所述,一種塊級(jí)別存儲(chǔ)系統(tǒng)性能測(cè)試工具,包括1/0記錄讀取器、1/0請(qǐng)求控制器、1/0發(fā)射器、結(jié)果收集器和結(jié)果分析器,1/0記錄讀取器將trace文件中的1/0記錄讀取出來(lái),每條I/O記錄的內(nèi)容包括:盤號(hào)、開(kāi)始字節(jié)、訪問(wèn)的字節(jié)總數(shù)、請(qǐng)求開(kāi)始時(shí)間;1/0請(qǐng)求控制器有三個(gè)功能,控制負(fù)載的輕重,跟蹤I/O記錄的狀態(tài)和控制I/O記錄的發(fā)送時(shí)間;1/0發(fā)射器負(fù)責(zé)將I/O請(qǐng)求以異步的方式提交出去,交給系統(tǒng)去處理;結(jié)果收集器在播放I/O記錄過(guò)程中,查看I/O讀寫(xiě)的狀態(tài),當(dāng)I/O讀寫(xiě)完成,則將性能測(cè)試的結(jié)果數(shù)據(jù)收集到結(jié)果文件中。
[0019]1、I/O請(qǐng)求控制
[0020]1.1負(fù)載輕重控制
[0021]1mark通過(guò)篩選盤號(hào)來(lái)控制負(fù)載的輕重。從trace文件中讀取的每條I/O記錄的目標(biāo)設(shè)備是用盤號(hào)標(biāo)記的,而盤號(hào)的分布是不均勻的。1mark通過(guò)選擇帶有某個(gè)或某些盤號(hào)的I/O記錄進(jìn)行播放來(lái)控制負(fù)載的輕重。
[0022]1.2記錄I/O請(qǐng)求狀態(tài)
[0023]1mark使用循環(huán)隊(duì)列記錄I/O請(qǐng)求的狀態(tài)信息。該隊(duì)列不遵守先進(jìn)先出規(guī)則,用來(lái)存儲(chǔ)一些基本信息。比如,在I/o請(qǐng)求發(fā)射之后記錄發(fā)射時(shí)間,用于I/O完成后統(tǒng)計(jì)I/O延遲時(shí)間。在播放I/O記錄進(jìn)行測(cè)試之前,1mark為循環(huán)隊(duì)列預(yù)分配內(nèi)存空間。在整個(gè)測(cè)試過(guò)程中,循環(huán)隊(duì)列反復(fù)使用。當(dāng)性能測(cè)試完成之后,再將申請(qǐng)的內(nèi)存空間釋放。
[0024]1mark使用占用標(biāo)識(shí)來(lái)表示隊(duì)列項(xiàng)是否正被使用。當(dāng)一個(gè)I/O操作開(kāi)始之前,在循環(huán)隊(duì)列中循環(huán)查找一個(gè)空閑的數(shù)組項(xiàng),并將該項(xiàng)的占用標(biāo)識(shí)置1。當(dāng)某個(gè)1/0操作完成后,從b1結(jié)構(gòu)體的數(shù)據(jù)項(xiàng)找到對(duì)應(yīng)的數(shù)組項(xiàng),并將該數(shù)組項(xiàng)的占用標(biāo)識(shí)置0。
[0025]2、1/0請(qǐng)求發(fā)射
[0026]2.1發(fā)射時(shí)間的控制
[0027]理論上,向系統(tǒng)發(fā)送1/0請(qǐng)求的發(fā)送時(shí)間應(yīng)該為1/0記錄中的請(qǐng)求時(shí)間。但是,當(dāng)trace文件中某一時(shí)間段的1/0記錄數(shù)量巨大時(shí),發(fā)送1/0請(qǐng)求的速度會(huì)大于系統(tǒng)處理1/0請(qǐng)求的速度,使得請(qǐng)求時(shí)間不一定恰好為發(fā)送時(shí)間。當(dāng)請(qǐng)求時(shí)間大于當(dāng)前時(shí)間時(shí),線程需要睡眠一段時(shí)間,直至當(dāng)前時(shí)間增長(zhǎng)到請(qǐng)求時(shí)間;相反,當(dāng)請(qǐng)求時(shí)間小于當(dāng)前時(shí)間時(shí),則產(chǎn)生了延遲,1mark立刻將該1/0請(qǐng)求發(fā)射出去。
[0028]2.21/0請(qǐng)求的發(fā)射方式
[0029]1/0記錄讀取器讀取負(fù)載信息,通過(guò)1/0請(qǐng)求控制器進(jìn)行相應(yīng)的控制。最后是由I/o發(fā)射器負(fù)責(zé)將1/0記錄發(fā)射出去。本文采用內(nèi)核態(tài)異步1/0的訪問(wèn)方式來(lái)處理1/0請(qǐng)求,將I/o請(qǐng)求提交之后,不需要等待1/0讀寫(xiě)操作完成。這樣,1/0記錄讀取器、1/0請(qǐng)求控制器和I/O發(fā)射器不斷循環(huán)執(zhí)行,不停地向系統(tǒng)提交1/0請(qǐng)求。1/0請(qǐng)求發(fā)射之后,linux內(nèi)核的底層通過(guò)一系列的系統(tǒng)調(diào)用,實(shí)現(xiàn)對(duì)磁盤的讀寫(xiě)操作。
[0030]以上對(duì)本發(fā)明及其實(shí)施方式進(jìn)行了描述,該描述沒(méi)有限制性,附圖中所示的也只是本發(fā)明的實(shí)施方式之一,實(shí)際的結(jié)構(gòu)并不局限于此??偠灾绻绢I(lǐng)域的普通技術(shù)人員受其啟示,在不脫離本發(fā)明創(chuàng)造宗旨的情況下,不經(jīng)創(chuàng)造性的設(shè)計(jì)出與該技術(shù)方案相似的結(jié)構(gòu)方式及實(shí)施例,均應(yīng)屬于本發(fā)明的保護(hù)范圍。以上對(duì)本發(fā)明及其實(shí)施方式進(jìn)行了描述,該描述沒(méi)有限制性,附圖中所示的也只是本發(fā)明的實(shí)施方式之一,實(shí)際的結(jié)構(gòu)并不局限于此??偠灾绻绢I(lǐng)域的普通技術(shù)人員受其啟示,在不脫離本發(fā)明創(chuàng)造宗旨的情況下,不經(jīng)創(chuàng)造性的設(shè)計(jì)出與該技術(shù)方案相似的結(jié)構(gòu)方式及實(shí)施例,均應(yīng)屬于本發(fā)明的保護(hù)范圍。
【主權(quán)項(xiàng)】
1.一種塊級(jí)別存儲(chǔ)系統(tǒng)性能測(cè)試工具,包括I/O記錄讀取器、I/O請(qǐng)求控制器、I/O發(fā)射器、結(jié)果收集器和結(jié)果分析器,I/o記錄讀取器將trace文件中的I/O記錄讀取出來(lái),每條I/O記錄的內(nèi)容包括:盤號(hào)、開(kāi)始字節(jié)、訪問(wèn)的字節(jié)總數(shù)、請(qǐng)求開(kāi)始時(shí)間;1/0請(qǐng)求控制器有三個(gè)功能,控制負(fù)載的輕重,跟蹤I/O記錄的狀態(tài)和控制I/O記錄的發(fā)送時(shí)間;1/0發(fā)射器負(fù)責(zé)將I/O請(qǐng)求以異步的方式提交出去,交給系統(tǒng)去處理;結(jié)果收集器在播放I/O記錄過(guò)程中,查看I/O讀寫(xiě)的狀態(tài),當(dāng)I/O讀寫(xiě)完成,則將性能測(cè)試的結(jié)果數(shù)據(jù)收集到結(jié)果文件中。
【專利摘要】本發(fā)明涉及根據(jù)來(lái)自真實(shí)存儲(chǔ)系統(tǒng)的I/O記錄,生成相同的I/O請(qǐng)求負(fù)載,以模擬運(yùn)行環(huán)境的真實(shí)負(fù)載變化,從而達(dá)到對(duì)存儲(chǔ)系統(tǒng)進(jìn)行性能測(cè)試的塊級(jí)別存儲(chǔ)系統(tǒng)性能測(cè)試工具,包括I/O記錄讀取器、I/O請(qǐng)求控制器、I/O發(fā)射器、結(jié)果收集器和結(jié)果分析器,I/O記錄讀取器將trace文件中的I/O記錄讀取出來(lái),每條I/O記錄的內(nèi)容包括:盤號(hào)、開(kāi)始字節(jié)、訪問(wèn)的字節(jié)總數(shù)、請(qǐng)求開(kāi)始時(shí)間;I/O請(qǐng)求控制器有三個(gè)功能,控制負(fù)載的輕重,跟蹤I/O記錄的狀態(tài)和控制I/O記錄的發(fā)送時(shí)間;I/O發(fā)射器負(fù)責(zé)將I/O請(qǐng)求以異步的方式提交出去,交給系統(tǒng)去處理;結(jié)果收集器在播放I/O記錄過(guò)程中,查看I/O讀寫(xiě)的狀態(tài),當(dāng)I/O讀寫(xiě)完成,則將性能測(cè)試的結(jié)果數(shù)據(jù)收集到結(jié)果文件中。
【IPC分類】G06F11/22
【公開(kāi)號(hào)】CN105389237
【申請(qǐng)?zhí)枴緾N201510939261
【發(fā)明人】葛春
【申請(qǐng)人】江蘇辰云信息科技有限公司
【公開(kāi)日】2016年3月9日
【申請(qǐng)日】2015年12月15日