欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種用于網(wǎng)絡(luò)文件系統(tǒng)的流式數(shù)據(jù)預(yù)讀方法

文檔序號(hào):7889808閱讀:192來源:國知局
專利名稱:一種用于網(wǎng)絡(luò)文件系統(tǒng)的流式數(shù)據(jù)預(yù)讀方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種計(jì)算機(jī)網(wǎng)絡(luò)相關(guān)技術(shù),尤其是涉及一種用于網(wǎng)絡(luò)文件系統(tǒng)的流式數(shù)據(jù)預(yù)讀方法。
背景技術(shù)
網(wǎng)絡(luò)文件系統(tǒng)是文件系統(tǒng)之上的一個(gè)網(wǎng)絡(luò)抽象,它允許一臺(tái)計(jì)算機(jī)(客戶端)以與本地文件系統(tǒng)類似的方式來通過網(wǎng)絡(luò)訪問位于遠(yuǎn)程計(jì)算機(jī)(服務(wù)器)上的文件??蛻舳税l(fā)起讀寫請(qǐng)求,它通過網(wǎng)絡(luò)調(diào)用遠(yuǎn)程計(jì)算機(jī)上提供的服務(wù)程序。網(wǎng)絡(luò)文件系統(tǒng)的IO請(qǐng)求既包括了數(shù)據(jù)在網(wǎng)絡(luò)上的傳輸過程又包括了服務(wù)器端的磁盤IO過程。而網(wǎng)絡(luò)和磁盤往往是影響IO性能的瓶頸因素。如何最大限度的挖掘網(wǎng)絡(luò)和磁盤的性能潛力,長期以來一直都是非?;钴S的研究課題。文件預(yù)取,又稱預(yù)讀,正是最重要的優(yōu)化技術(shù)之一, 并已經(jīng)成為現(xiàn)代操作系統(tǒng)的一項(xiàng)必備的功能。而對(duì)于網(wǎng)絡(luò)文件系統(tǒng),借鑒本地文件系統(tǒng)的預(yù)讀思想,在客戶端采用預(yù)讀策略,同樣是一種行之有效的IO策略。目前已有的研究注重于cache的有效利用和數(shù)據(jù)一致性問題,如Collective Prefetching for Parallel I/O Systems [], NFS Tricks and Benchmarking Traps [],但對(duì)于在如何在預(yù)讀過程中隱藏網(wǎng)絡(luò)傳輸延遲,提高網(wǎng)絡(luò)文件系統(tǒng)性能,往往缺少進(jìn)一步的考慮。經(jīng)過對(duì)NFS代碼研究和抓包分析,發(fā)現(xiàn)它客戶端的預(yù)讀沒能把網(wǎng)絡(luò)傳輸和服務(wù)器端的磁盤IO并行起來。這些預(yù)讀請(qǐng)求相對(duì)于客戶端來說是異步的,也就是說當(dāng)客戶端發(fā)出預(yù)讀請(qǐng)求后,無需阻塞等待這些數(shù)據(jù)返回就可以繼續(xù)獲得進(jìn)程的控制權(quán)繼續(xù)下一步的工作, 等確實(shí)需要這其中的某些數(shù)據(jù)的時(shí)候再把數(shù)據(jù)收上來。但是每兩次的預(yù)讀之間卻是同步的過程,即客戶端必須等待完全收到當(dāng)前的預(yù)讀數(shù)據(jù)之后,才能發(fā)下一次的預(yù)讀請(qǐng)求。在客戶端收預(yù)讀數(shù)據(jù)的這段時(shí)間內(nèi),服務(wù)器端并不做任何的IO操作。

