亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種隨機(jī)訪問(wèn)識(shí)別方法及系統(tǒng)與流程

文檔序號(hào):11285644閱讀:329來(lái)源:國(guó)知局
一種隨機(jī)訪問(wèn)識(shí)別方法及系統(tǒng)與流程

本發(fā)明屬于高性能計(jì)算中的輸入/輸出(input/output,i/o)子系統(tǒng)領(lǐng)域,更具體地,涉及一種隨機(jī)訪問(wèn)識(shí)別方法及系統(tǒng)。



背景技術(shù):

高性能計(jì)算(highperformancecomputing,hpc)朝著百億億次級(jí)發(fā)展時(shí),i/o性能仍然是一個(gè)主要的瓶頸,尤其是在數(shù)據(jù)密集型的科學(xué)應(yīng)用中體現(xiàn)得非常明顯。當(dāng)前大多數(shù)領(lǐng)域,如氣象領(lǐng)域、物理領(lǐng)域、地球科學(xué)領(lǐng)域等,這些領(lǐng)域的應(yīng)用主要包括數(shù)據(jù)模擬。這種以數(shù)據(jù)模擬為主的應(yīng)用通常會(huì)階段性地向并行文件系統(tǒng)輸出大量中間結(jié)果或者周期性地寫(xiě)檢查點(diǎn)文件。這種應(yīng)用特征會(huì)產(chǎn)生大量的寫(xiě)請(qǐng)求,并且這種周期性的寫(xiě)請(qǐng)求會(huì)給文件系統(tǒng)帶來(lái)巨大壓力。

與此同時(shí),以機(jī)械硬盤(pán)(harddiskdrive,hdd)為主的存儲(chǔ)介質(zhì),由于其大容量,低廉的價(jià)格以及在訪問(wèn)大塊連續(xù)數(shù)據(jù)時(shí)較高的帶寬等特點(diǎn),通常被高性能計(jì)算機(jī)系統(tǒng)作為主要的存儲(chǔ)設(shè)備。新型的存儲(chǔ)設(shè)備固態(tài)硬盤(pán)(solidstatedrives,ssd)由于其幾乎為0的訪問(wèn)延遲以及對(duì)隨機(jī)訪問(wèn)不敏感等特性,已經(jīng)被廣泛應(yīng)用在高性能計(jì)算環(huán)境當(dāng)中。但由于計(jì)算能力激增而導(dǎo)致的數(shù)據(jù)量爆發(fā)性增長(zhǎng),使用ssd作為主要存儲(chǔ)介質(zhì)依然代價(jià)高昂。并且由于ssd的寫(xiě)入次數(shù)有限等缺點(diǎn)也使其無(wú)法作為穩(wěn)定的主要存儲(chǔ)介質(zhì),因此當(dāng)前的主流做法依然是使用ssd和hdd結(jié)合的混合存儲(chǔ)方案。

一方面,針對(duì)科學(xué)應(yīng)用的i/o瓶頸問(wèn)題,尤其是寫(xiě)性能瓶頸,一種被稱(chēng)為突發(fā)緩沖(burstbuffer)的混合存儲(chǔ)方案被提出。burstbuffer使用ssd作為hdd的緩沖,來(lái)處理突發(fā)的寫(xiě)請(qǐng)求,解決中間結(jié)果的快速寫(xiě)出問(wèn)題。在burstbuffer的設(shè)計(jì)中,數(shù)據(jù)首先被寫(xiě)入到快速的設(shè)備,如ssd中,并在隨后的計(jì)算階段被刷新到慢速的設(shè)備,如hdd中。但是burstbuffer依然存在弊端:不甄別地緩沖所有中間數(shù)據(jù),沒(méi)有充分利用ssd和hdd的各自的優(yōu)勢(shì),在高性能計(jì)算應(yīng)用規(guī)模增長(zhǎng),數(shù)據(jù)量激增的趨勢(shì)下,緩沖所有數(shù)據(jù)會(huì)導(dǎo)致出現(xiàn)ssd容量不足的情況或者為了能容納所有的中間數(shù)據(jù)使用大量的ssd而極大地增加系統(tǒng)建造成本。

另一方面,現(xiàn)有的高性能計(jì)算領(lǐng)域隨機(jī)請(qǐng)求識(shí)別方法都是在客戶(hù)端以進(jìn)程為粒度進(jìn)行隨機(jī)請(qǐng)求識(shí)別。這種以進(jìn)程為粒度的識(shí)別方法存在的缺陷是只能從單個(gè)進(jìn)程的視圖識(shí)別某一個(gè)階段的i/o請(qǐng)求之間的順序性/隨機(jī)性。然而隨著高性能計(jì)算集群的規(guī)模以及應(yīng)用并發(fā)規(guī)模的增長(zhǎng),很多訪問(wèn)模式都會(huì)導(dǎo)致隨機(jī)訪問(wèn)的發(fā)生。例如,當(dāng)客戶(hù)端進(jìn)程的數(shù)目遠(yuǎn)大于數(shù)據(jù)服務(wù)器的數(shù)量時(shí),會(huì)導(dǎo)致大量進(jìn)程同時(shí)訪問(wèn)一個(gè)或者少數(shù)幾個(gè)數(shù)據(jù)節(jié)點(diǎn)的情況,這些進(jìn)程之間的競(jìng)爭(zhēng)會(huì)導(dǎo)致數(shù)據(jù)節(jié)點(diǎn)的磁頭來(lái)回移動(dòng),依然會(huì)導(dǎo)致隨機(jī)訪問(wèn)的產(chǎn)生。此時(shí)從每個(gè)進(jìn)程的視圖來(lái)看,其所訪問(wèn)的請(qǐng)求依然是連續(xù)的,而在數(shù)據(jù)節(jié)點(diǎn)的訪問(wèn)順序卻是隨機(jī)的,顯然以進(jìn)程為粒度的隨機(jī)識(shí)別方法無(wú)法識(shí)別這種情況下的隨機(jī)訪問(wèn)。

