專利名稱:一種動(dòng)態(tài)提高服務(wù)器輸入輸出吞吐量的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種計(jì)算機(jī)應(yīng)用技術(shù),尤其涉及一種動(dòng)態(tài)提高服務(wù)器輸入輸出(IO) 吞吐量的方法和系統(tǒng)。
背景技術(shù):
當(dāng)前,隨著用戶業(yè)務(wù)量的不斷增長(zhǎng)以及企業(yè)數(shù)據(jù)的不斷積累,對(duì)服務(wù)器輸入輸出 (IO)的吞吐量要求也越來(lái)越高。雖然目前的高容量的內(nèi)存不斷推出和成本的下降,但是內(nèi) 存的容量與快速硬盤的容量相比還是有比較大的差距。另外,內(nèi)存的擴(kuò)展也受限于服務(wù)器 雙列直插存儲(chǔ)模塊(DIMM)插槽數(shù)等的限制,擴(kuò)展性有限。從客戶端對(duì)數(shù)據(jù)的讀寫訪問規(guī)律進(jìn)行分析,程序?qū)?shù)據(jù)塊的訪問滿足局部性原 理。如果用戶讀取一個(gè)大的多媒體文件很可能造成內(nèi)存緩沖區(qū)的溢出,如果后續(xù)程序再次 訪問被溢出的數(shù)據(jù),將會(huì)造成抖動(dòng)線程,從而大大降低服務(wù)器的性能。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題是需要提供一種提高服務(wù)器輸入輸出吞吐量的技術(shù), 以解決現(xiàn)有技術(shù)中服務(wù)器的服務(wù)性能受限于輸入輸出吞吐量的不足。為了解決上述技術(shù)問題,本發(fā)明提供了一種動(dòng)態(tài)提高服務(wù)器輸入輸出吞吐量的方 法,包括服務(wù)器將客戶端發(fā)送的讀寫請(qǐng)求解析為數(shù)據(jù)塊讀寫操作請(qǐng)求,根據(jù)該數(shù)據(jù)塊讀寫 操作請(qǐng)求判斷目標(biāo)數(shù)據(jù)塊是否在一高速緩存中,是則根據(jù)該數(shù)據(jù)塊讀寫操作請(qǐng)求對(duì)該目標(biāo) 數(shù)據(jù)塊執(zhí)行讀寫操作,否則對(duì)一快速磁盤中的一數(shù)據(jù)訪問信息鏈表進(jìn)行遍歷;如果在該數(shù)據(jù)訪問信息鏈表中找到該目標(biāo)數(shù)據(jù)塊,則根據(jù)該數(shù)據(jù)塊讀寫操作請(qǐng)求 將該目標(biāo)數(shù)據(jù)塊拷貝到該高速緩存執(zhí)行數(shù)據(jù)讀寫操作,否則從一低速硬盤讀取該目標(biāo)數(shù)據(jù) 塊存儲(chǔ)到該高速緩存中并執(zhí)行數(shù)據(jù)讀寫操作,將該目標(biāo)數(shù)據(jù)塊映射到快速磁盤;其中,執(zhí)行上述數(shù)據(jù)讀寫操作時(shí),更新所述數(shù)據(jù)訪問信息鏈表。優(yōu)選地,所述客戶端刪除數(shù)據(jù)塊時(shí),判斷所述高速緩存中是否存在待刪數(shù)據(jù)塊,存 在則在該高速緩存中刪除該待刪數(shù)據(jù)塊,更新所述數(shù)據(jù)信息訪問鏈表并刪除所述慢速磁盤 中的所述待刪數(shù)據(jù)塊,否則直接更新所述數(shù)據(jù)信息訪問鏈表并刪除所述慢速磁盤中的所述 待刪數(shù)據(jù)塊。優(yōu)選地,所述數(shù)據(jù)訪問信息鏈表包括所述目標(biāo)數(shù)據(jù)塊的訪問頻率。優(yōu)選地,對(duì)所述數(shù)據(jù)訪問信息鏈表進(jìn)行遍歷的步驟,包括利用哈希函數(shù)對(duì)所述數(shù)據(jù)訪問信息鏈表進(jìn)行遍歷。優(yōu)選地,所述數(shù)據(jù)訪問信息鏈表中包含有若干單鏈表,通過該哈希函數(shù),利用所述 數(shù)據(jù)塊讀寫操作請(qǐng)求和數(shù)據(jù)塊地址生成一個(gè)鍵值,具有相同鍵值的數(shù)據(jù)塊處于同一個(gè)單鏈 表中;其中,每一個(gè)單鏈表節(jié)點(diǎn)的結(jié)構(gòu)包括數(shù)據(jù)塊的物理地址、數(shù)據(jù)塊的訪問頻率和指向下一個(gè)數(shù)據(jù)塊的指針;各單鏈表按照數(shù)據(jù)塊的訪問頻率由大到小遞減鏈接,數(shù)據(jù)塊的物 理地址指向所述快速磁盤的數(shù)據(jù)塊。優(yōu)選地,更新所述數(shù)據(jù)訪問信息鏈表的步驟,包括讀取哈希鍵值對(duì)應(yīng)的存儲(chǔ)段(bucket)單鏈表;遍歷單鏈表,比較每個(gè)節(jié)點(diǎn)中數(shù)據(jù)塊的物理地址值,如果相等則停止遍歷,然后增 加該節(jié)點(diǎn)的數(shù)據(jù)塊訪問頻率的統(tǒng)計(jì)值,并且將該節(jié)點(diǎn)進(jìn)行前移。優(yōu)選地,所述客戶端刪除數(shù)據(jù)塊時(shí),計(jì)算所述待刪數(shù)據(jù)塊的哈希鍵值,遍歷該待刪 數(shù)據(jù)塊所在的bucket單鏈表,比較節(jié)點(diǎn)數(shù)據(jù)結(jié)構(gòu)中的數(shù)據(jù)塊地址值是否與待刪數(shù)據(jù)塊的 地址值相等,相等則刪除描述該節(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)并停止遍歷,否則直接停止遍歷。為了解決上述技術(shù)問題,本發(fā)明還提供了一種動(dòng)態(tài)提高服務(wù)器輸入輸出吞吐量的 系統(tǒng),包括解析模塊、判斷模塊、第一執(zhí)行模塊、查找模塊、第二執(zhí)行模塊、第三執(zhí)行模塊及 更新模塊,其中該解析模塊,用于將客戶端發(fā)送的讀寫請(qǐng)求解析為數(shù)據(jù)塊讀寫操作請(qǐng)求;該判斷模塊,用于根據(jù)該數(shù)據(jù)塊讀寫操作請(qǐng)求判斷目標(biāo)數(shù)據(jù)塊是否在一高速緩存 中;該第一執(zhí)行模塊,用于所述判斷模塊判斷該目標(biāo)數(shù)據(jù)塊在該高速緩存中時(shí),根據(jù) 該數(shù)據(jù)塊讀寫操作請(qǐng)求對(duì)該目標(biāo)數(shù)據(jù)塊執(zhí)行讀寫操作;該查找模塊,用于所述判斷模塊判斷該目標(biāo)數(shù)據(jù)塊不在該高速緩存中時(shí),對(duì)一快 速磁盤中的一數(shù)據(jù)訪問信息鏈表進(jìn)行遍歷;該第二執(zhí)行模塊,用于所述查找模塊在該數(shù)據(jù)訪問信息鏈表中查找到該目標(biāo)數(shù)據(jù) 塊時(shí),根據(jù)該數(shù)據(jù)塊讀寫操作請(qǐng)求對(duì)該目標(biāo)數(shù)據(jù)塊執(zhí)行讀寫操作;該第三執(zhí)行模塊,用于所述查找模塊未在該數(shù)據(jù)訪問信息鏈表中查找到該目標(biāo)數(shù) 據(jù)塊時(shí),從一低速硬盤讀取該目標(biāo)數(shù)據(jù)塊存儲(chǔ)到該高速緩存中并執(zhí)行數(shù)據(jù)讀寫操作,將該 目標(biāo)數(shù)據(jù)塊映射到快速磁盤;該更新模塊,用于該第一執(zhí)行模塊、第二執(zhí)行模塊或第三執(zhí)行模塊執(zhí)行上述數(shù)據(jù) 讀寫操作時(shí),更新所述數(shù)據(jù)訪問信息鏈表。與現(xiàn)有技術(shù)相比,本發(fā)明的一個(gè)實(shí)施例利用哈希(Hash)機(jī)制和鏈表算法動(dòng)態(tài)檢 測(cè)服務(wù)器讀寫操作,提高了緩沖區(qū)命中率,從而實(shí)現(xiàn)了服務(wù)器高IO吞吐量的技術(shù)效果。本 發(fā)明的技術(shù)方案利用Hash機(jī)制和鏈表算法動(dòng)態(tài)檢測(cè)服務(wù)器讀寫操作,來(lái)提高緩沖區(qū)命中 率從而實(shí)現(xiàn)服務(wù)器高IO吞吐量的優(yōu)勢(shì),主要體現(xiàn)以下方面(1)任何時(shí)刻經(jīng)常訪問的數(shù)據(jù)都會(huì)在快速硬盤中保持一個(gè)副本,提高了服務(wù)器的 安全性,而且解決了由于內(nèi)存容量限制所造成的程序抖動(dòng)問題;(2)服務(wù)器不會(huì)因?yàn)橥蝗粩嚯姷纫馔馇闆r造成機(jī)器重啟后經(jīng)常訪問的數(shù)據(jù)信息丟 失而進(jìn)行慢速硬盤的讀取,避免了重啟大大降低服務(wù)器IO性能的缺陷;(3)通過使用Hash機(jī)制和鏈表算法,動(dòng)態(tài)統(tǒng)計(jì)數(shù)據(jù)的使用頻率,大大縮短了數(shù)據(jù) 的檢索時(shí)間。以上這些優(yōu)勢(shì)都是傳統(tǒng)方法采用一級(jí)高速內(nèi)存緩存機(jī)制進(jìn)行數(shù)據(jù)訪問所無(wú)法做 到的。本發(fā)明的其它特征和優(yōu)點(diǎn)將在隨后的說(shuō)明書中闡述,并且,部分地從說(shuō)明書中變得顯而易見,或者通過實(shí)施本發(fā)明而了解。本發(fā)明的目的和其他優(yōu)點(diǎn)可通過在說(shuō)明書、權(quán)利 要求書以及附圖中所特別指出的結(jié)構(gòu)來(lái)實(shí)現(xiàn)和獲得。
附圖用來(lái)提供對(duì)本發(fā)明的進(jìn)一步理解,并且構(gòu)成說(shuō)明書的一部分,與本發(fā)明的實(shí) 施例一起用于解釋本發(fā)明,并不構(gòu)成對(duì)本發(fā)明的限制。在附圖中圖1是本發(fā)明實(shí)施例所提數(shù)據(jù)塊讀寫訪問方法的流程示意圖;圖2是本發(fā)明實(shí)施例所提Hash機(jī)制和鏈表的算法原理示意圖;圖3是本發(fā)明實(shí)施例所提客戶端刪除數(shù)據(jù)塊的流程示意圖;圖4是本發(fā)明實(shí)施例所提動(dòng)態(tài)提高服務(wù)器輸入輸出吞吐量的系統(tǒng)的組成示意圖。
具體實(shí)施例方式以下將結(jié)合附圖及實(shí)施例來(lái)詳細(xì)說(shuō)明本發(fā)明的實(shí)施方式,借此對(duì)本發(fā)明如何應(yīng)用 技術(shù)手段來(lái)解決技術(shù)問題,并達(dá)成技術(shù)效果的實(shí)現(xiàn)過程能充分理解并據(jù)以實(shí)施。首先,如果不沖突,本發(fā)明實(shí)施例以及實(shí)施例中的各個(gè)特征可以相互結(jié)合,均在本 發(fā)明的保護(hù)范圍之內(nèi)。另外,在附圖的流程圖示出的步驟可以在諸如一組計(jì)算機(jī)可執(zhí)行指 令的計(jì)算機(jī)系統(tǒng)中執(zhí)行,并且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以 以不同于此處的順序執(zhí)行所示出或描述的步驟。從整個(gè)的數(shù)據(jù)流向進(jìn)行分析,提高數(shù)據(jù)訪問的命中率,縮短數(shù)據(jù)塊的檢索時(shí)間是 提高服務(wù)器IO吞吐量的關(guān)鍵因素。不合適的內(nèi)存管理算法和檢索機(jī)制將大大影響應(yīng)用程 序的效率。此外,在內(nèi)存中緩存的數(shù)據(jù),往往由于突然斷電或者意外的情況造成緩存中的數(shù) 據(jù)丟失,從而造成對(duì)同一個(gè)數(shù)據(jù)塊的下次訪問還要繼續(xù)從硬盤進(jìn)行讀寫,明顯影響了訪問 速度。本發(fā)明提出一種基于哈希(Hash)機(jī)制和鏈表搜索的算法來(lái)實(shí)現(xiàn)緩存數(shù)據(jù)的快速 檢索,通過構(gòu)造多個(gè)不同的Hash鏈表,縮短數(shù)據(jù)塊檢索時(shí)間。另外,引入快速硬盤以避免因 為一些意外故障造成系統(tǒng)宕機(jī)后重啟時(shí)數(shù)據(jù)丟失造成訪問數(shù)據(jù)滯后的問題。通過本發(fā)明, 系統(tǒng)重啟后對(duì)數(shù)據(jù)訪問的統(tǒng)計(jì)信息鏈表仍保存在快速硬盤上,從而實(shí)現(xiàn)數(shù)據(jù)的快速訪問。實(shí)施例一、數(shù)據(jù)塊讀寫訪問方法如圖1所示,本實(shí)施例主要包括如下步驟步驟S110,當(dāng)服務(wù)器接收到客戶端發(fā)出的讀寫請(qǐng)求時(shí),服務(wù)器將該讀寫請(qǐng)求解析 為數(shù)據(jù)塊讀寫操作請(qǐng)求;步驟S120,服務(wù)器根據(jù)該數(shù)據(jù)塊讀寫操作請(qǐng)求,在高速緩存中進(jìn)行數(shù)據(jù)檢索,判斷 目標(biāo)數(shù)據(jù)塊是否在高速緩存中,是(檢索命中)則轉(zhuǎn)步驟S130,否(檢索未命中)則轉(zhuǎn)步驟 S140 ;步驟S130,服務(wù)器根據(jù)數(shù)據(jù)塊讀寫請(qǐng)求對(duì)目標(biāo)數(shù)據(jù)塊執(zhí)行相應(yīng)的讀寫操作,同時(shí) 對(duì)處于快速磁盤中的數(shù)據(jù)訪問信息鏈表進(jìn)行更新,結(jié)束;步驟S140,利用Hash函數(shù)對(duì)快速磁盤中的數(shù)據(jù)訪問信息鏈表進(jìn)行遍歷,如果找到 目標(biāo)數(shù)據(jù)塊,則轉(zhuǎn)步驟S150,否則轉(zhuǎn)步驟S160 ;步驟S150,根據(jù)該數(shù)據(jù)塊讀寫操作請(qǐng)求將目標(biāo)數(shù)據(jù)塊拷貝到高速緩存執(zhí)行數(shù)據(jù)讀寫操作,同時(shí)更新數(shù)據(jù)訪問信息鏈表,結(jié)束;步驟S160,訪問低速硬盤,從低速硬盤讀取目標(biāo)數(shù)據(jù)塊并存儲(chǔ)到高速緩存中并執(zhí) 行數(shù)據(jù)讀寫操作,然后將目標(biāo)數(shù)據(jù)塊映射到快速磁盤,同時(shí)更新數(shù)據(jù)訪問信息鏈表,結(jié)束; 本步驟中,將目標(biāo)數(shù)據(jù)塊映射到快速磁盤,防止因下次再訪問該數(shù)據(jù)塊因高速緩存容量不 足造成溢出必須再次讀低速磁盤造成的系統(tǒng)IO吞吐量下降。本實(shí)施例中,如果高速緩存中的目標(biāo)數(shù)據(jù)塊發(fā)生改變(即變成臟塊),需要同步更 新到快速磁盤和低速磁盤中。上述數(shù)據(jù)訪問信息鏈表中主要包括數(shù)據(jù)塊的訪問頻率等信息。上述對(duì)數(shù)據(jù)訪問信息鏈表進(jìn)行更新,主要包括增加該目標(biāo)數(shù)據(jù)塊的操作數(shù)(比如 加1),將該目標(biāo)數(shù)據(jù)塊所在的存儲(chǔ)段(bucket)鏈表進(jìn)行前移。這樣當(dāng)數(shù)據(jù)塊再次被訪問時(shí)就可以大大提高訪問速度,并提高數(shù)據(jù)庫(kù)的吞吐能 力。需要說(shuō)明的是,上述讀寫操作包括單純讀操作的處理處理、單純寫操作的數(shù)據(jù)處 理以及讀操作和寫操作一同進(jìn)行的數(shù)據(jù)處理。Hash機(jī)制和數(shù)據(jù)訪問信息鏈表的算法原理如圖2所示。數(shù)據(jù)訪問信息鏈表中包含有若干單鏈表,通過Hash函數(shù),利用數(shù)據(jù)塊讀寫操作請(qǐng) 求和數(shù)據(jù)塊地址生成一個(gè)鍵值,具有相同鍵值的數(shù)據(jù)塊處于同一個(gè)單鏈表中,其中每一個(gè) 單鏈表節(jié)點(diǎn)的結(jié)構(gòu)均包括數(shù)據(jù)塊的物理地址Bk add、數(shù)據(jù)塊的訪問頻率count (整形標(biāo)量, 初始化為0)和指向下一個(gè)數(shù)據(jù)塊的指針三部分,最末尾的單鏈表節(jié)點(diǎn)的指針值為空。每一個(gè)單鏈表的節(jié)點(diǎn)數(shù)據(jù)結(jié)構(gòu)都是按照該數(shù)據(jù)塊的訪問頻率(count值)由大到 小遞減鏈接的,數(shù)據(jù)塊的物理地址指向快速磁盤的數(shù)據(jù)塊。當(dāng)數(shù)據(jù)塊被訪問時(shí),更新數(shù)據(jù)訪 問信息鏈表的主要進(jìn)行如下動(dòng)作(1)讀取與Hash鍵值對(duì)應(yīng)的bucket單鏈表(即前述的數(shù)據(jù)信息訪問鏈表);(2)從鏈?zhǔn)组_始遍歷單鏈表,依次比較每個(gè)節(jié)點(diǎn)中的數(shù)據(jù)塊物理地址值,如果所查 找的目標(biāo)數(shù)據(jù)塊的地址與節(jié)點(diǎn)中的數(shù)據(jù)塊物理地址相等,則停止遍歷,然后將該節(jié)點(diǎn)的數(shù) 據(jù)塊訪問頻率的統(tǒng)計(jì)值count加1,并且將該節(jié)點(diǎn)進(jìn)行前移。當(dāng)有數(shù)據(jù)塊從慢速磁盤中讀取到高速緩存后,描述該數(shù)據(jù)塊的數(shù)據(jù)節(jié)點(diǎn)將根據(jù) Hash鍵值直接插入到相應(yīng)鏈表的末尾。實(shí)施例二、客戶端刪除數(shù)據(jù)塊的方法如圖3所示,本實(shí)施例主要包括如下步驟步驟S310,客戶端檢索高速緩存,判斷高速緩存中是否存在欲刪除的待刪數(shù)據(jù)塊, 如果該高速緩存中含有該待刪數(shù)據(jù)塊,則轉(zhuǎn)步驟S320,否則轉(zhuǎn)步驟S330 ;步驟S320,在該高速緩存中刪除該待刪數(shù)據(jù)塊,然后執(zhí)行步驟S330 ;步驟S330,更新快速磁盤中的數(shù)據(jù)訪問信息鏈表(將快速磁盤中的數(shù)據(jù)訪問信息 鏈表中的信息刪除),掃描慢速磁盤,刪除該慢速磁盤中的待刪數(shù)據(jù)塊,從而保證數(shù)據(jù)的一 致性。步驟S330中,當(dāng)進(jìn)行數(shù)據(jù)塊的刪除操作時(shí),Hash機(jī)制和數(shù)據(jù)訪問信息鏈表算法主 要進(jìn)行如下操作(1)計(jì)算欲刪除的待刪數(shù)據(jù)塊的Hash鍵值;
(2)遍歷該待刪數(shù)據(jù)塊所在的bucket單鏈表;(3)比較節(jié)點(diǎn)數(shù)據(jù)結(jié)構(gòu)中的數(shù)據(jù)塊地址值是否與待刪數(shù)據(jù)塊的地址值相等,如果 相等則刪除描述該節(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu),遍歷停止;如果不相等則直接停止遍歷。由上述實(shí)施例一和實(shí)施例二可見,數(shù)據(jù)的每次讀寫及刪除都會(huì)自動(dòng)更新數(shù)據(jù)訪問 鏈表,以縮短目標(biāo)數(shù)據(jù)被再次訪問時(shí)的檢索時(shí)間,同時(shí)利用快速磁盤進(jìn)行快速數(shù)據(jù)傳輸,避 免了直接從慢速磁盤執(zhí)行操作需要耗費(fèi)大量時(shí)間的缺陷。本發(fā)明基于程序的局部性訪問原理,包括時(shí)間局部性和空間局部性,結(jié)合Hash機(jī) 制和鏈表搜索算法的優(yōu)點(diǎn),動(dòng)態(tài)統(tǒng)計(jì)數(shù)據(jù)塊的訪問頻率并進(jìn)行自動(dòng)優(yōu)化,提高了數(shù)據(jù)塊緩 沖命中率,縮短了數(shù)據(jù)塊的檢索時(shí)間,實(shí)現(xiàn)了通過數(shù)據(jù)塊高命中率來(lái)提高磁盤IO吞吐量的 技術(shù)。本發(fā)明技術(shù)方案依據(jù)數(shù)據(jù)塊的訪問頻率,通過提高數(shù)據(jù)塊的檢索頻率來(lái)縮短數(shù)據(jù) 檢索時(shí)間,實(shí)現(xiàn)了系統(tǒng)的快速IO吞吐,解決了單服務(wù)器由于內(nèi)存容量限制所造成的抖動(dòng)問 題,避免了因意外情況造成的機(jī)器突然斷電時(shí)的數(shù)據(jù)丟失。實(shí)施例三、一種動(dòng)態(tài)提高服務(wù)器輸入輸出吞吐量的系統(tǒng)如圖4所示,本實(shí)施例主要包括解析模塊410、判斷模塊420、第一執(zhí)行模塊430、查 找模塊440、第二執(zhí)行模塊450、第三執(zhí)行模塊460及更新模塊470,其中該解析模塊410,用于將客戶端發(fā)送的讀寫請(qǐng)求解析為數(shù)據(jù)塊讀寫操作請(qǐng)求;該判斷模塊420,與該解析模塊410相連,用于根據(jù)該數(shù)據(jù)塊讀寫操作請(qǐng)求判斷目 標(biāo)數(shù)據(jù)塊是否在一高速緩存中;該第一執(zhí)行模塊430,與該判斷模塊420相連,用于所述判斷模塊420判斷該目標(biāo) 數(shù)據(jù)塊在該高速緩存中時(shí),根據(jù)該數(shù)據(jù)塊讀寫操作請(qǐng)求對(duì)該目標(biāo)數(shù)據(jù)塊執(zhí)行讀寫操作;該查找模塊440,與該判斷模塊420相連,用于所述判斷模塊420判斷該目標(biāo)數(shù)據(jù) 塊不在該高速緩存中時(shí),對(duì)一快速磁盤中的一數(shù)據(jù)訪問信息鏈表進(jìn)行遍歷;該第二執(zhí)行模塊450,與該查找模塊440相連,用于所述查找模塊440在該數(shù)據(jù)訪 問信息鏈表中查找到該目標(biāo)數(shù)據(jù)塊時(shí),根據(jù)該數(shù)據(jù)塊讀寫操作請(qǐng)求對(duì)該目標(biāo)數(shù)據(jù)塊執(zhí)行讀 寫操作;該第三執(zhí)行模塊460,與該查找模塊440相連,用于所述查找模塊440未在該數(shù)據(jù) 訪問信息鏈表中查找到該目標(biāo)數(shù)據(jù)塊時(shí),從一低速硬盤讀取該目標(biāo)數(shù)據(jù)塊存儲(chǔ)到該高速緩 存中并執(zhí)行數(shù)據(jù)讀寫操作,將該目標(biāo)數(shù)據(jù)塊映射到快速磁盤;該更新模塊470,與該第一執(zhí)行模塊430、第二執(zhí)行模塊450及第三執(zhí)行模塊460 相連,用于該第一執(zhí)行模塊430、第二執(zhí)行模塊450或第三執(zhí)行模塊460執(zhí)行上述數(shù)據(jù)讀寫 操作時(shí),更新所述數(shù)據(jù)訪問信息鏈表。本發(fā)明提供的一種動(dòng)態(tài)提高服務(wù)器輸入輸出吞吐量的方法和系統(tǒng),特別適合于用 戶環(huán)境中對(duì)服務(wù)器IO性能要求比較高,而且數(shù)據(jù)安全性要求比較的環(huán)境中,服務(wù)器中任何 時(shí)刻都存在經(jīng)常訪問數(shù)據(jù)的一個(gè)備份,同時(shí)利用數(shù)據(jù)訪問信息鏈表實(shí)現(xiàn)了數(shù)據(jù)的二級(jí)緩 存,大大提高了服務(wù)器的IO吞吐量。在硬盤的緩沖區(qū)內(nèi),利用目標(biāo)數(shù)據(jù)塊的地址及信息和訪問頻率形成一個(gè)基于Hash 算法的快速訪問信息鏈表,隨著對(duì)某一個(gè)數(shù)據(jù)塊的訪問頻率的提高,該數(shù)據(jù)塊將自動(dòng)向鏈 表的隊(duì)首遷移,大大減少后續(xù)訪問該數(shù)據(jù)塊的搜索時(shí)間。隨著數(shù)據(jù)塊訪問頻率的降低,數(shù)據(jù)塊會(huì)自動(dòng)地移動(dòng)到Hash鏈表的末尾。一旦緩沖區(qū)容量不足,將首先替換處于鏈表末尾的數(shù) 據(jù)塊,從而避免了經(jīng)常訪問的數(shù)據(jù)塊被替換的目的。本發(fā)明技術(shù)方案在進(jìn)行數(shù)據(jù)訪問時(shí)引入了三級(jí)機(jī)制,首先數(shù)據(jù)訪問系統(tǒng)內(nèi)存,如 果命中直接從內(nèi)存讀出數(shù)據(jù),否則通過Hash機(jī)制和鏈表算法去查找快速硬盤,迅速讀取數(shù) 據(jù)到內(nèi)存,實(shí)現(xiàn)訪問。如果通過Hash機(jī)制和鏈表算法還沒有檢索到需要的數(shù)據(jù)塊,則從快 速硬盤直接讀到低速硬盤,同時(shí)將數(shù)據(jù)映射到快速硬盤中,并更新鏈表。本發(fā)明技術(shù)方案對(duì) 于互聯(lián)網(wǎng)用戶或者對(duì)系統(tǒng)IO吞吐量要求比較高的用戶,能大大提高服務(wù)器的IO處理能力, 縮短響應(yīng)時(shí)間。本發(fā)明主要通過以下三種方式來(lái)提高服務(wù)器服務(wù)器IO吞吐量(1)盡可能緩存更多的數(shù)據(jù)到快速硬盤中,避免數(shù)據(jù)直接從大容量的慢速硬盤讀 取數(shù)據(jù);(2)通過減少系統(tǒng)檢索數(shù)據(jù)塊的時(shí)間,通過Hash機(jī)制,使數(shù)據(jù)的訪問直接定位到 某個(gè)存儲(chǔ)段(bucket)上,然后在該bucket鏈上,采用折半查找的方法,達(dá)到快速檢索數(shù)據(jù) 的目的;(3)通過劃分多個(gè)bucket將數(shù)據(jù)塊進(jìn)行有效劃分,避免造成某個(gè)單鏈表過長(zhǎng),影 響檢索時(shí)間。本領(lǐng)域的技術(shù)人員應(yīng)該明白,上述的本發(fā)明的各模塊或各步驟可以用通用的計(jì)算 裝置來(lái)實(shí)現(xiàn),它們可以集中在單個(gè)的計(jì)算裝置上,或者分布在多個(gè)計(jì)算裝置所組成的網(wǎng)絡(luò) 上,可選地,它們可以用計(jì)算裝置可執(zhí)行的程序代碼來(lái)實(shí)現(xiàn),從而,可以將它們存儲(chǔ)在存儲(chǔ) 裝置中由計(jì)算裝置來(lái)執(zhí)行,或者將它們分別制作成各個(gè)集成電路模塊,或者將它們中的多 個(gè)模塊或步驟制作成單個(gè)集成電路模塊來(lái)實(shí)現(xiàn)。這樣,本發(fā)明不限制于任何特定的硬件和 軟件結(jié)合。雖然本發(fā)明所揭露的實(shí)施方式如上,但所述的內(nèi)容只是為了便于理解本發(fā)明而采 用的實(shí)施方式,并非用以限定本發(fā)明。任何本發(fā)明所屬技術(shù)領(lǐng)域內(nèi)的技術(shù)人員,在不脫離本 發(fā)明所揭露的精神和范圍的前提下,可以在實(shí)施的形式上及細(xì)節(jié)上作任何的修改與變化, 但本發(fā)明的專利保護(hù)范圍,仍須以所附的權(quán)利要求書所界定的范圍為準(zhǔn)。
9
權(quán)利要求
一種動(dòng)態(tài)提高服務(wù)器輸入輸出吞吐量的方法,其特征在于,包括服務(wù)器將客戶端發(fā)送的讀寫請(qǐng)求解析為數(shù)據(jù)塊讀寫操作請(qǐng)求,根據(jù)該數(shù)據(jù)塊讀寫操作請(qǐng)求判斷目標(biāo)數(shù)據(jù)塊是否在一高速緩存中,是則根據(jù)該數(shù)據(jù)塊讀寫操作請(qǐng)求對(duì)該目標(biāo)數(shù)據(jù)塊執(zhí)行讀寫操作,否則對(duì)一快速磁盤中的一數(shù)據(jù)訪問信息鏈表進(jìn)行遍歷;如果在該數(shù)據(jù)訪問信息鏈表中找到該目標(biāo)數(shù)據(jù)塊,則根據(jù)該數(shù)據(jù)塊讀寫操作請(qǐng)求將該目標(biāo)數(shù)據(jù)塊拷貝到該高速緩存執(zhí)行數(shù)據(jù)讀寫操作,否則從一低速硬盤讀取該目標(biāo)數(shù)據(jù)塊存儲(chǔ)到該高速緩存中并執(zhí)行數(shù)據(jù)讀寫操作,將該目標(biāo)數(shù)據(jù)塊映射到快速磁盤;其中,執(zhí)行上述數(shù)據(jù)讀寫操作時(shí),更新所述數(shù)據(jù)訪問信息鏈表。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于所述客戶端刪除數(shù)據(jù)塊時(shí),判斷所述高速緩存中是否存在待刪數(shù)據(jù)塊,存在則在該高 速緩存中刪除該待刪數(shù)據(jù)塊,更新所述數(shù)據(jù)信息訪問鏈表并刪除所述慢速磁盤中的所述待 刪數(shù)據(jù)塊,否則直接更新所述數(shù)據(jù)信息訪問鏈表并刪除所述慢速磁盤中的所述待刪數(shù)據(jù) 塊。
3.根據(jù)權(quán)利要求1或2所述的方法,其特征在于所述數(shù)據(jù)訪問信息鏈表包括所述目標(biāo)數(shù)據(jù)塊的訪問頻率。
4.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,對(duì)所述數(shù)據(jù)訪問信息鏈表進(jìn)行遍歷的 步驟,包括利用哈希函數(shù)對(duì)所述數(shù)據(jù)訪問信息鏈表進(jìn)行遍歷。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于所述數(shù)據(jù)訪問信息鏈表中包含有若干單鏈表,通過該哈希函數(shù),利用所述數(shù)據(jù)塊讀寫 操作請(qǐng)求和數(shù)據(jù)塊地址生成一個(gè)鍵值,具有相同鍵值的數(shù)據(jù)塊處于同一個(gè)單鏈表中;其中,每一個(gè)單鏈表節(jié)點(diǎn)的結(jié)構(gòu)包括數(shù)據(jù)塊的物理地址、數(shù)據(jù)塊的訪問頻率和指向下 一個(gè)數(shù)據(jù)塊的指針;各單鏈表按照數(shù)據(jù)塊的訪問頻率由大到小遞減鏈接,數(shù)據(jù)塊的物理地 址指向所述快速磁盤的數(shù)據(jù)塊。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,更新所述數(shù)據(jù)訪問信息鏈表的步驟,包括讀取哈希鍵值對(duì)應(yīng)的存儲(chǔ)段(bucket)單鏈表;遍歷單鏈表,比較每個(gè)節(jié)點(diǎn)中數(shù)據(jù)塊的物理地址值,如果相等則停止遍歷,然后增加該 節(jié)點(diǎn)的數(shù)據(jù)塊訪問頻率的統(tǒng)計(jì)值,并且將該節(jié)點(diǎn)進(jìn)行前移。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于所述客戶端刪除數(shù)據(jù)塊時(shí),計(jì)算所述待刪數(shù)據(jù)塊的哈希鍵值,遍歷該待刪數(shù)據(jù)塊所在 的bucket單鏈表,比較節(jié)點(diǎn)數(shù)據(jù)結(jié)構(gòu)中的數(shù)據(jù)塊地址值是否與待刪數(shù)據(jù)塊的地址值相等, 相等則刪除描述該節(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)并停止遍歷,否則直接停止遍歷。
8.一種動(dòng)態(tài)提高服務(wù)器輸入輸出吞吐量的系統(tǒng),其特征在于,包括解析模塊、判斷模 塊、第一執(zhí)行模塊、查找模塊、第二執(zhí)行模塊、第三執(zhí)行模塊及更新模塊,其中該解析模塊,用于將客戶端發(fā)送的讀寫請(qǐng)求解析為數(shù)據(jù)塊讀寫操作請(qǐng)求;該判斷模塊,用于根據(jù)該數(shù)據(jù)塊讀寫操作請(qǐng)求判斷目標(biāo)數(shù)據(jù)塊是否在一高速緩存中;該第一執(zhí)行模塊,用于所述判斷模塊判斷該目標(biāo)數(shù)據(jù)塊在該高速緩存中時(shí),根據(jù)該數(shù) 據(jù)塊讀寫操作請(qǐng)求對(duì)該目標(biāo)數(shù)據(jù)塊執(zhí)行讀寫操作;該查找模塊,用于所述判斷模塊判斷該目標(biāo)數(shù)據(jù)塊不在該高速緩存中時(shí),對(duì)一快速磁 盤中的一數(shù)據(jù)訪問信息鏈表進(jìn)行遍歷;該第二執(zhí)行模塊,用于所述查找模塊在該數(shù)據(jù)訪問信息鏈表中查找到該目標(biāo)數(shù)據(jù)塊 時(shí),根據(jù)該數(shù)據(jù)塊讀寫操作請(qǐng)求對(duì)該目標(biāo)數(shù)據(jù)塊執(zhí)行讀寫操作;該第三執(zhí)行模塊,用于所述查找模塊未在該數(shù)據(jù)訪問信息鏈表中查找到該目標(biāo)數(shù)據(jù)塊 時(shí),從一低速硬盤讀取該目標(biāo)數(shù)據(jù)塊存儲(chǔ)到該高速緩存中并執(zhí)行數(shù)據(jù)讀寫操作,將該 目標(biāo) 數(shù)據(jù)塊映射到快速磁盤;該更新模塊,用于該第一執(zhí)行模塊、第二執(zhí)行模塊或第三執(zhí)行模塊執(zhí)行上述數(shù)據(jù)讀寫 操作時(shí),更新所述數(shù)據(jù)訪問信息鏈表。
全文摘要
本發(fā)明公開了一種動(dòng)態(tài)提高服務(wù)器IO吞吐量的方法和系統(tǒng),以解決現(xiàn)有技術(shù)中服務(wù)器的服務(wù)性能受限于輸入輸出吞吐量的不足,其中該方法包括服務(wù)器將客戶端發(fā)送的讀寫請(qǐng)求解析為數(shù)據(jù)塊讀寫操作請(qǐng)求,判斷目標(biāo)數(shù)據(jù)塊是否在一高速緩存中,是則對(duì)目標(biāo)數(shù)據(jù)塊執(zhí)行讀寫操作,否則對(duì)一快速磁盤中的一數(shù)據(jù)訪問信息鏈表進(jìn)行遍歷,如果找到目標(biāo)數(shù)據(jù)塊則將目標(biāo)數(shù)據(jù)塊拷貝到高速緩存執(zhí)行數(shù)據(jù)讀寫操作,否則從一低速硬盤讀取目標(biāo)數(shù)據(jù)塊存儲(chǔ)到高速緩存中并執(zhí)行數(shù)據(jù)讀寫操作,將目標(biāo)數(shù)據(jù)塊映射到快速磁盤;其中,執(zhí)行上述數(shù)據(jù)讀寫操作時(shí),更新數(shù)據(jù)訪問信息鏈表。本發(fā)明動(dòng)態(tài)檢測(cè)服務(wù)器讀寫操作,提高了緩沖區(qū)命中率,從而實(shí)現(xiàn)了服務(wù)器高IO吞吐量的技術(shù)效果。
文檔編號(hào)G06F13/16GK101887398SQ201010209740
公開日2010年11月17日 申請(qǐng)日期2010年6月25日 優(yōu)先權(quán)日2010年6月25日
發(fā)明者王友升 申請(qǐng)人:浪潮(北京)電子信息產(chǎn)業(yè)有限公司