發(fā)明內(nèi)容
本發(fā)明的目的就是為了克服上述現(xiàn)有技術(shù)存在的缺陷而提供一種提高讀數(shù)據(jù)的吞吐量的用于網(wǎng)絡(luò)文件系統(tǒng)的流式數(shù)據(jù)預(yù)讀方法。本發(fā)明的目的可以通過以下技術(shù)方案來實(shí)現(xiàn)—種用于網(wǎng)絡(luò)文件系統(tǒng)的流式數(shù)據(jù)預(yù)讀方法,其特征在于,包括以下步驟第一步,初始化工作客戶端設(shè)置一個(gè)用于緩存從服務(wù)器端讀來的數(shù)據(jù)的讀緩沖區(qū) buffer ;第二步,客戶端收到用戶發(fā)來的讀請(qǐng)求時(shí),判斷是否為首次收到讀請(qǐng)求,若為是, 客戶端向服務(wù)器端轉(zhuǎn)發(fā)讀請(qǐng)求,并將從服務(wù)器端接收上來的數(shù)據(jù)直接返回給用戶;若為否執(zhí)行第四步;第三步,客戶端向服務(wù)器發(fā)送的當(dāng)前預(yù)讀請(qǐng)求;第四步,當(dāng)新的讀請(qǐng)求收到時(shí)客戶端先判斷buffer是否存在該讀請(qǐng)求所需要的數(shù)據(jù),若為是,直接把存在的部分?jǐn)?shù)據(jù)返回給用戶,并將buffer中沒有的剩余數(shù)據(jù)打包成
4新的讀請(qǐng)求重新執(zhí)行第四步;若為否,執(zhí)行第五步。第五步,客戶端判斷該讀請(qǐng)求的范圍是否包含在當(dāng)前預(yù)讀請(qǐng)求范圍內(nèi),若為是,則先發(fā)送下一次預(yù)讀請(qǐng)求,再把當(dāng)前預(yù)讀的數(shù)據(jù)收上來,存入buffer,并把用戶所需的數(shù)據(jù)返回,再把下一次預(yù)讀置為當(dāng)前預(yù)讀,并返回第四步;若為否,返回第二步。所述的buffer包括所緩沖的數(shù)據(jù)在文件中的偏移量buffer, start和長度 buffer, length,該長度 buffer, length 小于 buffer 的大小 BUF_SIZE,其中 BUF_SIZE 可根據(jù)需要設(shè)置。所述的第二步中的首次收到讀請(qǐng)求的客戶端狀態(tài)為buffer為空且之前沒有發(fā)過預(yù)讀請(qǐng)求。所述的第二步和第四步中的讀請(qǐng)求包括請(qǐng)求的文件句柄read, fd、編號(hào)read, no、 偏移量read, offset、長度read, length和用于收取數(shù)據(jù)的用戶緩沖區(qū)地址read, buf。所述的第三步中的當(dāng)前預(yù)讀請(qǐng)求包括預(yù)讀請(qǐng)求的文件句柄currentPrefetch. fd、偏移 currentPrefetch. offset 禾口長度 currentPretch. length,所述的預(yù)讀請(qǐng)求的文件句柄和讀請(qǐng)求的文件句柄一致,即currentPrefetch. fd = read, fd,所述的預(yù)讀請(qǐng)求的偏移為當(dāng)前讀請(qǐng)求的偏移+當(dāng)前讀請(qǐng)求的長度,即currentPrefetch. offset = read, offset+read. length, currentPretch. length 為預(yù)讀大小的缺省值 PREraTCH_SUE。所述的第四步中的buffer存在該讀請(qǐng)求所需要的數(shù)據(jù)為讀請(qǐng)求的偏移量大于等于buffer包含的數(shù)據(jù)在文件中的偏移量且小于等于buffer包含的數(shù)據(jù)在文件中的偏移量加buffer包含的數(shù)據(jù)在文件中的長度,即read, offset > = buffer, start且read, offset < =buffer, start+buffer. length ;所述的返回給用戶的數(shù)據(jù)為以buffer所表示的文件中read, offset為偏移量, min (buffer, start+buffer. length-read, offset, read, length)為長度白勺數(shù)據(jù)。所述的將buffer中沒有的剩余數(shù)據(jù)打包成新的讀請(qǐng)求具體為當(dāng) read, offset+read. length > buffer, start+buffer. length 的時(shí) 侯,除返回給用戶的數(shù)據(jù)外,余下的數(shù)據(jù)打包成新的讀請(qǐng)求read, fd = read, fd ;read, no = read, no+1 ;read, length = read, offset+read. length- (buffer, start+buffer. length);read, offset = buffer, start+buffer. length。所述的第五步中的讀請(qǐng)求范圍包含在預(yù)讀請(qǐng)求范圍為讀請(qǐng)求的偏移量等于預(yù)讀請(qǐng)求的偏移量且讀請(qǐng)求的偏移量+讀請(qǐng)求的長度小于等于預(yù)讀請(qǐng)求的偏移量+預(yù)讀請(qǐng)求的長度,即read, offset = currentPrefetch. offset且 read, offset+read. length < = currentPrefetch. offset+currentPrefetch, length。所述的第五步下一次預(yù)讀請(qǐng)求為這個(gè)新的預(yù)讀請(qǐng)求的文件句柄和當(dāng)前預(yù)讀請(qǐng)求的文件句柄一致,請(qǐng)求號(hào)是當(dāng)前的預(yù)讀請(qǐng)求號(hào)+1,偏移是當(dāng)前預(yù)讀請(qǐng)求的偏移+當(dāng)前預(yù)讀請(qǐng)求的長度,長度是預(yù)讀請(qǐng)求的缺省長度,即nextPrefetch. fd = currentPrefetch. fd ;nextPrefetch. no = currentPrefetch. no+1 ;nextPrefetch. offset = currentPrefetch. offset+currentPrefetch, length ;nextPrefetch. length = PREFETCH—SIZE。
所述的第五步中的存入buffer中的數(shù)據(jù)是指當(dāng)前預(yù)讀請(qǐng)求所讀取的數(shù)據(jù),即 buffer, start = currentPrefetch. offset ;buffer, length = currentprefetch. length。與現(xiàn)有技術(shù)相比,本發(fā)明具有針對(duì)現(xiàn)有的網(wǎng)絡(luò)文件系統(tǒng)預(yù)讀策略中沒能把網(wǎng)絡(luò)傳輸和服務(wù)器端磁盤IO并行起來的缺點(diǎn),通過改變發(fā)送預(yù)讀請(qǐng)求和接收預(yù)讀數(shù)據(jù)的順序,使得網(wǎng)絡(luò)傳輸和磁盤IO并行起來,這樣提高了讀數(shù)據(jù)的吞吐量,具體為1) Interleave (交錯(cuò))網(wǎng)絡(luò)傳輸和disk訪問,實(shí)現(xiàn)延遲隱藏;當(dāng)客戶端需要接收當(dāng)前預(yù)讀請(qǐng)求的數(shù)據(jù)的時(shí)候,如果它立即就接收數(shù)據(jù)然后再發(fā)送下次的預(yù)讀請(qǐng)求,那么當(dāng)它接收數(shù)據(jù)的時(shí)候服務(wù)器端的IO就沒有運(yùn)轉(zhuǎn)起來,服務(wù)器必須等待客戶端完全收完數(shù)據(jù)然后發(fā)送下一次的預(yù)讀請(qǐng)求才能進(jìn)行磁盤IO操作。本發(fā)明的優(yōu)勢(shì)在于當(dāng)客戶端需要接收當(dāng)前預(yù)讀請(qǐng)求的數(shù)據(jù)的時(shí)候,先把下一次預(yù)讀請(qǐng)求發(fā)送到服務(wù)器端,這樣一方面可以通過網(wǎng)絡(luò)傳輸把當(dāng)前預(yù)讀請(qǐng)求的數(shù)據(jù)傳輸給客戶端,一方面服務(wù)器由于較早收到了下一次的預(yù)讀請(qǐng)求,可以進(jìn)行IO操作,完全實(shí)現(xiàn)了延遲隱藏。2)多個(gè)請(qǐng)求依次發(fā)送,消除多個(gè)請(qǐng)求導(dǎo)致的磁頭干擾現(xiàn)象;為了提高性能,網(wǎng)絡(luò)文件系統(tǒng)服務(wù)器端往往采用多線程IO的方式,但是也帶來了一些問題。比如會(huì)把客戶端的順序請(qǐng)求視為隨機(jī)請(qǐng)求,影響了服務(wù)器端的預(yù)讀策略和磁盤尋道。由于我們的預(yù)讀請(qǐng)求不是一起發(fā)送到服務(wù)器端而是依次發(fā)送,最大限度的降低了這種順序讀請(qǐng)求被視為隨機(jī)讀請(qǐng)求的情況,有效的利用了磁盤的IO特性。