同時(shí)現(xiàn)有技術(shù)并未考慮針對(duì)多個(gè)文件的請(qǐng)求的處理,不同文件中,請(qǐng)求的原始偏移地址可能是相同的,當(dāng)不同文件中的請(qǐng)求同時(shí)到達(dá)數(shù)據(jù)節(jié)點(diǎn)時(shí),若不考慮不同文件的差別,將會(huì)造成識(shí)別有誤。

綜上,現(xiàn)有隨機(jī)訪問(wèn)識(shí)別方法以客戶(hù)端的單個(gè)進(jìn)程為粒度,且并未考慮多個(gè)文件的情況,不能準(zhǔn)確反映數(shù)達(dá)到據(jù)節(jié)點(diǎn)后請(qǐng)求的隨機(jī)性,以及現(xiàn)有技術(shù)不甄別地緩沖所有中間數(shù)據(jù),沒(méi)有充分利用ssd和hdd的各自的優(yōu)勢(shì)。



技術(shù)實(shí)現(xiàn)要素:

針對(duì)現(xiàn)有技術(shù)的缺陷,本發(fā)明的目的在于解決現(xiàn)有技術(shù)以客戶(hù)端的單個(gè)進(jìn)程為粒度,且并未考慮多個(gè)文件的情況,不能準(zhǔn)確反映數(shù)達(dá)到據(jù)節(jié)點(diǎn)后請(qǐng)求的隨機(jī)性的技術(shù)問(wèn)題。

為實(shí)現(xiàn)上述目的,第一方面,本發(fā)明提供了一種隨機(jī)訪問(wèn)識(shí)別方法,該方法包括以下步驟:確定n個(gè)文件的請(qǐng)求組成的請(qǐng)求集合;第k個(gè)文件包括mk個(gè)請(qǐng)求,每個(gè)請(qǐng)求對(duì)應(yīng)其原始偏移地址信息和請(qǐng)求大小信息;根據(jù)第k個(gè)文件包括mk個(gè)請(qǐng)求中每個(gè)請(qǐng)求的原始偏移地址信息和請(qǐng)求大小信息確定第k個(gè)文件的隨機(jī)性tk;根據(jù)每個(gè)文件的隨機(jī)性,確定請(qǐng)求集合的隨機(jī)性;根據(jù)請(qǐng)求集合的隨機(jī)性和當(dāng)前數(shù)據(jù)流向,確定將請(qǐng)求集合定位到機(jī)械硬盤(pán)hdd或固態(tài)硬盤(pán)ssd中的一個(gè),其中,當(dāng)前數(shù)據(jù)流向指的是當(dāng)前數(shù)據(jù)正在被寫(xiě)入hdd或sdd中的一個(gè),將請(qǐng)求集合定位到hdd或sdd中的一個(gè),指的是將請(qǐng)求集合中每個(gè)請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)寫(xiě)入hdd或sdd中的一個(gè);其中,n為文件的總數(shù)目,n為正整數(shù),k為文件的序號(hào)數(shù),1≤k≤n,k為正整數(shù),mk為第k個(gè)文件包括的請(qǐng)求數(shù)目,mk為正整數(shù)。

其中,上述n個(gè)文件以及n個(gè)文件包括的請(qǐng)求來(lái)自至少一個(gè)進(jìn)程,至少一個(gè)進(jìn)程來(lái)自至少一個(gè)客戶(hù)端。

本發(fā)明實(shí)施例通過(guò)將來(lái)自不同進(jìn)程的請(qǐng)求組織成請(qǐng)求集合,請(qǐng)求集合中分別對(duì)應(yīng)不同文件的“請(qǐng)求流”,可以判斷出單個(gè)進(jìn)程中某一個(gè)階段的i/o請(qǐng)求之間的隨機(jī)性以及多個(gè)進(jìn)程之間由于競(jìng)爭(zhēng)引起的隨機(jī)訪問(wèn)。使用快速設(shè)備ssd緩沖隨機(jī)請(qǐng)求可以使隨機(jī)請(qǐng)求得到快速處理且有效減少隨機(jī)訪問(wèn)在hdd中引起的尋道延遲。

本發(fā)明實(shí)施例克服了傳統(tǒng)方法在客戶(hù)端以進(jìn)程為粒度來(lái)識(shí)別隨機(jī)訪問(wèn)的缺陷,能夠準(zhǔn)確識(shí)別由多種訪問(wèn)模式導(dǎo)致的隨機(jī)訪問(wèn)問(wèn)題。

在一個(gè)可選的實(shí)施例中,根據(jù)每個(gè)文件的隨機(jī)性,確定請(qǐng)求集合的隨機(jī)性,通過(guò)以下公式得到:其中,s為請(qǐng)求集合的隨機(jī)性。

具體地,本發(fā)明實(shí)施例考慮不同文件,可以綜合全面考慮某一個(gè)階段不同進(jìn)程組成的請(qǐng)求集合的隨機(jī)性。分別考慮不同文件的隨機(jī)性以及不同文件組成的請(qǐng)求集合的隨機(jī)性,提高了請(qǐng)求集合隨機(jī)性計(jì)算的準(zhǔn)確性。

在一個(gè)可選的實(shí)施例中,根據(jù)第k個(gè)文件包括mk個(gè)請(qǐng)求中每個(gè)請(qǐng)求的原始偏移地址信息和請(qǐng)求大小信息確定第k個(gè)文件的隨機(jī)性tk,包括:將mk個(gè)請(qǐng)求按照原始偏移地址進(jìn)行從小到大排序;根據(jù)每個(gè)請(qǐng)求的原始偏移地址信息和請(qǐng)求大小信息確定排序后的mk個(gè)請(qǐng)求中相鄰兩個(gè)請(qǐng)求的隨機(jī)因子;根據(jù)排序后的mk個(gè)請(qǐng)求中相鄰兩個(gè)請(qǐng)求的隨機(jī)因子,確定第k個(gè)文件的隨機(jī)性tk。

