一種輸入輸出io特性分析方法和系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及應(yīng)用程序的存儲技術(shù)領(lǐng)域,尤其涉及一種輸入輸出1特性分析方法和系統(tǒng)。
【背景技術(shù)】
[0002]存儲產(chǎn)品的性能主要是通過對應(yīng)用程序的服務(wù)能力來體現(xiàn)的。這些性能不僅僅與硬件性能的高低和軟件優(yōu)化的好壞相關(guān),更為重要的是針對不同的應(yīng)用環(huán)境,進(jìn)行部署和優(yōu)化。因此優(yōu)化參考的數(shù)據(jù)必須真實(shí)準(zhǔn)確。
[0003]Oracle、Mysql、Exchange等軟件產(chǎn)品,為了保障其系統(tǒng)的性能,也做出一些優(yōu)化設(shè)計(jì)。這種優(yōu)化主要體現(xiàn)在緩沖區(qū)設(shè)計(jì)。緩沖區(qū)可以實(shí)現(xiàn)1聚合等操作。因此如果根據(jù)其數(shù)據(jù)記錄的大小作為單次1的塊大小,是不準(zhǔn)確的。出于數(shù)據(jù)準(zhǔn)確性的考慮,我們需要從塊設(shè)備層分析1的特性。blktrace提供了塊設(shè)備層分析1的功能。blktrace是塊層1路徑監(jiān)控和分析工具,使用它可以深入了解1通路,對監(jiān)控,性能調(diào)優(yōu)都有很大幫助。但blktrace只是對一段時(shí)間內(nèi)塊設(shè)備1信息進(jìn)行了簡單的統(tǒng)計(jì),而我們重點(diǎn)關(guān)注的應(yīng)用1特性,如,1塊大小,讀寫比例,順序隨機(jī)性等方面卻沒有直觀的體現(xiàn)。
【發(fā)明內(nèi)容】
[0004]為了解決上述問題,本發(fā)明提出了一種輸入輸出1特性分析方法和系統(tǒng),能夠準(zhǔn)確獲得經(jīng)過應(yīng)用緩存后的應(yīng)用1的具體特性。
[0005]為了達(dá)到上述目的,本發(fā)明提出了一種輸入輸出1特性分析方法,該方法包括:
[0006]將一個(gè)或多個(gè)1經(jīng)過應(yīng)用緩存后下發(fā)到預(yù)先經(jīng)過分區(qū)的塊設(shè)備中;其中,該塊設(shè)備的每一個(gè)子分區(qū)包括起始扇區(qū)號和扇區(qū)數(shù);每一個(gè)1分別下放到一個(gè)子分區(qū)中。
[0007]通過blktrace監(jiān)控流經(jīng)塊設(shè)備的每個(gè)子分區(qū)中的10,并對每一個(gè)1的狀態(tài)信息進(jìn)行記錄。
[0008]將記錄的1的狀態(tài)信息以預(yù)定義的結(jié)構(gòu)體按照時(shí)間先后順序存儲到全局鏈表中。
[0009]根據(jù)每一個(gè)1占用的起始扇區(qū)號和扇區(qū)數(shù)以及預(yù)定義的結(jié)構(gòu)體對全局鏈表中的1的狀態(tài)信息進(jìn)行分析,獲取1的特性。
[0010]優(yōu)選地,
[0011]1的特性包括:10塊大小、讀寫比例、順序隨機(jī)性和熱點(diǎn)數(shù)據(jù)。
[0012]優(yōu)選地,根據(jù)每一個(gè)1占用的始扇區(qū)號和扇區(qū)數(shù)以及預(yù)定義的結(jié)構(gòu)體對全局鏈表中的1的狀態(tài)信息進(jìn)行分析,獲取1的特性包括:
[0013]在blktrace的預(yù)設(shè)的捕獲時(shí)間段內(nèi),遍歷全局鏈表,獲取全局鏈表中的1的扇區(qū)數(shù),根據(jù)每個(gè)1所占用的扇區(qū)數(shù)計(jì)算1的1塊大小。
[0014]在blktrace的預(yù)設(shè)的捕獲時(shí)間段內(nèi),遍歷全局鏈表,獲取全局鏈表中的1的讀寫屬性,并分別統(tǒng)計(jì)在預(yù)設(shè)的捕獲時(shí)間段內(nèi)的讀操作次數(shù)和寫操作次數(shù),根據(jù)讀操作次數(shù)和寫操作次數(shù)的比值獲得讀寫比例。
[0015]在blktrace的預(yù)設(shè)的捕獲時(shí)間段內(nèi),遍歷全局鏈表,獲取全局鏈表中以預(yù)定義的結(jié)構(gòu)體按照時(shí)間先后順序存儲的1的起始扇區(qū)號和扇區(qū)數(shù),并計(jì)算每個(gè)1的起始扇區(qū)號和扇區(qū)數(shù)之和,當(dāng)每個(gè)1的起始扇區(qū)號和扇區(qū)數(shù)之和等于下一個(gè)1的起始扇區(qū)號時(shí),確定全局鏈表中的1的特性為順序性;當(dāng)每個(gè)1的起始扇區(qū)號和扇區(qū)數(shù)之和不等于下一個(gè)1的起始扇區(qū)號時(shí),確定全局鏈表中的1的特性為隨機(jī)性。
[0016]在blktrace的預(yù)設(shè)的捕獲時(shí)間段內(nèi),遍歷全局鏈表,獲取全局鏈表中的1的起始扇區(qū)號,并記錄每個(gè)起始扇區(qū)號的出現(xiàn)頻率,將出現(xiàn)頻率最高的起始扇區(qū)號對應(yīng)的1的1數(shù)據(jù)確定為熱點(diǎn)數(shù)據(jù),將出現(xiàn)頻率最低的起始扇區(qū)號對應(yīng)的1的1數(shù)據(jù)確定為冷數(shù)據(jù)。
[0017]優(yōu)選地,
[0018]根據(jù)每個(gè)1所占用的扇區(qū)數(shù)計(jì)算1的1塊大小包括:根據(jù)以下等式計(jì)算1的1塊大小:
[0019]1 塊大小=num_of_block*M
[0020]其中,num_of_block為扇區(qū)數(shù),M為一個(gè)扇區(qū)的大小。
[0021 ] 優(yōu)選地,該方法還包括:
[0022]在預(yù)設(shè)捕獲時(shí)間段內(nèi),根據(jù)1所占用的扇區(qū)數(shù)計(jì)算1的1塊大小后,根據(jù)計(jì)算出的1塊大小獲取1塊大小的取值范圍,根據(jù)取值范圍和預(yù)設(shè)的權(quán)重確定規(guī)則確定每個(gè)1塊大小的權(quán)重。
[0023]為了達(dá)到上述目的,本發(fā)明還提出了一種輸入輸出1特性分析系統(tǒng),該系統(tǒng)包括:下發(fā)模塊、監(jiān)控模塊、存儲模塊和分析模塊。
[0024]下發(fā)模塊,用于將一個(gè)或多個(gè)1經(jīng)過應(yīng)用緩存后下發(fā)到預(yù)先經(jīng)過分區(qū)的塊設(shè)備中;其中,塊設(shè)備的每一個(gè)子分區(qū)包括起始扇區(qū)號和扇區(qū)數(shù);每一個(gè)1分別下放到一個(gè)子分區(qū)中。
[0025]監(jiān)控模塊,用于通過blktrace監(jiān)控流經(jīng)塊設(shè)備的每個(gè)子分區(qū)中的10,并對每一個(gè)1的狀態(tài)信息進(jìn)行記錄。
[0026]存儲模塊,用于將記錄的1的狀態(tài)信息以預(yù)定義的結(jié)構(gòu)體按照時(shí)間先后順序存儲到全局鏈表中。
[0027]分析模塊,用于根據(jù)每一個(gè)1占用的起始扇區(qū)號和扇區(qū)數(shù)以及預(yù)定義的結(jié)構(gòu)體對全局鏈表中的1的狀態(tài)信息進(jìn)行分析,獲取1的特性。
[0028]優(yōu)選地,
[0029]1的特性包括:10塊大小、讀寫比例、順序隨機(jī)性和熱點(diǎn)數(shù)據(jù)。
[0030]優(yōu)選地,分析模塊根據(jù)每一個(gè)1占用的始扇區(qū)號和扇區(qū)數(shù)以及預(yù)定義的結(jié)構(gòu)體對全局鏈表中的1的狀態(tài)信息進(jìn)行分析,獲取1的特性是指:
[0031]在blktrace的預(yù)設(shè)的捕獲時(shí)間段內(nèi),遍歷全局鏈表,獲取全局鏈表中的1的扇區(qū)數(shù),根據(jù)每個(gè)1所占用的扇區(qū)數(shù)計(jì)算1的1塊大小。
[0032]在blktrace的預(yù)設(shè)的捕獲時(shí)間段內(nèi),遍歷全局鏈表,獲取全局鏈表中的1的讀寫屬性,并分別統(tǒng)計(jì)在預(yù)設(shè)的捕獲時(shí)間段內(nèi)的讀操作次數(shù)和寫操作次數(shù),根據(jù)讀操作次數(shù)和寫操作次數(shù)的比值獲得讀寫比例。
[0033]在blktrace的預(yù)設(shè)的捕獲時(shí)間段內(nèi),遍歷全局鏈表,獲取全局鏈表中以預(yù)定義的結(jié)構(gòu)體按照時(shí)間先后順序存儲的1的起始扇區(qū)號和扇區(qū)數(shù),并計(jì)算每個(gè)1的起始扇區(qū)號和扇區(qū)數(shù)之和,當(dāng)每個(gè)1的起始扇區(qū)號和扇區(qū)數(shù)之和等于下一個(gè)1的起始扇區(qū)號時(shí),確定全局鏈表中的1特定為順序性;當(dāng)每個(gè)1的起始扇區(qū)號和扇區(qū)數(shù)之和不等于下一個(gè)1的起始扇區(qū)號時(shí),確定全局鏈表中的1特定為隨機(jī)性。
[0034]在blktrace的預(yù)設(shè)的捕獲時(shí)間段內(nèi),遍歷全局鏈表,獲取全局鏈表中的1的起始扇區(qū)號,并記錄每個(gè)起始扇區(qū)號的出現(xiàn)頻率,將出現(xiàn)頻率最高的起始扇區(qū)號對應(yīng)的1的1數(shù)據(jù)確定為熱點(diǎn)數(shù)據(jù),將出現(xiàn)頻率最低的起始扇區(qū)號對應(yīng)的1的1數(shù)據(jù)確定為冷數(shù)據(jù)。
[0035]優(yōu)選地,
[0036]分析模塊根據(jù)每個(gè)1所占用的扇區(qū)數(shù)計(jì)算1的1塊大小包括:根據(jù)以下等式計(jì)算1的1塊大小:
[0037]1 塊大小=num_of_block*M
[0038]其中,num_of_block為扇區(qū)數(shù),M為一個(gè)扇區(qū)的大小。
[0039]優(yōu)選地,分析模塊還用于:
[0040]在預(yù)設(shè)捕獲時(shí)間段內(nèi),根據(jù)1所占用的扇區(qū)數(shù)計(jì)算1的1塊大小后,根據(jù)計(jì)算出的1塊大小獲取1塊大小的取值范圍,根據(jù)取值范圍和預(yù)設(shè)的權(quán)重確定規(guī)則確定每個(gè)1塊大小的權(quán)重。
[0041]與現(xiàn)有技術(shù)相比,本發(fā)明包括:將一個(gè)或多個(gè)1經(jīng)過應(yīng)用緩存后下發(fā)到預(yù)先經(jīng)過分區(qū)的塊設(shè)備中;其中,該塊設(shè)備的每一個(gè)子分區(qū)包括起始扇區(qū)號和扇區(qū)數(shù);每一個(gè)1分別下放到一個(gè)子分區(qū)中。通過blktrace監(jiān)控流經(jīng)塊設(shè)備的每個(gè)子分區(qū)中的10,并對每一個(gè)1的狀態(tài)信息進(jìn)行記錄。將記錄的1的狀態(tài)信息以預(yù)定義的結(jié)構(gòu)體按照時(shí)間先后順序存儲到全局鏈表中。根據(jù)每一個(gè)1占用的起始扇區(qū)號和扇區(qū)數(shù)以及預(yù)定義的結(jié)構(gòu)體對全局鏈表中的1