圖1為本發(fā)明的流程圖;圖2為現(xiàn)有的預(yù)讀方法所花時(shí)間圖;圖3為本發(fā)明的預(yù)讀方法所花時(shí)間圖。
具體實(shí)施例方式下面結(jié)合附圖和具體實(shí)施例對(duì)本發(fā)明進(jìn)行詳細(xì)說明。實(shí)施例本實(shí)施例中的客戶端是Linux操作系統(tǒng),安裝有NFSv3客戶程序,服務(wù)端也是 Linux操作系統(tǒng),安裝有NFSv3服務(wù)器程序。具體步驟如1所示,第一步,初始化工作設(shè)置一個(gè)讀緩沖區(qū)buffer用于緩存從服務(wù)器端讀來的數(shù)據(jù),并且buffer的內(nèi)容都初始化為0,buffer的大小為1MB。所緩存的內(nèi)容在文件中的偏移量為 buffer, offset = 0,長度為 buffer, length = 0。缺省的預(yù)讀大小 PREFETCH_SIZE =1MB。第二步,客戶端收到應(yīng)用發(fā)來的第一次讀請(qǐng)求,比如read, fd = 1 ;read, no = 1 ;read, offset = 0 ;read, length = 1MB,由于 read, offset+read. length = 0+1MB = 1MB > buffer, length = 0,說明 buffer里沒有應(yīng)用所需的數(shù)據(jù),并且之前也沒發(fā)過預(yù)讀請(qǐng)求(currentPreftch = NULL),于是就向服務(wù)器端轉(zhuǎn)發(fā)讀請(qǐng)求,并把數(shù)據(jù)接收上來直接返回給應(yīng)用。第三步,發(fā)送第一次預(yù)讀請(qǐng)求,比如這次預(yù)讀請(qǐng)求的長度為1MB,則
currentPrefetch. fd = read, fd = 1 ;currentPrefetch. no = 1 ;currentPrefetch. offset = read, offset+read. length = 0+1MB = 1MB ;currentPrefetch. length = PREFETCH_SIZE = 1MB第四步,當(dāng)新的讀請(qǐng)求到來時(shí),比如這個(gè)讀請(qǐng)求是read, fd = 1 ;read, no = 2 ; read, offset = 1MB, read, length = 512KB。先檢查buffer看有沒有需要的數(shù)據(jù),由于 read, offset+read. length = 1MB+512KB = 1. 5MB > buffer, length = 0,說明 buffer 里沒有需要的數(shù)據(jù)。執(zhí)行下一步。第五步,檢查讀請(qǐng)求的范圍是否包含在當(dāng)前預(yù)讀的請(qǐng)求范圍內(nèi),由于read, offset = 1MB = currentPrefetch. offset 且read, length = 512KB <= currentPrefetch. length = 1MB,說明在范圍內(nèi),先發(fā)送下一次的予頁讀請(qǐng)求 nextPrefetch. fd = 1 ;nextPrefetch. no = currentPrefetch. no+1 =1+1 = 2 ;nextPrefetch. offset = currentPrefetch. offset+currentPrefetch. length =1MB+1MB = 2MB, nextPrefetch. length = PREFETCH_SIZE = 1MB。再把當(dāng)前預(yù)讀的數(shù)據(jù)接收上來,存入buffer,則buffer, start = currentPrefetch. offset = 1MB ;buffer, length = currentPrefetch. length = 1MB,并把應(yīng)用所需的數(shù)據(jù)返回。再把下一次預(yù)讀置為當(dāng)前予頁讀,艮口 currentPrefetch. no = nextPrefetch,則 currentPrefetch. fd = 1, currentPrefetch. no = 2, currentPrefetch. offset = 2MB, currentPrefetch. length = 1MB。第六步,當(dāng)新的讀請(qǐng)求到來時(shí),比如這個(gè)讀請(qǐng)求是read, fd = 1 ;read, no = 3 ; read, offset = 1. 5MB,read, length = 1MB。先檢查buffer看有沒有需要的數(shù)據(jù),由于read, offset = 1. 5MB > = buffer, start = 1MB 且 read, offset < = buffer, start+buffer. length = 1MB+1MB = 2MB,說明 buffer有需要的數(shù)據(jù),直接返回,并且由于read, offset+read. length = 1. 5MB+1MB = 1. 5MB > buffer, start+buffer. length = 2MB,需要把多余的數(shù)據(jù)打包成新的讀請(qǐng)求read, fd = read, fd = 1 ;read, no = read, no+1 = 4 ;read, length = read, offset+read. length-(buffer, start+buffer. length)= 1. 5MB+1MB-(1MB+1MB) = 512KB ;read, offset = buffer, start+buffer. length = 1MB+1MB = 2MB。重新執(zhí)行這個(gè)步驟。第七步,這個(gè)新的讀請(qǐng)求是read, fd = l,read. no = 4,read, offset = 2MB,read, length = 512KB。先檢查buffer看有沒有需要的數(shù)據(jù),由于read, offset+read. length = 2MB+512KB = 2. 5MB > buffer, start+buffer. length = 1MB+1MB = 2MB,說明buffer里沒有需要的數(shù)據(jù)。執(zhí)行下一步。第八步,檢查讀請(qǐng)求的范圍是否包含在當(dāng)前預(yù)讀的請(qǐng)求范圍內(nèi),由于read, offset = 2MB = currentPrefetch. offset 且read, length = 512KB <= currentPrefetch. length = 1MB,說明在范圍內(nèi),先發(fā)送下一次的預(yù)讀請(qǐng)求
nextPrefetch. fd = currentPrefetch. fd = 1 ;nextPrefetch. no = currentPrefetch. no+1 = 2+1 = 3 ;nextPrefetch. offset = currentPrefetch. offset+currentPrefetch. length = 2MB+1MB = 3MB, nextPrefetch. length = PREFETCH_SIZE = 1MB。再把當(dāng)前預(yù)讀的數(shù)據(jù)接收上來,存入buffer,則 buffer.start = currentPrefetch.offset = 2MB ;buffer, length = currentPrefetch. length = 1MB,并把應(yīng)用所需的數(shù)據(jù)返回。再把下一次預(yù)讀置為當(dāng)前予頁讀,艮口 currentPrefetch. no = nextPrefetch,則 currentPrefetch. fd = 1, currentPrefetch. no = 3, currentPrefetch. offset = 3MB, currentPrefetch. length = 1MB。依次按照?qǐng)?zhí)行步驟執(zhí)行下去。圖2和圖3,是本發(fā)明相比原有的預(yù)讀方法的優(yōu)勢(shì)。其中橫坐標(biāo)是時(shí)間軸。從圖2、圖3可以看出,假設(shè)發(fā)送預(yù)讀請(qǐng)求的時(shí)間是Tl,服務(wù)器端收預(yù)讀數(shù)據(jù)的時(shí)間為T3(網(wǎng)絡(luò)傳輸時(shí)間),服務(wù)器端做磁盤10的時(shí)間是Τ2。其中Tl << Τ2,Tl << Τ3, 可以忽略。則按照傳統(tǒng)的預(yù)讀方法,η次預(yù)讀需要的時(shí)間為η*(Τ1+Τ2+Τ3)。而按照本發(fā)明的方法需要時(shí)間為2*Tl+T2+T3+(n-l)*maX(T2,T3)。
權(quán)利要求
1.一種用于網(wǎng)絡(luò)文件系統(tǒng)的流式數(shù)據(jù)預(yù)讀方法,其特征在于,包括以下步驟第一步,初始化工作客戶端設(shè)置一個(gè)用于緩存從服務(wù)器端讀來的數(shù)據(jù)的讀緩沖區(qū)buffer ;第二步,客戶端收到用戶發(fā)來的讀請(qǐng)求時(shí),判斷是否為首次收到讀請(qǐng)求,若為是,客戶端向服務(wù)器端轉(zhuǎn)發(fā)讀請(qǐng)求,并將從服務(wù)器端接收上來的數(shù)據(jù)直接返回給用戶;若為否執(zhí)行第四步;第三步,客戶端向服務(wù)器發(fā)送的當(dāng)前預(yù)讀請(qǐng)求;第四步,當(dāng)新的讀請(qǐng)求收到時(shí)客戶端先判斷buffer是否存在該讀請(qǐng)求所需要的數(shù)據(jù), 若為是,直接把存在的部分?jǐn)?shù)據(jù)返回給用戶,并將buffer中沒有的剩余數(shù)據(jù)打包成新的讀請(qǐng)求重新執(zhí)行第四步;若為否,執(zhí)行第五步;第五步,客戶端判斷該讀請(qǐng)求的范圍是否包含在當(dāng)前預(yù)讀請(qǐng)求范圍內(nèi),若為是,則先發(fā)送下一次預(yù)讀請(qǐng)求,再把當(dāng)前預(yù)讀的數(shù)據(jù)收上來,存入buffer,并把用戶所需的數(shù)據(jù)返回, 再把下一次預(yù)讀置為當(dāng)前預(yù)讀,并返回第四步;若為否,返回第二步。
2.根據(jù)權(quán)利要求1所述的一種用于網(wǎng)絡(luò)文件系統(tǒng)的流式數(shù)據(jù)預(yù)讀方法,其特征在于, 所述的buffer包括所緩沖的數(shù)據(jù)在文件中的偏移量buffer, start和長度buffer, length, 該長度buffer, length小于buffer的大小BUF_SIZE,其中BUF_SUE可根據(jù)需要設(shè)置。
3.根據(jù)權(quán)利要求1所述的一種用于網(wǎng)絡(luò)文件系統(tǒng)的流式數(shù)據(jù)預(yù)讀方法,其特征在于, 所述的第二步中的首次收到讀請(qǐng)求的客戶端狀態(tài)為buffer為空且之前沒有發(fā)過預(yù)讀請(qǐng)求。
4.根據(jù)權(quán)利要求2所述的一種用于網(wǎng)絡(luò)文件系統(tǒng)的流式數(shù)據(jù)預(yù)讀方法,其特征在于, 所述的第二步和第四步中的讀請(qǐng)求包括請(qǐng)求的文件句柄read, fd、編號(hào)read, no、偏移量 read, offset、長度read, length和用于收取數(shù)據(jù)的用戶緩沖區(qū)地址read, buf。
5.根據(jù)權(quán)利要求4所述的一種用于網(wǎng)絡(luò)文件系統(tǒng)的流式數(shù)據(jù)預(yù)讀方法,其特征在于,所述的第三步中的當(dāng)前預(yù)讀請(qǐng)求包括預(yù)讀請(qǐng)求的文件句柄currentPrefetch. fd、偏移 currentPrefetch. offset禾口長度currentPretch. length,所述的預(yù)讀請(qǐng)求的文件句柄禾口讀請(qǐng)求的文件句柄一致,即currentPrefetch. fd = read, fd,所述的預(yù)讀請(qǐng)求的偏移為當(dāng)前讀請(qǐng)求的偏移+當(dāng)前讀請(qǐng)求的長度,即currentPrefetch. offset = read, offset+read. length, currentPretch. length 為預(yù)讀大小的缺省值 PREFETCH_SIZE。
6.根據(jù)權(quán)利要求5所述的一種用于網(wǎng)絡(luò)文件系統(tǒng)的流式數(shù)據(jù)預(yù)讀方法,其特征在于, 所述的第四步中的buffer存在該讀請(qǐng)求所需要的數(shù)據(jù)為讀請(qǐng)求的偏移量大于等于buffer 包含的數(shù)據(jù)在文件中的偏移量且小于等于buffer包含的數(shù)據(jù)在文件中的偏移量加buffer 包含的數(shù)據(jù)在文件中的長度,艮口 read, offset > = buffer, start且read, offset < = buffer, start+buffer. length ;所述的返回給用戶的數(shù)據(jù)為以buffer所表示的文件中read, offset為偏移量, min (buffer, start+buffer. length-read, offset, read, length)為長度白勺數(shù)據(jù)。
7.根據(jù)權(quán)利要求6所述的一種用于網(wǎng)絡(luò)文件系統(tǒng)的流式數(shù)據(jù)預(yù)讀方法,其特征在于, 所述的將buffer中沒有的剩余數(shù)據(jù)打包成新的讀請(qǐng)求具體為當(dāng) read, offset+read. length > buffer, start+buffer. length 的時(shí) 侯,除返回給用戶的數(shù)據(jù)外,余下的數(shù)據(jù)打包成新的讀請(qǐng)求read, fd = read, fd ;read, no = read, no+1 ;read, length = read, offset+read. length- (buffer, start+buffer. length);read, offset = buffer, start+buffer. Iength0
8.根據(jù)權(quán)利要求7所述的一種用于網(wǎng)絡(luò)文件系統(tǒng)的流式數(shù)據(jù)預(yù)讀方法,其特征在于, 所述的第五步中的讀請(qǐng)求范圍包含在預(yù)讀請(qǐng)求范圍為讀請(qǐng)求的偏移量等于預(yù)讀請(qǐng)求的偏移量且讀請(qǐng)求的偏移量+讀請(qǐng)求的長度小于等于預(yù)讀請(qǐng)求的偏移量+預(yù)讀請(qǐng)求的長度,即read, offset = currentPrefetch. offset且 read, offset+read. length < = currentPrefetch. offset+currentPrefetch. length。
9.根據(jù)權(quán)利要求8所述的一種用于網(wǎng)絡(luò)文件系統(tǒng)的流式數(shù)據(jù)預(yù)讀方法,其特征在于, 所述的第五步下一次預(yù)讀請(qǐng)求為這個(gè)新的預(yù)讀請(qǐng)求的文件句柄和當(dāng)前預(yù)讀請(qǐng)求的文件句柄一致,請(qǐng)求號(hào)是當(dāng)前的預(yù)讀請(qǐng)求號(hào)+1,偏移是當(dāng)前預(yù)讀請(qǐng)求的偏移+當(dāng)前預(yù)讀請(qǐng)求的長度,長度是預(yù)讀請(qǐng)求的缺省長度,即nextPrefetch. fd = currentPrefetch. fd ;nextPrefetch. no = currentPrefetch. no+1 ;nextPrefetch. offset = currentPrefetch. offset+currentPrefetch. length ;nextPrefetch. length = PREFETCH—SIZE。
10.根據(jù)權(quán)利要求9所述的一種用于網(wǎng)絡(luò)文件系統(tǒng)的流式數(shù)據(jù)預(yù)讀方法,其特征在于,所述的第五步中的存入buffer中的數(shù)據(jù)是指當(dāng)前預(yù)讀請(qǐng)求所讀取的數(shù)據(jù),即buffer, start = currentPrefetch. offset ;buffer.length = currentprefetch. length。
全文摘要
本發(fā)明涉及一種用于網(wǎng)絡(luò)文件系統(tǒng)的流式數(shù)據(jù)預(yù)讀方法,包括以下步驟第一步,初始化工作;第二步,客戶端收到用戶發(fā)來的讀請(qǐng)求;第三步,客戶端向服務(wù)器發(fā)送的當(dāng)前預(yù)讀請(qǐng)求;第四步,當(dāng)新的讀請(qǐng)求收到時(shí)客戶端先判斷buffer是否存在該讀請(qǐng)求所需要的數(shù)據(jù),若為是,直接把存在的部分?jǐn)?shù)據(jù)返回給用戶,并將buffer中沒有的剩余數(shù)據(jù)打包成新的讀請(qǐng)求重新執(zhí)行第四步;若為否,執(zhí)行第五步;第五步,客戶端判斷該讀請(qǐng)求的范圍是否包含在當(dāng)前預(yù)讀請(qǐng)求范圍內(nèi),若為是,則先發(fā)送下一次預(yù)讀請(qǐng)求,再把當(dāng)前預(yù)讀的數(shù)據(jù)收上來,存入buffer,并把用戶所需的數(shù)據(jù)返回,再把下一次預(yù)讀置為當(dāng)前預(yù)讀,并返回第四步。與現(xiàn)有技術(shù)相比,本發(fā)明具有提高了讀數(shù)據(jù)的吞吐量等優(yōu)點(diǎn)。
文檔編號(hào)H04L12/56GK102567548SQ20121003968
公開日2012年7月11日 申請(qǐng)日期2012年2月21日 優(yōu)先權(quán)日2012年2月21日
發(fā)明者戰(zhàn)科宇, 李小勇, 王玲惠, 王皓, 胡鵬, 閆鶴 申請(qǐng)人:上海交通大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
平泉县| 天全县| 西林县| 栾川县| 本溪| 安龙县| 贵德县| 延吉市| 涪陵区| 道孚县| 潼关县| 桂林市| 锦屏县| 岚皋县| 黑山县| 长沙县| 肇庆市| 璧山县| 凉城县| 哈尔滨市| 宁南县| 伊宁市| 牡丹江市| 包头市| 汉寿县| 北辰区| 观塘区| 乐平市| 永昌县| 景德镇市| 河津市| 邵武市| 香格里拉县| 赞皇县| 阜宁县| 甘泉县| 高陵县| 搜索| 龙山县| 如东县| 抚顺市|