具體地,通過(guò)排序操作可以模擬出完全公平調(diào)度器(completelyfairqueuing,cfq)調(diào)度器的對(duì)請(qǐng)求做出的排序優(yōu)化,篩選出無(wú)法被cfq調(diào)度器優(yōu)化的請(qǐng)求,即真正引起hdd隨機(jī)訪問(wèn)的請(qǐng)求。

在一個(gè)可選的實(shí)施例中,根據(jù)每個(gè)請(qǐng)求的原始偏移地址信息和請(qǐng)求大小信息確定排序后的mk個(gè)請(qǐng)求中相鄰兩個(gè)請(qǐng)求的隨機(jī)因子,包括:若排序后的mk個(gè)請(qǐng)求的相鄰兩個(gè)請(qǐng)求中,前一個(gè)請(qǐng)求的原始偏移地址與后一個(gè)請(qǐng)求的原始偏移地址之差等于前一個(gè)請(qǐng)求的請(qǐng)求大小,則將相鄰兩個(gè)請(qǐng)求的隨機(jī)因子為0,否則為1。

具體地,通過(guò)計(jì)算隨機(jī)因子可以模擬出cfq調(diào)度器的對(duì)請(qǐng)求做出的合并優(yōu)化,即如果兩個(gè)請(qǐng)求的偏移地址是臨接的,那兩個(gè)請(qǐng)求之間的尋道延遲是0,反之如果不臨接,磁盤(pán)就需要重新尋道,產(chǎn)生尋道延遲。

在一個(gè)可選的實(shí)施例中,根據(jù)排序后的mk個(gè)請(qǐng)求中相鄰兩個(gè)請(qǐng)求的隨機(jī)因子,確定第k個(gè)文件的隨機(jī)性tk,通過(guò)以下公式得到:其中,rf為排序后的mk個(gè)請(qǐng)求中相鄰兩個(gè)請(qǐng)求的隨機(jī)因子,mk-1為mk個(gè)請(qǐng)求中相鄰請(qǐng)求的總數(shù)目,i為mk-1個(gè)相鄰請(qǐng)求中每個(gè)相鄰請(qǐng)求的序號(hào)。

具體地,現(xiàn)有技術(shù)計(jì)算每個(gè)請(qǐng)求的隨機(jī)性,針對(duì)每個(gè)請(qǐng)求的隨機(jī)性判斷將該請(qǐng)求定位到相應(yīng)的ssd或hdd,其缺點(diǎn)是由于單個(gè)請(qǐng)求在到達(dá)具體存儲(chǔ)設(shè)備之前會(huì)經(jīng)過(guò)多層軟件棧,其順序和大小可能因?yàn)榕判蚝秃喜⒉僮鞫桓淖?,因此不夠?zhǔn)確。本申請(qǐng)對(duì)每個(gè)文件中的請(qǐng)求組織成相應(yīng)的“請(qǐng)求流”;計(jì)算該請(qǐng)求流的隨機(jī)性,可以模擬出底層調(diào)度器對(duì)請(qǐng)求可能做出的排序和合并優(yōu)化,篩選出真正引起hdd隨機(jī)訪問(wèn)的請(qǐng)求。另外,由于請(qǐng)求集合中的請(qǐng)求來(lái)自于不同的進(jìn)程,可以識(shí)別出由于進(jìn)程之間競(jìng)爭(zhēng)引起的隨機(jī)訪問(wèn)。

其中,每個(gè)文件對(duì)應(yīng)的“請(qǐng)求流”組成請(qǐng)求集合。

在一個(gè)可選的實(shí)施例中,采用自平衡二叉查找樹(shù)avl結(jié)構(gòu)管理緩存在ssd中的數(shù)據(jù),每個(gè)avl樹(shù)的節(jié)點(diǎn)對(duì)應(yīng)一個(gè)請(qǐng)求,每個(gè)節(jié)點(diǎn)的內(nèi)容包括:請(qǐng)求的原始偏移地址信息、請(qǐng)求在ssd緩沖區(qū)的偏移地址信息以及請(qǐng)求的大小信息,avl樹(shù)的節(jié)點(diǎn)按照請(qǐng)求的原始偏移地址進(jìn)行排序。緩沖請(qǐng)求的同時(shí),根據(jù)請(qǐng)求所在的文件查找對(duì)應(yīng)的avl樹(shù),插入對(duì)應(yīng)的節(jié)點(diǎn)并更新avl樹(shù)。刷新數(shù)據(jù)的過(guò)程中,中序遍歷對(duì)應(yīng)的avl樹(shù),根據(jù)節(jié)點(diǎn)對(duì)應(yīng)的請(qǐng)求在ssd緩沖區(qū)的偏移地址信息和請(qǐng)求大小信息從ssd中讀取相應(yīng)的數(shù)據(jù),根據(jù)請(qǐng)求的原始偏移地址信息和請(qǐng)求大小信息將相應(yīng)的數(shù)據(jù)寫(xiě)入到hdd。

具體地,通過(guò)avl樹(shù)維護(hù)數(shù)據(jù)刷新過(guò)程中的順序性和正確性,通過(guò)中序遍歷avl樹(shù)來(lái)恢復(fù)數(shù)據(jù)原來(lái)的順序,使數(shù)據(jù)被順序回寫(xiě)到hdd中,保證性能的同時(shí)避免額外的排序工作。

在一個(gè)可選的實(shí)施例中,根據(jù)請(qǐng)求集合的隨機(jī)性和當(dāng)前數(shù)據(jù)流向,確定將請(qǐng)求集合定位到hdd或ssd中的一個(gè),包括:若當(dāng)前數(shù)據(jù)正在被寫(xiě)入hdd中,且請(qǐng)求集合的隨機(jī)性大于預(yù)設(shè)第一閾值,則將請(qǐng)求集合定位到ssd中,否則定位到hdd中;若當(dāng)前數(shù)據(jù)正在被寫(xiě)入ssd中,且請(qǐng)求集合的隨機(jī)性小于預(yù)設(shè)第二閾值,則將請(qǐng)求集合定位到hdd中,否則定位到ssd中;第二閾值小于第一閾值。

