專利名稱:一種在固態(tài)硬盤上進(jìn)行海量數(shù)據(jù)并行掃描的調(diào)度方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)信息處理,特別是涉及一種在固態(tài)硬盤上海量數(shù)據(jù)進(jìn)行并行掃描 的調(diào)度方法。
背景技術(shù):
近年來(lái)計(jì)算機(jī),尤其是大型服務(wù)器的硬盤性能已經(jīng)遠(yuǎn)遠(yuǎn)跟不上CPU性能的飛速提 升,因此固態(tài)硬盤將取代傳統(tǒng)的磁性硬盤已成為共識(shí)。固態(tài)硬盤的優(yōu)勢(shì)在于它克服了隨機(jī) 尋道慢的弱點(diǎn),目前先進(jìn)的固態(tài)硬盤的隨機(jī)訪問(wèn)速度可以達(dá)到傳統(tǒng)磁性硬盤的幾百到幾千倍。然而我們注意到,大部分現(xiàn)有的大型數(shù)據(jù)存儲(chǔ)系統(tǒng),以關(guān)系數(shù)據(jù)庫(kù)為代表,在設(shè)計(jì) 之時(shí)都是面對(duì)傳統(tǒng)磁性硬盤的。因此當(dāng)這些系統(tǒng)被直接移植到固態(tài)硬盤上時(shí),它們的I/O 調(diào)度方法必然無(wú)法充分發(fā)揮出固態(tài)硬盤的性能優(yōu)勢(shì)。海量數(shù)據(jù)掃描是在決策支持、數(shù)據(jù)挖掘領(lǐng)域常見(jiàn)的一種操作,當(dāng)有多個(gè)用戶并行 地對(duì)數(shù)據(jù)庫(kù)中的某一張表進(jìn)行全表查詢時(shí),他們的掃描會(huì)形成對(duì)外存設(shè)備過(guò)多的讀取,從 而造成I/O通道的嚴(yán)重堵塞,降低查詢的性能。目前SQL SerVer,DB2等工業(yè)數(shù)據(jù)庫(kù)的解決 方法往往是使多個(gè)掃描同步,共享從硬盤上讀進(jìn)來(lái)的數(shù)據(jù)頁(yè)面。然而在實(shí)際應(yīng)用中,不同的 查詢具有不同的復(fù)雜度,從而導(dǎo)致不同掃描的速度差異很大,傳統(tǒng)的方法為了避免磁盤的 磁針抖動(dòng),往往犧牲了速度較快查詢的響應(yīng)時(shí)間,使它等待速度較慢的查詢。很明顯,這些 傳統(tǒng)的方法并不適用于固態(tài)硬盤,因?yàn)楣虘B(tài)硬盤不存在磁針的尋道問(wèn)題,在傳統(tǒng)的方法下, 固態(tài)硬盤的高速隨機(jī)讀取能力完全沒(méi)有發(fā)揮出來(lái)。
發(fā)明內(nèi)容
本發(fā)明目的在于提供一種在固態(tài)硬盤上海量數(shù)據(jù)進(jìn)行并行掃描的調(diào)度方法,充分 發(fā)揮固態(tài)硬盤高速隨機(jī)讀的特性,獲得相比傳統(tǒng)方法更優(yōu)秀的查詢響應(yīng)時(shí)間。為達(dá)到上述目標(biāo),本發(fā)明的技術(shù)方案如下掃描被分成多個(gè)掃描組,對(duì)于每個(gè)掃描組,在計(jì)算機(jī)內(nèi)存中分配一個(gè)固定大小的 窗口用于緩存從固態(tài)硬盤上讀進(jìn)的數(shù)據(jù)頁(yè)面,同組中的掃描共享該窗口中的數(shù)據(jù)頁(yè)面;當(dāng)掃描開(kāi)始時(shí),挑選一個(gè)掃描組加入,如果當(dāng)前沒(méi)有掃描組則創(chuàng)建一個(gè),加入掃描 組后,檢查并在需要時(shí)對(duì)該組進(jìn)行分裂,新加入的掃描以掃描組當(dāng)前掃描窗口的中間頁(yè)面 作為自己的起始位置,并更新本組的統(tǒng)計(jì)信息;當(dāng)窗口中的某一數(shù)據(jù)頁(yè)面被所有掃描處理過(guò)后,掃描組發(fā)起正向的公共頁(yè)面請(qǐng) 求,讀取下一個(gè)頁(yè)面來(lái)代換掉它,而當(dāng)組中較快的掃描在領(lǐng)先組中最慢的掃描超過(guò)窗口的 長(zhǎng)度時(shí),單獨(dú)發(fā)送從自己起始位置反向的補(bǔ)償頁(yè)面請(qǐng)求;各掃描之間通過(guò)臨界區(qū)交換信 息;當(dāng)一個(gè)掃描所在組的公共正向頁(yè)面和它的起始位置交匯時(shí),這個(gè)掃描已經(jīng)掃描完 所有的數(shù)據(jù)頁(yè)面,此時(shí)掃描結(jié)束,退出該組并更新統(tǒng)計(jì)信息,如果自己是本組內(nèi)最后一個(gè)掃描則刪除掃描組,掃描結(jié)束時(shí)需檢查所有現(xiàn)存的其它掃描組是否需要根據(jù)當(dāng)前系統(tǒng)狀況進(jìn) 行調(diào)整;所有的頁(yè)面請(qǐng)求被一個(gè)請(qǐng)求分發(fā)進(jìn)程統(tǒng)一處理,當(dāng)有新的頁(yè)面請(qǐng)求產(chǎn)生時(shí),掃描 或掃描組喚醒請(qǐng)求分發(fā)進(jìn)程,正向的公共頁(yè)面請(qǐng)求具有較高的優(yōu)先級(jí),被優(yōu)先處理,反向的 補(bǔ)償頁(yè)面請(qǐng)求在有足夠系統(tǒng)資源的情況下才被處理;當(dāng)一個(gè)正向的公共頁(yè)面請(qǐng)求被處理 后,發(fā)起該請(qǐng)求的掃描組內(nèi)的所有成員都被請(qǐng)求分發(fā)進(jìn)程喚醒,包括已經(jīng)發(fā)送了反向的補(bǔ) 償頁(yè)面請(qǐng)求的掃描,當(dāng)一個(gè)反向的補(bǔ)償請(qǐng)求被完成后,發(fā)起該請(qǐng)求的掃描被請(qǐng)求分發(fā)進(jìn)程 喚醒。所述分成多個(gè)掃描組的方法根據(jù)系統(tǒng)的信息和各掃描的統(tǒng)計(jì)信息決定,每個(gè)掃描 在開(kāi)始時(shí)根據(jù)貪心算法檢查各個(gè)現(xiàn)有掃描組以決定加入哪一個(gè)可使系統(tǒng)的負(fù)荷增加最小; 在加入掃描組后,同樣根據(jù)貪心算法檢查按照何種分裂策略可使系統(tǒng)的負(fù)荷降低最多。所述各掃描組的內(nèi)存窗口大小隨著組數(shù)目的增減和計(jì)算機(jī)內(nèi)存的可用情況動(dòng)態(tài)調(diào)整。所述公共頁(yè)面請(qǐng)求和補(bǔ)償頁(yè)面請(qǐng)求被一個(gè)請(qǐng)求分發(fā)進(jìn)程統(tǒng)一處理,公共頁(yè)面請(qǐng)求 和補(bǔ)償頁(yè)面請(qǐng)求分別加入各自的隊(duì)列,請(qǐng)求分發(fā)進(jìn)程被喚醒后,首先服務(wù)正向的公共請(qǐng)求 隊(duì)列,當(dāng)請(qǐng)求被完成時(shí)喚醒發(fā)起請(qǐng)求的該組所有掃描;當(dāng)正向公共請(qǐng)求隊(duì)列為空時(shí)服務(wù)反 向補(bǔ)償請(qǐng)求隊(duì)列并處理,當(dāng)請(qǐng)求被完成時(shí)喚醒發(fā)起該請(qǐng)求的掃描。所述掃描與掃描之間依靠臨界區(qū)進(jìn)行信息交換,而掃描與請(qǐng)求分發(fā)進(jìn)程之間依靠 信號(hào)量進(jìn)行喚醒。本發(fā)明解決了固態(tài)硬盤上的海量數(shù)據(jù)并行掃描問(wèn)題,具有的有益效果是1)速度相近的掃描只會(huì)占用單個(gè)掃描的I/O帶寬,有效節(jié)省了固態(tài)硬盤的帶寬資 源,使得系統(tǒng)的有效服務(wù)能力得到提升。2)速度較快的掃描可以利用固態(tài)硬盤快速隨機(jī)讀的性能優(yōu)勢(shì),在與較慢掃描共享 I/O帶寬的同時(shí)自己進(jìn)行補(bǔ)償掃描,使得單個(gè)查詢的響應(yīng)時(shí)間得到明顯提升。3)系統(tǒng)根據(jù)統(tǒng)計(jì)信息來(lái)動(dòng)態(tài)調(diào)節(jié)各掃描組的參數(shù),使得系統(tǒng)的性能隨著不同的工 作集進(jìn)行自調(diào)節(jié),以達(dá)到最優(yōu)。4)本方法使用標(biāo)準(zhǔn)的同步機(jī)制和通用的頁(yè)面訪問(wèn)機(jī)制,可以靈活地被嵌入各主流 數(shù)據(jù)庫(kù)產(chǎn)品中,也方便在各個(gè)操作系統(tǒng)和平臺(tái)間進(jìn)行移植;同時(shí)本方法基于固態(tài)硬盤閃存 芯片隨機(jī)訪問(wèn)快的基本特征,而不依賴于制造工藝,因此適用于現(xiàn)在和將來(lái)所有的固態(tài)硬
盤廣品。
圖1是系統(tǒng)整體框架圖。圖2是各掃描工作流程圖。圖3是請(qǐng)求分發(fā)進(jìn)程工作流程圖。
具體實(shí)施例方式下面結(jié)合附圖及具體實(shí)施方式
對(duì)本發(fā)明作進(jìn)一步的描述如圖1所示,給出了整個(gè)并行掃描的調(diào)度框架示意圖。其主要結(jié)構(gòu)包括掃描組結(jié)構(gòu),數(shù)據(jù)頁(yè)面緩沖區(qū)和請(qǐng)求分發(fā)區(qū)。在各查詢進(jìn)程外還需要啟動(dòng)一個(gè)請(qǐng)求分發(fā)進(jìn)程,用于服 務(wù)在請(qǐng)求分發(fā)區(qū)的頁(yè)面請(qǐng)求。掃描組結(jié)構(gòu)在內(nèi)存中以鏈表結(jié)構(gòu)存在,對(duì)于每個(gè)掃描對(duì)象(表、索引),在內(nèi)存中 維護(hù)一條掃描組鏈表。鏈表中的一個(gè)結(jié)點(diǎn)是一個(gè)單獨(dú)的掃描組,在鏈表頭上有對(duì)象標(biāo)識(shí)和 同步鎖,對(duì)鏈表的訪問(wèn)和修改在同步鎖的保護(hù)下進(jìn)行。在掃描組結(jié)點(diǎn)中,維護(hù)著本掃描組的統(tǒng)計(jì)信息,如本掃描組的窗口大小,本掃描組 的掃描數(shù)目,本掃描組的平均速度,本掃描組平均還未掃描的頁(yè)面數(shù)目等。屬于本掃描組的 掃描以子鏈表的形式掛載在掃描組結(jié)點(diǎn)中,掃描結(jié)點(diǎn)同樣維護(hù)了本掃描的統(tǒng)計(jì)信息。掃描 組和掃描都采用鏈表形式,是為了便于結(jié)點(diǎn)的移動(dòng)和刪除。數(shù)據(jù)頁(yè)面緩沖區(qū)用于緩存來(lái)自固態(tài)硬盤的數(shù)據(jù)。緩沖區(qū)的組織可以依賴于成熟的 數(shù)據(jù)庫(kù)或操作系統(tǒng)產(chǎn)品,在本發(fā)明中跳過(guò)其細(xì)節(jié)介紹,而統(tǒng)一歸納為給予每個(gè)頁(yè)面一個(gè)權(quán) 重,當(dāng)發(fā)生替換時(shí)替換掉緩沖區(qū)內(nèi)權(quán)重最低頁(yè)面的形式。請(qǐng)求分發(fā)區(qū)包括兩個(gè)先入先出隊(duì)列公共請(qǐng)求分發(fā)隊(duì)列和補(bǔ)償請(qǐng)求分發(fā)隊(duì)列,隊(duì) 列頭上有同步鎖,用來(lái)保護(hù)對(duì)隊(duì)列的訪問(wèn)和修改。隊(duì)列中的每個(gè)成員代表一個(gè)頁(yè)面請(qǐng)求,公 共請(qǐng)求隊(duì)列成員的結(jié)構(gòu)為(頁(yè)面標(biāo)識(shí)號(hào),掃描組標(biāo)識(shí)號(hào)),補(bǔ)償請(qǐng)求隊(duì)列成員的結(jié)構(gòu)為(頁(yè) 面標(biāo)識(shí)號(hào),掃描標(biāo)識(shí)號(hào))。當(dāng)系統(tǒng)啟動(dòng)時(shí),后臺(tái)啟動(dòng)一個(gè)請(qǐng)求分發(fā)進(jìn)程來(lái)處理加入隊(duì)列的頁(yè)面請(qǐng)求。這里的 進(jìn)程與計(jì)算機(jī)操作系統(tǒng)中的進(jìn)程概念不完全等價(jià),根據(jù)不同的體系結(jié)構(gòu)可以用進(jìn)程、線程 甚至纖程來(lái)實(shí)現(xiàn)。如圖2所示,該圖所示為本發(fā)明提出的單個(gè)查詢進(jìn)行掃描的工作流程。在關(guān)系數(shù) 據(jù)庫(kù)的體系結(jié)構(gòu)中,海量數(shù)據(jù)掃描的流程以迭代形式分成三步進(jìn)行1)開(kāi)始掃描注冊(cè)一個(gè)掃描句柄;2)進(jìn)行掃描通過(guò)句柄調(diào)用,逐行返回?cái)?shù)據(jù);3)結(jié)束掃描銷毀句柄。本發(fā)明的查詢過(guò)程同樣基于迭代形式,詳細(xì)步驟為1)開(kāi)始掃描時(shí),首先在掃描組結(jié)構(gòu)中尋找本掃描對(duì)象是否存在掃描組,如果不存 在,則生成第一個(gè)掃描組結(jié)點(diǎn),將自己加入其中;如果已經(jīng)存在本對(duì)象的掃描組,則尋找一 個(gè)最合適的掃描組加入,并檢查掃描組是否需要分裂。加入掃描組后,以掃描組當(dāng)前掃描窗 口的中間頁(yè)面作為自己的掃描起始位置。201尋找最合適的掃描組。順序訪問(wèn)掃描組鏈表中的各個(gè)結(jié)點(diǎn),根據(jù)掃描組的統(tǒng)計(jì) 信息和自身的速度,計(jì)算本掃描加入各個(gè)掃描組后的狀態(tài),并選擇最優(yōu)者加入。掃描自身的 速度由查詢的復(fù)雜度決定,現(xiàn)代成熟的數(shù)據(jù)庫(kù)中的優(yōu)化模塊都具有準(zhǔn)確估算查詢復(fù)雜度的 能力。202檢查掃描組是否需要分裂。順序訪問(wèn)本組中掃描子鏈表中的各個(gè)結(jié)點(diǎn),按照掃 描速度進(jìn)行排序,再計(jì)算按照各個(gè)掃描將掃描組分裂成為兩組的狀態(tài),選擇最優(yōu)方案進(jìn)行 分裂。在201和202步驟中,對(duì)最優(yōu)狀態(tài)的計(jì)算是根據(jù)掃描速度和剩余頁(yè)面數(shù)目?jī)蓚€(gè)因 素來(lái)決定的,根據(jù)掃描組的行為邏輯,可以作出如下定義。對(duì)于單個(gè)掃描,定義它的掃描速 度為單位時(shí)間內(nèi)可處理的頁(yè)面數(shù)。對(duì)于單個(gè)掃描組,定義它的公共掃描帶寬需求為組內(nèi)最慢掃描的速度。定義掃描組的補(bǔ)償掃描帶寬需求為組內(nèi)所有掃描與最慢掃描的速度差 值之和。定義掃描組的總帶寬需求為掃描細(xì)的公共掃描帶寬需求與補(bǔ)償掃描帶寬需求之 和。評(píng)價(jià)狀態(tài)的優(yōu)劣根據(jù)以下標(biāo)準(zhǔn)在公共帶寬需求之和不大于系統(tǒng)總帶寬能力的前 提下,最小化總帶寬需求。在201選擇掃描組時(shí),剩余頁(yè)面數(shù)目小于一定閾值的掃描組不予 考慮,這樣做的目的是使掃描組盡快完成以釋放帶寬。在計(jì)算加入或者分裂后狀態(tài)時(shí),根據(jù) 掃描組的統(tǒng)計(jì)信息,利用貪心算法獲得最優(yōu)解。由于掃描和分裂的算法都只需要掃描一遍 鏈表,其時(shí)間復(fù)雜度為0(η)。2)進(jìn)行掃描時(shí),掃描首先判斷本掃描是否完成,其判斷依據(jù)是向前掃描的頁(yè)面已 經(jīng)到達(dá)了自己的起始位置。當(dāng)掃描越過(guò)了表的最后一個(gè)數(shù)據(jù)頁(yè)面時(shí),從表的第一個(gè)數(shù)據(jù)頁(yè) 面開(kāi)始循環(huán)掃描。203每個(gè)掃描在處理過(guò)程中,需要將自己當(dāng)前的統(tǒng)計(jì)信息更新到掃描組內(nèi)的結(jié)點(diǎn) 中。為了降低對(duì)掃描組鏈表同步的開(kāi)銷,這個(gè)更新在每掃描了一定數(shù)目的頁(yè)面后進(jìn)行。所 更新的統(tǒng)計(jì)信息包括當(dāng)前位置、剩余頁(yè)面數(shù)目等。掃描首先檢查自己當(dāng)前位置正方向的下一個(gè)頁(yè)面是否在頁(yè)面緩存中,如果在,則 直接處理下一頁(yè)面上的數(shù)據(jù)。如果不在,則檢查自己是否領(lǐng)先本組中最慢的掃描超過(guò)本掃 描組窗口的長(zhǎng)度。204如果自己沒(méi)有領(lǐng)先本組中最慢的掃描超過(guò)掃描組窗口的長(zhǎng)度時(shí),發(fā)送從自己 當(dāng)前位置正方向的頁(yè)面請(qǐng)求到請(qǐng)求分發(fā)區(qū)中,喚醒請(qǐng)求分發(fā)進(jìn)程,自己進(jìn)入睡眠,直至被請(qǐng) 求分發(fā)進(jìn)程喚醒。如果自己領(lǐng)先本組最慢的掃描超過(guò)掃描組窗口長(zhǎng)度,先檢查自己起始位置的前一 個(gè)頁(yè)面在不在緩存中,如果在,則直接處理前一頁(yè)面上的數(shù)據(jù)。205否則發(fā)送從自己起始位置反方向的前一頁(yè)面請(qǐng)求到請(qǐng)求分發(fā)區(qū)中,喚醒請(qǐng)求 分發(fā)進(jìn)程,自己進(jìn)入睡眠,直至被請(qǐng)求分發(fā)進(jìn)程喚醒。當(dāng)掃描在204和205步驟中進(jìn)入等待被喚醒后,需要重新檢查這時(shí)自己的狀態(tài),即 重新檢查自己當(dāng)前位置正方向的頁(yè)面。206當(dāng)掃描處理完一個(gè)頁(yè)面上的數(shù)據(jù)以后,將頁(yè)面上的權(quán)重進(jìn)行相應(yīng)設(shè)置,以便緩 沖區(qū)模塊將已被所有掃描處理后的頁(yè)面換出。掃描通過(guò)權(quán)重設(shè)置來(lái)控制窗口的大小,而不 需要直接干涉頁(yè)面緩沖區(qū)的行為。對(duì)于補(bǔ)償請(qǐng)求獲得的頁(yè)面,將掃描完的頁(yè)面權(quán)重直接設(shè) 置為最低;對(duì)于公共請(qǐng)求獲得的頁(yè)面,掃描組中的最慢掃描負(fù)責(zé)將頁(yè)面權(quán)重設(shè)置為最低。3)結(jié)束掃描時(shí),需要檢查本組中是否還有其它掃描,如果有,則將自己的掃描結(jié)點(diǎn) 從掃描子鏈表里摘除。如果沒(méi)有,則將整個(gè)掃描組結(jié)點(diǎn)從掃描組鏈表里摘除。207當(dāng)一個(gè)掃描組被刪除時(shí),會(huì)釋放出自己原來(lái)占據(jù)的公共帶寬需求。根據(jù)我們的 分裂原則,此時(shí)可能對(duì)其它掃描組進(jìn)行分裂可以優(yōu)化系統(tǒng)的狀態(tài),因此需要對(duì)其它掃描組 進(jìn)行掃描,并計(jì)算狀態(tài)以決定是否分裂。如圖3所示,該圖所示為本發(fā)明中的請(qǐng)求分發(fā)進(jìn)程的工作流程。詳細(xì)步驟如下301首先檢查公共請(qǐng)求隊(duì)列是否為空。如果不為空,則處理當(dāng)中的第一個(gè)請(qǐng)求;302如果公共請(qǐng)求隊(duì)列為空,則檢查補(bǔ)償請(qǐng)求隊(duì)列是否為空。如果不為空,則處理 當(dāng)中的第一個(gè)請(qǐng)求;
303 304每當(dāng)處理完一個(gè)請(qǐng)求之后,將讀到緩存中的數(shù)據(jù)頁(yè)面設(shè)置一個(gè)較高的權(quán) 重,防止頁(yè)面被過(guò)早換出。再喚醒等待在這個(gè)頁(yè)面請(qǐng)求上的所有掃描。對(duì)于公共頁(yè)面請(qǐng)求, 喚醒發(fā)起該請(qǐng)求的掃描組中的所有掃描,對(duì)于補(bǔ)償頁(yè)面請(qǐng)求,喚醒發(fā)起該請(qǐng)求的掃描。請(qǐng)求分發(fā)進(jìn)程循環(huán)進(jìn)行上述工作,當(dāng)兩個(gè)隊(duì)列都為空時(shí),請(qǐng)求分發(fā)進(jìn)程進(jìn)入睡眠 狀態(tài),等待喚醒。
權(quán)利要求
一種在固態(tài)硬盤上海量數(shù)據(jù)進(jìn)行并行掃描的調(diào)度方法,其特征在于掃描被分成多個(gè)掃描組,對(duì)于每個(gè)掃描組,在計(jì)算機(jī)內(nèi)存中分配一個(gè)固定大小的窗口用于緩存從固態(tài)硬盤上讀進(jìn)的數(shù)據(jù)頁(yè)面,同組中的掃描共享該窗口中的數(shù)據(jù)頁(yè)面;當(dāng)掃描開(kāi)始時(shí),挑選一個(gè)掃描組加入,如果當(dāng)前沒(méi)有掃描組則創(chuàng)建一個(gè),加入掃描組后,檢查并在需要時(shí)對(duì)該組進(jìn)行分裂,新加入的掃描以掃描組當(dāng)前掃描窗口的中間頁(yè)面作為自己的起始位置,并更新本組的統(tǒng)計(jì)信息;當(dāng)窗口中的某一數(shù)據(jù)頁(yè)面被所有掃描處理過(guò)后,掃描組發(fā)起正向的公共頁(yè)面請(qǐng)求,讀取下一個(gè)頁(yè)面來(lái)代換掉它,而當(dāng)組中較快的掃描在領(lǐng)先組中最慢的掃描超過(guò)窗口的長(zhǎng)度時(shí),單獨(dú)發(fā)送從自己起始位置反向的補(bǔ)償頁(yè)面請(qǐng)求;各掃描之間通過(guò)臨界區(qū)交換信息;當(dāng)一個(gè)掃描所在組的公共正向頁(yè)面和它的起始位置交匯時(shí),這個(gè)掃描已經(jīng)掃描完所有的數(shù)據(jù)頁(yè)面,此時(shí)掃描結(jié)束,退出該組并更新統(tǒng)計(jì)信息,如果自己是本組內(nèi)最后一個(gè)掃描則刪除掃描組,掃描結(jié)束時(shí)需檢查所有現(xiàn)存的其它掃描組是否需要根據(jù)當(dāng)前系統(tǒng)狀況進(jìn)行調(diào)整;所有的頁(yè)面請(qǐng)求被一個(gè)請(qǐng)求分發(fā)進(jìn)程統(tǒng)一處理,當(dāng)有新的頁(yè)面請(qǐng)求產(chǎn)生時(shí),掃描或掃描組喚醒請(qǐng)求分發(fā)進(jìn)程,正向的公共頁(yè)面請(qǐng)求具有較高的優(yōu)先級(jí),被優(yōu)先處理,反向的補(bǔ)償頁(yè)面請(qǐng)求在有足夠系統(tǒng)資源的情況下才被處理;當(dāng)一個(gè)正向的公共頁(yè)面請(qǐng)求被處理后,發(fā)起該請(qǐng)求的掃描組內(nèi)的所有成員都被請(qǐng)求分發(fā)進(jìn)程喚醒,包括已經(jīng)發(fā)送了反向的補(bǔ)償頁(yè)面請(qǐng)求的掃描,當(dāng)一個(gè)反向的補(bǔ)償請(qǐng)求被完成后,發(fā)起該請(qǐng)求的掃描被請(qǐng)求分發(fā)進(jìn)程喚醒。
2.根據(jù)權(quán)利要求1所述的一種在固態(tài)硬盤上海量數(shù)據(jù)進(jìn)行并行掃描的調(diào)度方法,其特 征在于所述分成多個(gè)掃描組的方法根據(jù)系統(tǒng)的信息和各掃描的統(tǒng)計(jì)信息決定,每個(gè)掃描 在開(kāi)始時(shí)根據(jù)貪心算法檢查各個(gè)現(xiàn)有掃描組以決定加入哪一個(gè)可使系統(tǒng)的負(fù)荷增加最??; 在加入掃描組后,同樣根據(jù)貪心算法檢查按照何種分裂策略可使系統(tǒng)的負(fù)荷降低最多。
3.根據(jù)權(quán)利要求1所述的一種在固態(tài)硬盤上海量數(shù)據(jù)進(jìn)行并行掃描的調(diào)度方法,其特 征在于所述各掃描組的內(nèi)存窗口大小隨著組數(shù)目的增減和計(jì)算機(jī)內(nèi)存的可用情況動(dòng)態(tài)調(diào)iF. ο
4.根據(jù)權(quán)利要求1所述的一種在固態(tài)硬盤上海量數(shù)據(jù)進(jìn)行并行掃描的調(diào)度方法,其特 征在于所述公共頁(yè)面請(qǐng)求和補(bǔ)償頁(yè)面請(qǐng)求被一個(gè)請(qǐng)求分發(fā)進(jìn)程統(tǒng)一處理,公共頁(yè)面請(qǐng)求 和補(bǔ)償頁(yè)面請(qǐng)求分別加入各自的隊(duì)列,請(qǐng)求分發(fā)進(jìn)程被喚醒后,首先服務(wù)正向的公共請(qǐng)求 隊(duì)列,當(dāng)請(qǐng)求被完成時(shí)喚醒發(fā)起請(qǐng)求的該組所有掃描;當(dāng)正向公共請(qǐng)求隊(duì)列為空時(shí)服務(wù)反 向補(bǔ)償請(qǐng)求隊(duì)列并處理,當(dāng)請(qǐng)求被完成時(shí)喚醒發(fā)起該請(qǐng)求的掃描。
5.根據(jù)權(quán)利要求1所述的一種在固態(tài)硬盤上海量數(shù)據(jù)進(jìn)行并行掃描的調(diào)度方法,其特 征在于所述掃描與掃描之間依靠臨界區(qū)進(jìn)行信息交換,而掃描與請(qǐng)求分發(fā)進(jìn)程之間依靠 信號(hào)量進(jìn)行喚醒。
全文摘要
本發(fā)明公開(kāi)了一種在固態(tài)硬盤上海量數(shù)據(jù)進(jìn)行并行掃描的調(diào)度方法。在查詢開(kāi)始時(shí)估算其掃描速度,根據(jù)速度相近的匹配原則為該掃描選擇一個(gè)最優(yōu)的掃描組。在進(jìn)行掃描時(shí),以掃描組為單位發(fā)送正向的公共數(shù)據(jù)請(qǐng)求,所讀取的數(shù)據(jù)被組內(nèi)的所有掃描共享。當(dāng)同組內(nèi)速度較快的掃描當(dāng)領(lǐng)先較慢的掃描超過(guò)一定距離時(shí),發(fā)送反向的補(bǔ)償數(shù)據(jù)請(qǐng)求。所有的數(shù)據(jù)請(qǐng)求被集中處理,其中,正向的公共請(qǐng)求優(yōu)先級(jí)較高,而反向的補(bǔ)償請(qǐng)求優(yōu)先級(jí)較低。在掃描開(kāi)始和結(jié)束時(shí),計(jì)算它對(duì)系統(tǒng)總體的影響并調(diào)節(jié)所有組以達(dá)到最優(yōu)性能。本發(fā)明充分發(fā)揮了固態(tài)硬盤高速隨機(jī)讀的能力,提高了查詢的平均響應(yīng)時(shí)間,適合在大規(guī)模高并發(fā)的數(shù)據(jù)環(huán)境中使用。
文檔編號(hào)G06F17/30GK101901264SQ201010237940
公開(kāi)日2010年12月1日 申請(qǐng)日期2010年7月27日 優(yōu)先權(quán)日2010年7月27日
發(fā)明者壽黎但, 徐昶, 胡天磊, 陳剛, 陳珂 申請(qǐng)人:浙江大學(xué)