具體地,通過(guò)第一閾值和第二閾值可以使數(shù)據(jù)的流向會(huì)在某一個(gè)狀態(tài)維持一段時(shí)間,從而避免數(shù)據(jù)流向的頻繁變化,保護(hù)數(shù)據(jù)的空間局部性,例如,只有足夠的隨機(jī)數(shù)據(jù)被緩沖到ssd中時(shí),數(shù)據(jù)在經(jīng)過(guò)排序后刷新到hdd時(shí)的空間局部性和性能才會(huì)更好。

在一個(gè)可選的實(shí)施例中,ssd劃分為兩個(gè)塊ssd1、ssd2;若ssd1被寫(xiě)滿(mǎn),則將請(qǐng)求集合定位到ssd2,同時(shí)將ssd1的數(shù)據(jù)刷新到hdd,在ssd1的數(shù)據(jù)刷新結(jié)束之后,新的數(shù)據(jù)被寫(xiě)入ssd1;若ssd2被寫(xiě)滿(mǎn),則將請(qǐng)求集合定位到ssd1,同時(shí)將ssd2的數(shù)據(jù)刷新到hdd,在ssd2的數(shù)據(jù)刷新結(jié)束之后,新的數(shù)據(jù)被寫(xiě)入ssd2。

具體地,通過(guò)將ssd分塊以及流水線式管理緩沖與刷新過(guò)程,可以避免在ssd空間占滿(mǎn)之后,余下的隨機(jī)請(qǐng)求無(wú)法被緩沖到ssd的情況,即保證系統(tǒng)有空余的ssd空間來(lái)緩沖隨機(jī)請(qǐng)求。上述管理模式也可稱(chēng)為雙緩沖流水線模式。

第二方面,本發(fā)明提供了一種隨機(jī)訪問(wèn)識(shí)別系統(tǒng),該系統(tǒng)包括:確定模塊,用于確定n個(gè)文件的請(qǐng)求組成的請(qǐng)求集合;第k個(gè)文件包括mk個(gè)請(qǐng)求,每個(gè)請(qǐng)求對(duì)應(yīng)其原始偏移地址信息和請(qǐng)求大小信息;隨機(jī)性計(jì)算模塊,用于根據(jù)第k個(gè)文件包括mk個(gè)請(qǐng)求中每個(gè)請(qǐng)求的原始偏移地址信息和請(qǐng)求大小信息確定第k個(gè)文件的隨機(jī)性tk;隨機(jī)性計(jì)算模塊,還用于根據(jù)每個(gè)文件的隨機(jī)性,確定請(qǐng)求集合的隨機(jī)性;定位模塊,用于根據(jù)請(qǐng)求集合的隨機(jī)性和當(dāng)前數(shù)據(jù)流向,確定將請(qǐng)求集合定位到機(jī)械硬盤(pán)hdd或固態(tài)硬盤(pán)ssd中的一個(gè),其中,當(dāng)前數(shù)據(jù)流向指的是當(dāng)前數(shù)據(jù)正在被寫(xiě)入hdd或sdd中的一個(gè)。其中,n為文件的總數(shù)目,n為正整數(shù),k為文件的序號(hào)數(shù),1≤k≤n,k為正整數(shù),mk為第k個(gè)文件包括的請(qǐng)求數(shù)目,mk為正整數(shù)。

在一個(gè)可選的實(shí)施例中,隨機(jī)性計(jì)算模塊,具體用于將mk個(gè)請(qǐng)求按照原始偏移地址進(jìn)行從小到大排序;根據(jù)每個(gè)請(qǐng)求的原始偏移地址信息和請(qǐng)求大小信息確定排序后的mk個(gè)請(qǐng)求中相鄰兩個(gè)請(qǐng)求的隨機(jī)因子;根據(jù)排序后的mk個(gè)請(qǐng)求中相鄰兩個(gè)請(qǐng)求的隨機(jī)因子,確定第k個(gè)文件的隨機(jī)性tk。

總體而言,通過(guò)本發(fā)明所構(gòu)思的以上技術(shù)方案與現(xiàn)有技術(shù)相比,具有以下有益效果:

(1)本發(fā)明實(shí)施例從i/o節(jié)點(diǎn)獲取請(qǐng)求組成的請(qǐng)求集合,請(qǐng)求的到達(dá)順序能夠更真實(shí)地反映出磁盤(pán)的i/o情況。不同于在客戶(hù)端以進(jìn)程為粒度來(lái)識(shí)別隨機(jī)請(qǐng)求,由于數(shù)據(jù)來(lái)源于不同的進(jìn)程,能夠從一個(gè)全局的視角反應(yīng)出高性能計(jì)算領(lǐng)域中由多種訪問(wèn)模式導(dǎo)致的隨機(jī)訪問(wèn)問(wèn)題,并且該方法可以移植到其他并行文件系統(tǒng)之中,具有很強(qiáng)的通用性。

(2)本發(fā)明實(shí)施例將不同文件的請(qǐng)求分開(kāi),分別考慮不同文件的隨機(jī)性以及不同文件組成的請(qǐng)求集合的隨機(jī)性,提高了請(qǐng)求集合隨機(jī)性計(jì)算的準(zhǔn)確性。

(3)本發(fā)明實(shí)施例定向模塊中的閾值設(shè)定是可配置的參數(shù),可以根據(jù)不同的應(yīng)用在不同實(shí)際生產(chǎn)環(huán)境中進(jìn)行調(diào)優(yōu),具有很強(qiáng)的靈活性。

(4)本發(fā)明實(shí)施例選擇性地緩沖請(qǐng)求對(duì)應(yīng)的隨機(jī)數(shù)據(jù),充分發(fā)揮了ssd和hdd各自的優(yōu)勢(shì),節(jié)約ssd空間。采用雙緩沖流水線模式并行地管理數(shù)據(jù)緩沖過(guò)程和數(shù)據(jù)刷新過(guò)程,能夠保證ssd的空間保持在一個(gè)可用的范圍,即使ssd總?cè)萘啃∮跀?shù)據(jù)總量依然可以緩沖數(shù)據(jù),提升系統(tǒng)的性能,降低了系統(tǒng)構(gòu)建成本。

附圖說(shuō)明

圖1為本發(fā)明實(shí)施例提供的隨機(jī)訪問(wèn)識(shí)別方法流程示意圖;

圖2為本發(fā)明實(shí)施例提供的隨機(jī)性計(jì)算方法流程示意圖;

圖3為本發(fā)明實(shí)施例n個(gè)文件對(duì)應(yīng)的隨機(jī)訪問(wèn)示意圖;

圖4為本發(fā)明實(shí)施例提供的隨機(jī)訪問(wèn)識(shí)別系統(tǒng)結(jié)構(gòu)圖。

具體實(shí)施方式

為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。

圖1為本發(fā)明實(shí)施例提供的隨機(jī)訪問(wèn)識(shí)別方法流程示意圖,該方法包括步驟s101至步驟s104。

在步驟s101,確定n個(gè)文件的請(qǐng)求組成的請(qǐng)求集合;第k個(gè)文件包括mk個(gè)請(qǐng)求,每個(gè)請(qǐng)求對(duì)應(yīng)其原始偏移地址信息和請(qǐng)求大小信息。

其中,n為文件的總數(shù)目,n為正整數(shù),k為文件的序號(hào)數(shù),1≤k≤n,k為正整數(shù),mk為第k個(gè)文件包括的請(qǐng)求數(shù)目,mk為正整數(shù)。

其中,可設(shè)每個(gè)文件的請(qǐng)求組成的相應(yīng)的“請(qǐng)求流”。

在步驟s102,根據(jù)第k個(gè)文件包括mk個(gè)請(qǐng)求中每個(gè)請(qǐng)求的原始偏移地址信息和請(qǐng)求大小信息確定第k個(gè)文件的隨機(jī)性tk。

其中,可設(shè)第k個(gè)文件的隨機(jī)性tk為第k個(gè)文件中請(qǐng)求組成的“請(qǐng)求流”的隨機(jī)性。

將mk個(gè)請(qǐng)求按照原始偏移地址進(jìn)行從小到大排序;根據(jù)每個(gè)請(qǐng)求的原始偏移地址信息和請(qǐng)求大小信息確定排序后的mk個(gè)請(qǐng)求中相鄰兩個(gè)請(qǐng)求的隨機(jī)因子;根據(jù)排序后的mk個(gè)請(qǐng)求中相鄰兩個(gè)請(qǐng)求的隨機(jī)因子,確定第k個(gè)文件的隨機(jī)性tk

若排序后的mk個(gè)請(qǐng)求的相鄰兩個(gè)請(qǐng)求中,前一個(gè)請(qǐng)求的原始偏移地址與后一個(gè)請(qǐng)求的原始偏移地址之差等于前一個(gè)請(qǐng)求的請(qǐng)求大小,則將相鄰兩個(gè)請(qǐng)求的隨機(jī)因子為0,否則為1。

具體地,通過(guò)排序操作可以模擬出cfq調(diào)度器的對(duì)請(qǐng)求做出的排序優(yōu)化,篩選出無(wú)法被cfq調(diào)度器優(yōu)化的請(qǐng)求,即真正引起hdd隨機(jī)訪問(wèn)的請(qǐng)求。通過(guò)計(jì)算隨機(jī)因子可以模擬出cfq調(diào)度器的對(duì)請(qǐng)求做出的合并優(yōu)化,即如果兩個(gè)請(qǐng)求的偏移地址是臨接的,那兩個(gè)請(qǐng)求之間的尋道延遲是0,反之如果不臨接,磁盤(pán)就需要重新尋道,產(chǎn)生尋道延遲。

在一個(gè)可選的實(shí)施例中,根據(jù)排序后的mk個(gè)請(qǐng)求中相鄰兩個(gè)請(qǐng)求的隨機(jī)因子,確定第k個(gè)文件的隨機(jī)性tk,通過(guò)以下公式得到:其中,rf為排序后的mk個(gè)請(qǐng)求中相鄰兩個(gè)請(qǐng)求的隨機(jī)因子,mk-1為mk個(gè)請(qǐng)求中相鄰請(qǐng)求的總數(shù)目,i為mk-1個(gè)相鄰請(qǐng)求中每個(gè)相鄰請(qǐng)求的序號(hào)。

在步驟s103,根據(jù)每個(gè)文件的隨機(jī)性,確定請(qǐng)求集合的隨機(jī)性。

其中,s為請(qǐng)求集合的隨機(jī)性。

由于不同文件包括的請(qǐng)求的原始偏移地址可能相同,若不在請(qǐng)求集合中將不同文件的“請(qǐng)求流”分開(kāi)考慮隨機(jī)性,則可能會(huì)引起隨機(jī)性計(jì)算的不準(zhǔn)確,影響i/o性能。

在步驟s104,根據(jù)請(qǐng)求集合的隨機(jī)性和當(dāng)前數(shù)據(jù)流向,確定將請(qǐng)求集合定位到hdd或ssd中的一個(gè),其中,當(dāng)前數(shù)據(jù)流向指的是當(dāng)前數(shù)據(jù)正在被寫(xiě)入hdd或sdd中的一個(gè),將請(qǐng)求集合定位到hdd或sdd中的一個(gè),指的是將請(qǐng)求集合中每個(gè)請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)寫(xiě)入hdd或sdd中的一個(gè)。

本發(fā)明實(shí)施例通過(guò)將來(lái)自不同進(jìn)程的請(qǐng)求組織成請(qǐng)求集合,請(qǐng)求集合中分別對(duì)應(yīng)不同文件的“請(qǐng)求流”,可以判斷出單個(gè)進(jìn)程中某一個(gè)階段的i/o請(qǐng)求之間的隨機(jī)性以及多個(gè)進(jìn)程之間由于競(jìng)爭(zhēng)引起的隨機(jī)訪問(wèn)。使用快速設(shè)備ssd緩沖隨機(jī)請(qǐng)求可以使隨機(jī)請(qǐng)求得到快速處理且有效減少隨機(jī)訪問(wèn)在hdd中引起的尋道延遲。

本發(fā)明實(shí)施例克服了傳統(tǒng)方法在客戶(hù)端以進(jìn)程為粒度來(lái)識(shí)別隨機(jī)訪問(wèn)的缺陷,能夠準(zhǔn)確識(shí)別由多種訪問(wèn)模式導(dǎo)致的隨機(jī)訪問(wèn)問(wèn)題。

相應(yīng)地,圖2為本發(fā)明實(shí)施例提供的隨機(jī)性計(jì)算方法流程示意圖。如圖2所示,包括步驟s201至步驟s202。

其中,圖2以單個(gè)文件的請(qǐng)求組成的“請(qǐng)求流”為例,進(jìn)行說(shuō)明。

在步驟s201,在數(shù)據(jù)節(jié)點(diǎn)進(jìn)行同一文件請(qǐng)求的元數(shù)據(jù)收集與組織,請(qǐng)求的元數(shù)據(jù)收集包括記錄請(qǐng)求的原始偏移地址和請(qǐng)求大小。請(qǐng)求的組織過(guò)程是將請(qǐng)求的元數(shù)據(jù)按照其到達(dá)數(shù)據(jù)節(jié)點(diǎn)的順序以固定長(zhǎng)度組織成一個(gè)單位,每個(gè)單位稱(chēng)之為“請(qǐng)求流”。

需要注意的是該“請(qǐng)求流”只包含請(qǐng)求的元數(shù)據(jù)信息,而不包含請(qǐng)求對(duì)應(yīng)的實(shí)際數(shù)據(jù)?!罢?qǐng)求流”的長(zhǎng)度默認(rèn)為128,與linux內(nèi)核的cfq的默認(rèn)隊(duì)列長(zhǎng)度保持一致,用戶(hù)可根據(jù)cfq隊(duì)列的長(zhǎng)度來(lái)靈活調(diào)整“請(qǐng)求流”的長(zhǎng)度。

在步驟s202,根據(jù)步驟s201中收集的元數(shù)據(jù)和組織的“請(qǐng)求流”,將“請(qǐng)求流”按照請(qǐng)求的原始偏移地址進(jìn)行從小到大重新排序。

在步驟s203,根據(jù)步驟s202中得到的重新排序后的“請(qǐng)求流”,計(jì)算該“請(qǐng)求流”的“隨機(jī)因子”。

再步驟s204,根據(jù)步驟s203中得到的根據(jù)“隨機(jī)因子”的比例對(duì)該“請(qǐng)求流”的隨機(jī)性進(jìn)行評(píng)估。

其中,“隨機(jī)因子”的計(jì)算方法為:對(duì)每一個(gè)有序的“請(qǐng)求流”,若“請(qǐng)求流”中相鄰兩個(gè)請(qǐng)求的偏移地址之差等于請(qǐng)求大小,將該相鄰兩個(gè)請(qǐng)求的“隨機(jī)因子”賦值為0;不相等時(shí),將該相鄰兩個(gè)請(qǐng)求的“隨機(jī)因子”賦值為1。

本發(fā)明實(shí)施例在數(shù)據(jù)節(jié)點(diǎn)進(jìn)行隨機(jī)性評(píng)估,突破了傳統(tǒng)方法從客戶(hù)端識(shí)別隨機(jī)請(qǐng)求的局限性,無(wú)論是應(yīng)用本身的訪問(wèn)具有隨機(jī)性還是由于多進(jìn)程競(jìng)爭(zhēng)磁頭導(dǎo)致的隨機(jī)訪問(wèn),都能夠從一個(gè)全局的視角識(shí)別出來(lái)。因此本發(fā)明實(shí)施例是一種能夠應(yīng)對(duì)由多種訪問(wèn)模式導(dǎo)致的隨機(jī)訪問(wèn)問(wèn)題的方法。

在一個(gè)可選的實(shí)施例中,可采用自平衡二叉查找樹(shù)avl結(jié)構(gòu)管理緩存在ssd中的數(shù)據(jù)。

其中,將請(qǐng)求對(duì)應(yīng)的隨機(jī)數(shù)據(jù)緩沖在ssd中時(shí),寫(xiě)在ssd中的緩存文件,對(duì)應(yīng)該請(qǐng)求在ssd緩沖區(qū)的偏移地址。

具體地,每個(gè)avl樹(shù)的節(jié)點(diǎn)對(duì)應(yīng)一個(gè)請(qǐng)求,每個(gè)節(jié)點(diǎn)的內(nèi)容包括:請(qǐng)求的原始偏移地址信息、請(qǐng)求在ssd緩沖區(qū)的偏移地址信息以及請(qǐng)求的大小信息,avl樹(shù)的節(jié)點(diǎn)按照請(qǐng)求的原始偏移地址進(jìn)行排序。緩沖請(qǐng)求的同時(shí),根據(jù)請(qǐng)求所在的文件查找對(duì)應(yīng)的avl樹(shù),插入對(duì)應(yīng)的節(jié)點(diǎn)并更新avl樹(shù)。刷新數(shù)據(jù)的過(guò)程中,中序遍歷對(duì)應(yīng)的avl樹(shù),根據(jù)節(jié)點(diǎn)對(duì)應(yīng)的請(qǐng)求在ssd緩沖區(qū)的偏移地址信息和請(qǐng)求大小信息從ssd中讀取相應(yīng)的數(shù)據(jù),根據(jù)請(qǐng)求的原始偏移地址信息和請(qǐng)求大小信息將相應(yīng)的數(shù)據(jù)寫(xiě)入到hdd。

具體地,通過(guò)avl樹(shù)維護(hù)數(shù)據(jù)刷新過(guò)程中的順序性和正確性,通過(guò)中序遍歷avl樹(shù)來(lái)恢復(fù)數(shù)據(jù)原來(lái)的順序,使數(shù)據(jù)被順序回寫(xiě)到hdd中,保證性能的同時(shí)避免額外的排序工作。

在一個(gè)可選的實(shí)施例中,根據(jù)請(qǐng)求集合的隨機(jī)性和當(dāng)前數(shù)據(jù)流向,確定將請(qǐng)求集合定位到hdd或ssd中的一個(gè),包括:若當(dāng)前數(shù)據(jù)正在被寫(xiě)入hdd中,且請(qǐng)求集合的隨機(jī)性大于預(yù)設(shè)第一閾值,則將請(qǐng)求集合定位到ssd中,否則定位到hdd中;若當(dāng)前數(shù)據(jù)正在被寫(xiě)入ssd中,且請(qǐng)求集合的隨機(jī)性小于預(yù)設(shè)第二閾值,則將請(qǐng)求集合定位到hdd中,否則定位到ssd中;第二閾值小于第一閾值。

具體地,系統(tǒng)在最開(kāi)始執(zhí)行的階段,第一個(gè)“請(qǐng)求流”被定向到hdd中。若當(dāng)前數(shù)據(jù)正在被寫(xiě)入hdd中,且此時(shí)“請(qǐng)求流”的隨機(jī)性大于預(yù)設(shè)第一閾值時(shí),則認(rèn)為“請(qǐng)求流”隨機(jī)性強(qiáng),并將接下來(lái)的“請(qǐng)求流”定位到ssd中,否則“請(qǐng)求流”的流向不改變,即定位到hdd。若當(dāng)前數(shù)據(jù)正在被寫(xiě)入ssd中,且此時(shí)“請(qǐng)求流”的隨機(jī)性小于預(yù)設(shè)第二閾值時(shí),則認(rèn)為“請(qǐng)求流”隨機(jī)性弱,并將接下來(lái)的“請(qǐng)求流”定位到hdd中,否則“請(qǐng)求流”的流向不改變,即定位到ssd。上述管理模式也可稱(chēng)為雙緩沖流水線模式。

具體地,通過(guò)第一閾值和第二閾值可以使數(shù)據(jù)的流向會(huì)在某一個(gè)狀態(tài)維持一段時(shí)間,從而避免數(shù)據(jù)流向的頻繁變化,保護(hù)數(shù)據(jù)的空間局部性,例如,只有足夠的隨機(jī)數(shù)據(jù)被緩沖到ssd中時(shí),數(shù)據(jù)在經(jīng)過(guò)排序后刷新到hdd時(shí)的空間局部性和性能才會(huì)更好。

其中,第二閾值小于第一閾值,這兩個(gè)閾值是可配置的參數(shù),可以根據(jù)不同的應(yīng)用以及不同軟硬件環(huán)境進(jìn)行調(diào)優(yōu)以達(dá)到最佳效果。例如,第一閾值為35%,第二閾值為20%。

本發(fā)明實(shí)施例區(qū)分請(qǐng)求流的隨機(jī)性與順序性,充分地發(fā)揮了ssd和hdd各自的優(yōu)勢(shì)。

在一個(gè)可選的實(shí)施例中,ssd劃分為兩個(gè)塊ssd1、ssd2;若ssd1被寫(xiě)滿(mǎn),則將請(qǐng)求集合定位到ssd2,同時(shí)將ssd1的數(shù)據(jù)刷新到hdd,在ssd1的數(shù)據(jù)刷新結(jié)束之后,新的數(shù)據(jù)被寫(xiě)入ssd1;若ssd2被寫(xiě)滿(mǎn),則將請(qǐng)求集合定位到ssd1,同時(shí)將ssd2的數(shù)據(jù)刷新到hdd,在ssd2的數(shù)據(jù)刷新結(jié)束之后,新的數(shù)據(jù)被寫(xiě)入ssd2。

本發(fā)明實(shí)施例通過(guò)選擇性地緩存數(shù)據(jù),并且通過(guò)準(zhǔn)確識(shí)別由多種訪問(wèn)模式導(dǎo)致的隨機(jī)訪問(wèn),充分發(fā)揮ssd和hdd各自的優(yōu)勢(shì),利用有限的ssd資源提升系統(tǒng)寫(xiě)性能。采用雙緩沖流水線模式并行地管理數(shù)據(jù)緩沖過(guò)程和數(shù)據(jù)刷新過(guò)程,能夠保證ssd的空間保持在一個(gè)可用的范圍,即使ssd總?cè)萘啃∮跀?shù)據(jù)總量依然可以緩沖數(shù)據(jù),提升系統(tǒng)的性能,降低了系統(tǒng)構(gòu)建成本。

相應(yīng)地,圖3為本發(fā)明實(shí)施例提供的n個(gè)文件對(duì)應(yīng)的隨機(jī)訪問(wèn)示意圖。如圖3所示,i/o節(jié)點(diǎn)接收多個(gè)文件發(fā)送的請(qǐng)求,例如圖3中的文件1…文件k等。每個(gè)文件可包括多個(gè)進(jìn)程,例如文件1包括進(jìn)程1和進(jìn)程2。每個(gè)進(jìn)程可包括多個(gè)請(qǐng)求,例如文件1中進(jìn)程1包括原始偏移地址為1的請(qǐng)求#1和原始偏移地址為2的請(qǐng)求#2,進(jìn)程1的請(qǐng)求順序是{#1,#2,…},進(jìn)程2的請(qǐng)求順序是{#33,#64,…}。文件k中進(jìn)程k包括原始偏移地址為1的請(qǐng)求#1和原始偏移地址為2的請(qǐng)求#2等。由圖3的示例可知,不同文件中,請(qǐng)求的原始偏移地址可能是相同的。

在i/o節(jié)點(diǎn)處,請(qǐng)求到達(dá)的順序不同,如圖3所示的,i/o節(jié)點(diǎn)處,按照請(qǐng)求到達(dá)的時(shí)間順序,請(qǐng)求集合為:#1(文件1)、#33(文件1)、#1(文件k)、#2(文件k)、#64(文件1)、#2(文件1)、#31(文件k)、#16(文件k)…,可知,不同文件中的請(qǐng)求的到達(dá)順序存在競(jìng)爭(zhēng)關(guān)系,且相同文件的不同進(jìn)程或同一進(jìn)程下的請(qǐng)求的到達(dá)順序也存在競(jìng)爭(zhēng)關(guān)系。

其中,請(qǐng)求集合包括的請(qǐng)求的長(zhǎng)度,可以根據(jù)cfq隊(duì)列的長(zhǎng)度來(lái)靈活調(diào)整。

對(duì)i/o節(jié)點(diǎn)處請(qǐng)求集合計(jì)算隨機(jī)性前,需要先將請(qǐng)求到達(dá)的順序按文件和原始偏移地址的大小進(jìn)行重新排序。如圖3所示,文件1對(duì)應(yīng)的請(qǐng)求流為:#1、#2、#33、#64…,其中,請(qǐng)求#2和#33之間的間隔為偏移地址間隔。假設(shè)請(qǐng)求#2和#33之間不存在其他請(qǐng)求時(shí),則請(qǐng)求#2和#33之間的隨機(jī)因子通過(guò)將#2和#33之間的偏移地址間隔與#2的請(qǐng)求長(zhǎng)度做比較得到。具體可參見(jiàn)圖2所示的方法記載,例如:文件1中,請(qǐng)求#1與請(qǐng)求#2之間的偏移地址恰好等于請(qǐng)求大小,因此“隨機(jī)因子”為0,請(qǐng)求#2與請(qǐng)求#33之間的“隨機(jī)因子”為1。

圖4為本發(fā)明實(shí)施例提供的一種隨機(jī)訪問(wèn)識(shí)別系統(tǒng)結(jié)構(gòu)示意圖,如圖4所示,進(jìn)程1、進(jìn)程2、進(jìn)程3…對(duì)應(yīng)的i/o請(qǐng)求并發(fā)地訪問(wèn)i/o節(jié)點(diǎn),其中,進(jìn)程1、進(jìn)程2、進(jìn)程3…可來(lái)自n個(gè)文件,以及每個(gè)進(jìn)程可包括多個(gè)請(qǐng)求。

在圖4中,i/o節(jié)點(diǎn)處可包括確定模塊、隨機(jī)性計(jì)算模塊以及定向模塊等。確定模塊,用于確定n個(gè)文件的請(qǐng)求組成的請(qǐng)求集合;第k個(gè)文件包括mk個(gè)請(qǐng)求,每個(gè)請(qǐng)求對(duì)應(yīng)其原始偏移地址信息和請(qǐng)求大小信息;其中,n為文件的總數(shù)目,n為正整數(shù),k為文件的序號(hào)數(shù),1≤k≤n,k為正整數(shù),mk為第k個(gè)文件包括的請(qǐng)求數(shù)目,mk為正整數(shù)。

隨機(jī)性計(jì)算模塊,用于根據(jù)第k個(gè)文件包括mk個(gè)請(qǐng)求中每個(gè)請(qǐng)求的原始偏移地址信息和請(qǐng)求大小信息確定第k個(gè)文件的隨機(jī)性tk。隨機(jī)性計(jì)算模塊,還用于根據(jù)每個(gè)文件的隨機(jī)性,確定請(qǐng)求集合的隨機(jī)性。

定位模塊,用于根據(jù)請(qǐng)求集合的隨機(jī)性和當(dāng)前數(shù)據(jù)流向,確定將請(qǐng)求集合定位到機(jī)械硬盤(pán)hdd或固態(tài)硬盤(pán)ssd中的一個(gè),其中,當(dāng)前數(shù)據(jù)流向指的是當(dāng)前數(shù)據(jù)正在被寫(xiě)入hdd或sdd中的一個(gè)。

如圖4所示,若當(dāng)前數(shù)據(jù)正在被寫(xiě)入ssd中,且此時(shí)請(qǐng)求集合的隨機(jī)性小于第二閾值時(shí),則認(rèn)為請(qǐng)求集合隨機(jī)性弱,為順序數(shù)據(jù),將該請(qǐng)求集合定位到hdd中,否則定位到ssd。

若當(dāng)前數(shù)據(jù)正在被寫(xiě)入hdd中,且此時(shí)請(qǐng)求集合的隨機(jī)性大于第一閾值時(shí),則認(rèn)為請(qǐng)求集合隨機(jī)性強(qiáng),為隨機(jī)數(shù)據(jù),將該請(qǐng)求集合定位到ssd中,否則定位到hdd。

在一個(gè)可選的示例中,隨機(jī)性計(jì)算模塊,具體用于將mk個(gè)請(qǐng)求按照原始偏移地址進(jìn)行從小到大排序;根據(jù)每個(gè)請(qǐng)求的原始偏移地址信息和請(qǐng)求大小信息確定排序后的mk個(gè)請(qǐng)求中相鄰兩個(gè)請(qǐng)求的隨機(jī)因子;根據(jù)排序后的mk個(gè)請(qǐng)求中相鄰兩個(gè)請(qǐng)求的隨機(jī)因子,確定第k個(gè)文件的隨機(jī)性tk。

另外,當(dāng)將ssd劃分為兩個(gè)塊ssd1、ssd2;i/o節(jié)點(diǎn)處對(duì)應(yīng)的ssd管理處包括雙緩沖流水線模塊和緩存數(shù)據(jù)管理模塊。

雙緩沖流水線模塊用于并行處理數(shù)據(jù)緩沖階段和刷新階段,并管理一個(gè)流水線隊(duì)列,維護(hù)ssd的緩存空間。緩存數(shù)據(jù)管理模塊用于管理緩存在ssd中的數(shù)據(jù),并維護(hù)數(shù)據(jù)刷新過(guò)程中的順序性和正確性。

另外,上述各個(gè)模塊的功能及方法步驟可參見(jiàn)上述圖1至圖3中的描述,在此不做贅述。

本領(lǐng)域的技術(shù)人員容易理解,以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。

當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1