專利名稱:動態(tài)地重新組織存儲器中的數(shù)據(jù)對象的裝置和方法
技術(shù)領(lǐng)域:
本發(fā)明 一般地涉及存儲器管理和系統(tǒng)性能優(yōu)化,并且具體而言涉及一 種在事件驅(qū)動的系統(tǒng)中動態(tài)地重新組織存儲器中的數(shù)據(jù)對象的裝置和方 法。
背景技術(shù):
中央處理器(CPU)是計算機的核心,90%以上的數(shù)據(jù)信息都是由它 來完成的。它的工作速度快慢直接影響到整個計算機的運行速度。CPU進 行處理的數(shù)據(jù)信息多是從計算機存儲器中調(diào)用的,但CPU的運算速度要比 存儲器快得多,為了解決CPtJ速度和存儲器速度之間的差異問題,可采用 高速緩沖存儲器或高速緩存,用于存儲CPU經(jīng)常使用的數(shù)據(jù)和指令,以提 高數(shù)據(jù)傳輸速度。高速緩存的容量越大,存儲的信息越多,可減少CPU與 存儲器之間的數(shù)據(jù)交換次數(shù),提高CPU的運算效率。存儲器中被CPU訪 問最頻繁的數(shù)據(jù)和指令凈皮復(fù)制到高速緩存中,這樣CPU就可以不經(jīng)常到速
度較慢的存儲器中讀取數(shù)據(jù),而只要到速度快得多的高速緩存中讀取數(shù)據(jù)。
高速緩存通常由靜態(tài)RAM組成,其結(jié)構(gòu)較復(fù)雜,并且靜態(tài)RAM的 集成度低且成本高,因此考慮到成本和設(shè)計因素,在有限的CPU芯片面積 上,高速緩存的容量不可能做得太大。另外,對于高速緩存的應(yīng)用存在算 法的問題。即便高速緩存容量很大,但如果沒有一種高效率的算法,則將 導(dǎo)致應(yīng)用中高速緩存中數(shù)據(jù)的命中率偏低,而無法有效發(fā)揮出大容量高速 緩存的優(yōu)勢。算法與高速緩存容量相輔相成,大容量的高速緩存需要更為 高效的算法,否則性能會大打折扣。從技術(shù)角度上說,高容量高速緩存的 算法是直接影響到CPU性能發(fā)揮的重要因素。這里要特別指出的是1.因為高速緩存只復(fù)制了存儲器中的少部分數(shù) 據(jù),所以CPU到高速緩存中尋找數(shù)據(jù)時,也會出現(xiàn)找不到的情況,即高速 緩存缺失,因為這些數(shù)據(jù)沒有從存儲器復(fù)制到高速緩存中。這時CPU還是 會到存儲器中去尋找數(shù)據(jù),這樣系統(tǒng)的整體速度就會變慢。不過CPU會把 這些數(shù)據(jù)復(fù)制到高速緩存中,以便下一次就不用再到存儲器中進行讀取。 2.隨著時間的變化,被訪問最頻繁的數(shù)據(jù)不是一成不變的,也就是說,之 前還不頻繁讀取的數(shù)據(jù),此時可能需要被頻繁訪問;或者剛才還是頻繁進 行訪問的數(shù)據(jù),現(xiàn)在又不再需要進行訪問。因此高速緩存中的數(shù)據(jù)要經(jīng)常 按照一定的算法來更換,這樣才能保證高速緩存中的數(shù)據(jù)是4皮訪問最頻繁 的。3.由于現(xiàn)代的高速緩存的容量越來越大,高速緩存常常會一次性從存 儲器中讀取一定量的數(shù)據(jù),其比所需要的數(shù)據(jù)更多,這通常是通過從存儲 器中讀取從所需數(shù)據(jù)開始的若干連續(xù)的數(shù)據(jù)塊而實現(xiàn)的。由上述內(nèi)容可知, 提高高速緩存命中率(hit ratio),即,使CPU盡可能地從高速緩存中讀 取到所需的數(shù)據(jù),而不必經(jīng)常性訪問存儲器,可以顯著提高系統(tǒng)的整體性 能。
隨著Web2.0時代的到來,Web被看成是用于豐富因特網(wǎng)應(yīng)用(Rich Internet Application, RIA)的最重要的應(yīng)用平臺。Web通常支持客戶端-服務(wù)器體系結(jié)構(gòu)。這尤其對服務(wù)器的性能要求很高,因此需要對服務(wù)器上 的CPU、高速緩存和存儲器進行較好的管理。RIA技術(shù)允許在因特網(wǎng)上以 一種類似于使用Web —樣簡單的方式來部署豐富客戶端程序。其是一種用 戶接口,比用超文本標記語言(HTML)能實現(xiàn)的接口來說,其更加健壯、 反應(yīng)更加靈敏和更具有令人感興趣的可視化特性。由于Web 2.0更加強調(diào) 用戶參與,以數(shù)據(jù)和信息共享為核心,因此應(yīng)用的開發(fā)呈現(xiàn)出快速開發(fā)、 立即上線、馬上可用、持續(xù)完善的輕量級開發(fā)模式。
在Web2.0時代,服務(wù)器所面臨的問題在于l)存在大量應(yīng)用服務(wù) 器可能在一個邏輯單元(盒子)中運行數(shù)百個應(yīng)用,并且新的應(yīng)用易于被 創(chuàng)建并且持續(xù)地被創(chuàng)建;2)面向數(shù)據(jù)的訪問模型數(shù)據(jù)是Web2.0服務(wù)的 核心,其中存在眾多小尺寸數(shù)據(jù)以及高頻率的數(shù)據(jù)訪問模式。因此,對于傳統(tǒng)的應(yīng)用服務(wù)器(諸如Websphere、 Weblogic等),其 通常采用一請求、 一應(yīng)答服務(wù),其中每個請求在被處理完之前在服務(wù)器上 保留幾分鐘,這樣的傳統(tǒng)方式不適于高效處理Web 2.0服務(wù)的大量應(yīng)用。 因此,服務(wù)器需要更強的擴展性和更強的性能。例如,Web服務(wù)器應(yīng)用可 以被優(yōu)化用于安全地運行海量的壽命短且無狀態(tài)的腳本,其中每個腳本運 行其自己的進程,從而與其它腳;^目分離,因此可以以更精細的粒度被保 護。
一種適用于Web2.0的服務(wù)器應(yīng)用是一種事件驅(qū)動的系統(tǒng)。該系統(tǒng)中 的所有行為被建才莫作為事件集合,并且提供了 一系列事件處理器以用于響 應(yīng)于事件并提供所需的行為。這與現(xiàn)有的面向流的Web應(yīng)用模型不同,也 不同于通常的面向?qū)ο蟮南到y(tǒng)。每個事件處理器相互獨立,并且其中大多 數(shù)事件處理器都需要訪問高速緩存以獲得所需要的數(shù)據(jù),因此,當一個應(yīng) 用被執(zhí)行時,其調(diào)用多個獨立的事件處理器,而這些事件處理器可能是針 對該應(yīng)用而臨時組合的。這樣,在高速緩存中存儲的數(shù)據(jù)需要頻繁地與存 儲器進行交換,從而在高速緩存中清除之前的數(shù)據(jù)對象并從存儲器中讀取 當前事件處理器所需的數(shù)據(jù)對象。系統(tǒng)的性能瓶頸之一在于,在高速緩存 中反復(fù)清除舊的數(shù)據(jù)對象并讀取新的數(shù)據(jù)對象。然而,在操作中,在一個 應(yīng)用執(zhí)行期間順序地運行的兩個或多個單獨的事件處理器往往執(zhí)行的是相 關(guān)聯(lián)的操作,其具有相關(guān)聯(lián)的功能,從而導(dǎo)致所需要訪問的數(shù)據(jù)對象往往 也是具有關(guān)聯(lián)的。
因此,在上述的事件驅(qū)動的服務(wù)器運行環(huán)境中,當某些應(yīng)用頻繁地被 重復(fù)執(zhí)行時,存在以下需求,即,增加高速緩存的命中率,從而提高系統(tǒng) 運行的效率。
發(fā)明內(nèi)容
針對現(xiàn)有技術(shù)中所存在的缺陷,本發(fā)明的目的之一是減少高速緩存缺 失、增加應(yīng)用的執(zhí)^f亍性能。
在本發(fā)明的第一方面中,提出了一種在事件驅(qū)動的系統(tǒng)中動態(tài)地重新
7組織存儲器中的數(shù)據(jù)對象的裝置,其中所述系統(tǒng)中的所有行為被建模作為 事件集合,并且提供了一系列事件處理器以用于響應(yīng)于事件并提供所需的
行為,所述裝置包括關(guān)聯(lián)監(jiān)視與分析單元,用于收集存儲器使用行為信 息,并對所收集的存儲器使用行為信息進行分析以獲取數(shù)據(jù)對象之間的對 象關(guān)聯(lián)信息;以;5U故置管理器,用于基于所分析出的對象關(guān)聯(lián)信息重新組 織存儲器中的數(shù)據(jù)對象。
在本發(fā)明的第二方面中,提出了一種在事件驅(qū)動的系統(tǒng)中動態(tài)地重新 組織存儲器中的數(shù)據(jù)對象的方法,其中所述系統(tǒng)中的所有行為被建才莫作為 事件集合,并且提供了 一系列事件處理器以用于響應(yīng)于事件并提供所需的 行為,所述方法包括收集存儲器使用行為信息;對所收集的存儲器使用 行為信息進行分析以獲取數(shù)據(jù)對象之間的對象關(guān)聯(lián)信息;以及基于所分析 出的對象關(guān)聯(lián)信息重新組織存儲器中的數(shù)據(jù)對象。
在本發(fā)明的第三方面中,提出了一種計算機程序產(chǎn)品,其可被加載到 計算機上并包括程序代碼工具,當所述計算機程序產(chǎn)品在計算機上運行時, 所述程序代碼工具適于執(zhí)行所述的在事件驅(qū)動的系統(tǒng)中動態(tài)地重新組織存 儲器中的數(shù)據(jù)對象的方法的所有步驟。
本發(fā)明所提出的 一種在事件驅(qū)動的系統(tǒng)中動態(tài)地重新組織存儲器中的 數(shù)據(jù)對象的裝置和方法能夠很好地管理存儲器,減少高速緩存缺失,從而 提高了系統(tǒng)的執(zhí)行速度,進而提高系統(tǒng)性能和效率。
在附帶的權(quán)利要求中闡明了被認為是本發(fā)明新穎特性的特征。然而, 通過參考以下結(jié)合附圖的說明性實施例的詳細描述,將最好地理解本發(fā)明 本身以及其優(yōu)選使用模式、另外的目的和優(yōu)點,在附圖中
圖1示出了在事件驅(qū)動的服務(wù)器上的傳統(tǒng)的應(yīng)用執(zhí)行過程的示例;
圖2是示出了根據(jù)本發(fā)明 一個實施例的在事件驅(qū)動的系統(tǒng)中動態(tài)地重 新組織存儲器中的數(shù)據(jù)對象的裝置的體系結(jié)構(gòu)的框圖3示出了對于數(shù)據(jù)對象的物理遷移的示例性過程;圖4示出了根據(jù)圖1的示例,在通過本發(fā)明的實施例所執(zhí)行的數(shù)據(jù)對 象遷移過程之后,具有關(guān)聯(lián)關(guān)系的數(shù)據(jù)對象的分布;以及
圖5示出了根據(jù)本發(fā)明一個實施例的在事件驅(qū)動的系統(tǒng)中動態(tài)地重新 組織存儲器中的數(shù)據(jù)對象的方法的示例性流程圖。
需要注意,在全體附圖中,相同或相似的標號指代的是相同或相似的 單元或組件。
具體實施例方式
在下文中將結(jié)合附圖對本發(fā)明的示范性實施例進行描述。為了清楚和 簡明起見,在說明書中并未描述實際實現(xiàn)方式的所有特征。然而,應(yīng)該了
決定,以便實現(xiàn)開發(fā)人員的具體目標,例如符合與系統(tǒng)及業(yè)務(wù)相關(guān)的那些 限制條件,其中,這些限制條件會隨著實施方式的不同而改變。此外,還 應(yīng)該了解,雖然開發(fā)工作有可能是非常復(fù)雜和費時的,但對得益于這個公 開內(nèi)容的本領(lǐng)域技術(shù)人員來說,這種開發(fā)工作僅僅是例行的任務(wù)。
此外,還需要說明的一點是,為了避免因不必要的細節(jié)而混淆了本發(fā) 明,在附圖中僅僅示出了與根據(jù)本發(fā)明的方案密切相關(guān)的裝置結(jié)構(gòu)和/或處 理步驟,而省略了與本發(fā)明關(guān)系不大的其它細節(jié)。
為了更好地理解本發(fā)明及其所具有的優(yōu)點,首先參見圖1。圖l是在 事件驅(qū)動的服務(wù)器上的傳統(tǒng)的應(yīng)用執(zhí)行過程的示例的圖。如圖1所示,在 服務(wù)器的服務(wù)平臺上運行一個應(yīng)用,例如,所迷應(yīng)用是一種出現(xiàn)查詢服務(wù), 例如,在本發(fā)明的一個實施例中,已知一個人的姓名,實時查詢他/她目前 所在地的地名(例如某小區(qū)或某大樓等)。從事件處理器的視角看來,該 應(yīng)用的功能可以由6個事件處理器來完成請求事件處理器105、姓名表 事件處理器110、姓名-地理信息事件處理器115、地理-地名映射事件處理 器120、響應(yīng)事件處理器125、以及日志事件處理器130。所述的6個事件 處理器可以是不同的,其可以由相同的或者不同的開發(fā)者所開發(fā)。由于初 始的設(shè)計獨立性,這樣的事件處理器之間可以沒有直接關(guān)聯(lián)。僅在運行時,它們由于該應(yīng)用的特定功能要求而被臨時組合起來。當接收到請求之時, 一個線程被動態(tài)調(diào)用以遍歷圖1中所示的事件處理器鏈,并處理該請求。 因此,它們之間的關(guān)聯(lián)性是在運行時才會出現(xiàn)。而下一個用于實現(xiàn)其它功 能的應(yīng)用很可能將實現(xiàn)不同的工作流程,從而需要不同的事件處理器。
根據(jù)本發(fā)明的一個實施例,在本示例中,首先,請求事件處理器105 通過提供某人的姓名而發(fā)出對于查詢此人目前所在地的地名的請求。由姓 名表事件處理器110負責(zé)通過所提供的基于文本的姓名在姓名對象池140 中搜索相應(yīng)的姓名標識(例如數(shù)據(jù)對象NAME1、 NAME2、 NAME3等)。 然后,由姓名-地理信息事件處理器115通過纟皮搜索到的姓名標識在姓名-地理對象池150中搜索相應(yīng)的地理位置信息(例如數(shù)據(jù)對象OBJl、 OBJ2、 OBJ3等),所述地理位置信息例如是GPS衛(wèi)星定位數(shù)據(jù)信息或者本領(lǐng)域 技術(shù)人員所公知的其它表示地理位置的數(shù)據(jù)。然后,由地理-地名映射事件 處理器120通過所搜索到的地理位置信息在地理-地名對象池160中搜索相 應(yīng)的地名信息(例如數(shù)據(jù)對象COMl、 COM2、 COM3等),所述地名信 息例如是某小區(qū)、某大樓、某街道、或者其它地名。在搜索到相應(yīng)的地名 信息之后,響應(yīng)事件處理器125將該搜索到的地名信息作為響應(yīng)返回。然 后曰志事件處理器130將上述的請求-響應(yīng)交互記入曰志。
通過上述流程可以看出,當姓名表事件處理器110被運行時,它需要 調(diào)用并搜索姓名對象池140,并將其中相應(yīng)的姓名標識(例如NAME2 )從 存儲器讀取到高速緩存中。而當所述流程進行到姓名-地理信息事件處理器 115時,它需要調(diào)用并搜索姓名-地理對象池150,并將其中相應(yīng)的地理位 置信息(例如OBJ2)從存儲器讀取到高速緩存中。進而當所述流程進行 到地理-地名映射事件處理器120時,它需要調(diào)用并搜索地理-地名對象池 160,并將其中相應(yīng)的地名信息(例如COM2)從存儲器讀取到高速緩存 中。在上述任一事件處理器的運行期間,如果高速緩存已滿,則還需要首 先從高速緩存中清除已存在的舊的內(nèi)容。上述每次讀取過程都是因為高速 緩存中缺少需要的數(shù)據(jù)對象,即,高速緩存缺失。因此,當在服務(wù)器上該 出現(xiàn)查詢服務(wù)的應(yīng)用被頻繁地執(zhí)行時,高速緩存中之前讀取的姓名標識對象(例如NAME2 )、地理位置信息對象(OBJ2 )和地名信息對象(COM2 ) 很可能已經(jīng)被清除,從而再次面臨高速緩存缺失。因此,所期望的是,當 服務(wù)器上執(zhí)行的所述應(yīng)用再次讀取NAME2時,OBJ2和COM2也被同時 讀取到高速緩存中,從而有很大的可能性可以避免后兩次高速緩存缺失, 從而達到提高系統(tǒng)運行效率的目的。
圖2是才艮據(jù)本發(fā)明一個實施例的在事件驅(qū)動的系統(tǒng)中動態(tài)地重新組織 存儲器中的數(shù)據(jù)對象的裝置的示例性體系結(jié)構(gòu)。如圖2所示,所述裝置包 括關(guān)聯(lián)監(jiān)視與分析單元201和放置管理器202,其中所迷關(guān)聯(lián)監(jiān)視與分析 單元201用于收集存儲器使用行為信息并對所收集的存儲器使用行為信息 進行分析以獲取數(shù)據(jù)對象之間的對象關(guān)聯(lián)信息,所述放置管理器202用于 基于所分析出的對象關(guān)聯(lián)信息重新組織存儲器中的數(shù)據(jù)對象。
根據(jù)本發(fā)明的一個實施例,關(guān)聯(lián)監(jiān)視與分析單元201包括運行時監(jiān)視 器210、關(guān)聯(lián)分析器215和對象關(guān)聯(lián)數(shù)據(jù)庫220。在關(guān)聯(lián)監(jiān)視與分析單元 201的操作中,運行時監(jiān)視器210用于收集存儲器使用行為信息,所述功 能可以通過系統(tǒng)應(yīng)用編程接口 (API)來提供。下面是運行時監(jiān)視器210 的工作示例。在此示例中,運行時監(jiān)視器210跟蹤每個線程的數(shù)據(jù)對象訪 問序列。例如,所述數(shù)據(jù)對象訪問序列具有如下的跟蹤日志 77附"S譜附75s725鵬 rAmw/ftx:SS 鮮柳吻e" T7iwe i8A3( 附J5sJ34iiis T^fecrrf 0xSS crccess o^/e" T7附e J S,附7 5s" 7鵬 7Veflflf 0, crcc柳吻V" COM2 關(guān)聯(lián)分析器215將分析存儲器使用行為信息(例如,上述的跟蹤日志) 以獲取數(shù)據(jù)對象之間的對象關(guān)聯(lián)信息。例如,從上述跟蹤日志中,關(guān)聯(lián)分 析器215發(fā)現(xiàn)數(shù)據(jù)對象NAME2、 OBJ2和COM2在很短的時間窗(例如 100毫秒)之內(nèi)由同一線程(線程0x88)順序地訪問。此訪問被稱為順序 訪問事件。如果關(guān)聯(lián)分析器215發(fā)現(xiàn)同樣的順序訪問事件頻繁發(fā)生,例如 在此示例中該事件在一分鐘內(nèi)出現(xiàn)了 153次,這超出了預(yù)定義的閾值(諸 如每分鐘100次),則關(guān)聯(lián)分析器215將把數(shù)據(jù)對象NAME2、 OBJ2和 COM2視為具有關(guān)聯(lián)關(guān)系。關(guān)聯(lián)分析器215把所分析出的關(guān)聯(lián)關(guān)系和相關(guān)的數(shù)據(jù)對象名稱存儲在對象關(guān)聯(lián)數(shù)據(jù)庫220中。對象關(guān)聯(lián)數(shù)據(jù)庫220可以 包含在存儲器中。在可替換實施例中,關(guān)聯(lián)分析器215可以把所分析出的 關(guān)聯(lián)關(guān)系和相關(guān)的數(shù)據(jù)對象名稱直接傳遞到放置管理器202中的相應(yīng)部件 (例如,放置代理225)。
根據(jù)本發(fā)明的一個實施例,在事件驅(qū)動的系統(tǒng)中動態(tài)地重新組織存儲 器中的數(shù)據(jù)對象的裝置可包括放置管理器202,后者可進一步包括;故置代 理225、放置算法存儲裝置230以l故置操作器235。在放置管理器202 的操作中,放置代理225周期性地(例如每5分鐘)在對象關(guān)聯(lián)數(shù)據(jù)庫220 中搜索新的對象關(guān)聯(lián)信息。在本示例中,放置代理225發(fā)現(xiàn)了關(guān)于數(shù)據(jù)對 象NAME2、 OBJ2和COM2的新的關(guān)聯(lián)關(guān)系。在可替換實施例中,放置 代理225也可以直接從所述關(guān)聯(lián)分析器215接收到新發(fā)現(xiàn)的對象關(guān)聯(lián)信息。 于是放置代理225可以訪問放置算法存儲裝置230,以從中調(diào)用適當?shù)姆?置算法來執(zhí)行針對該新的關(guān)聯(lián)關(guān)系的數(shù)據(jù)對象的^t置動作,例如對數(shù)據(jù)對 象進行重新組織。
放置算法存儲裝置230存儲了放置算法,其中放置算法用于確定是否 以及如何將所發(fā)現(xiàn)的具有關(guān)聯(lián)關(guān)系的數(shù)據(jù)對象進行放置(也稱為遷移)。 例如,由于數(shù)據(jù)對象NAME2是在所述關(guān)聯(lián)關(guān)系中首先調(diào)用的數(shù)據(jù)對象, 因此放置算法確定將數(shù)據(jù)對象NAME2保持在初始的存儲器地址,而將數(shù) 據(jù)對象OBJ2和COM2物理移動到存儲器中位于NAME2之后并與 NAME2相連續(xù)的地址。
在確定如何遷移數(shù)據(jù)對象之后,由放置操作器230基于所述關(guān)聯(lián)關(guān)系 和相關(guān)的數(shù)據(jù)對象,按照放置算法所確定的那樣保持數(shù)據(jù)對象NAME2不 動,而將數(shù)據(jù)對象OBJ2和COM2遷移到與NAME2相鄰的新地址。與此 同時,放置操作器230可能還需要將原本位于所述新地址的其它數(shù)據(jù)對象 移動到存儲器中的其它區(qū)域(例如空白區(qū)域),并相應(yīng)地更新存儲器上的 地址映射表。在放置操作器230完成數(shù)據(jù)對象的放置動作之后,放置代理 225將已執(zhí)行過^L置動作的所述關(guān)聯(lián)關(guān)系設(shè)置為舊的關(guān)聯(lián)關(guān)系,從而不會 在下一次周期性檢查中針對該對象關(guān)聯(lián)關(guān)系執(zhí)行重復(fù)的數(shù)據(jù)對象的放置操作。
應(yīng)該指出,才艮據(jù)本發(fā)明的一個實施例,在事件驅(qū)動的系統(tǒng)中動態(tài)地重 新組織存儲器中的數(shù)據(jù)對象的裝置僅監(jiān)視對象訪問行為并分析數(shù)據(jù)對象之 間的與訪問相關(guān)的關(guān)聯(lián),而不管所訪問的數(shù)據(jù)對象具體是什么以及訪問數(shù) 據(jù)對象的線程具體要執(zhí)行什么功能。因此,根據(jù)本發(fā)明一個實施例,所確 定的數(shù)據(jù)對象的關(guān)聯(lián)關(guān)系可以代表訪問順序上的緊密關(guān)聯(lián),其可能暗示著 數(shù)據(jù)對象之間具有某種關(guān)聯(lián),但不意味著數(shù)據(jù)對象之間 一定具有功能性關(guān) 聯(lián) 不過,只要所確定的具有關(guān)聯(lián)關(guān)系的數(shù)據(jù)對象頻繁地在短時間內(nèi)順序 地出現(xiàn),從而就能夠確定它們相互之間的關(guān)聯(lián)關(guān)系,則它們就會在存儲器 中被物理地放置在一起,從而便利于高速緩存一次性進行讀取。
下面參考一個簡單示例來說明根據(jù)本發(fā)明一個實施例的在事件驅(qū)動的 系統(tǒng)中動態(tài)地重新組織存儲器中的數(shù)據(jù)對象的裝置的具體操作。對于數(shù)據(jù)
對象的物理遷移的示例性過程可以如圖3所示。在圖3左側(cè)示出了在數(shù)據(jù) 對象的遷移操作之前的存儲器物理空間305以及對象索引空間310。圖中 示例性地顯示,在遷移之前的對象索引空間310中,所有的對象索引(在 圖3中具體標出8個)為零散分布。在遷移前的存儲器物理空間305中, 所有的數(shù)據(jù)對象也為零散分布。在存儲器物理空間305上所存儲的數(shù)據(jù)對 象之間并無明確的實質(zhì)性關(guān)聯(lián),例如,它們可能被隨機存儲在存儲器物理 空間305的各個物理位置上。所述數(shù)據(jù)對象與所述對象索引具有一一對應(yīng) 的關(guān)系,例如在圖3左側(cè)中示出了 8個對象索引(①至⑧)以及與它們相 對應(yīng)的8個數(shù)據(jù)對象。
根據(jù)本發(fā)明的一個實施例,運行時監(jiān)視器210收集存儲器使用行為信 息,并將所述信息記入日志。關(guān)聯(lián)分析器215將分析該日志,舉例而言, 其發(fā)現(xiàn)日志中的8個數(shù)據(jù)對象(分別對應(yīng)于對象索引①至⑧)具有關(guān)聯(lián)關(guān) 系,例如,它們總是很短時間內(nèi)被同一線程順序地訪問。這種新發(fā)現(xiàn)的關(guān) 聯(lián)關(guān)系及這8個數(shù)據(jù)對象的名稱被存儲在對象關(guān)聯(lián)數(shù)據(jù)庫220中。放置代 理225周期性地檢查對象關(guān)聯(lián)數(shù)據(jù)庫220,并找到所述新的關(guān)聯(lián)關(guān)系。其 調(diào)用放置算法存儲裝置230中存儲的放置算法,并由放置操作器235基于所述關(guān)聯(lián)關(guān)系和相關(guān)的數(shù)據(jù)對象,根據(jù)放置算法將具有關(guān)聯(lián)關(guān)系的8個數(shù) 據(jù)對象遷移到連續(xù)的存儲器塊中。
如圖3右側(cè)所示,在數(shù)據(jù)對象的遷移操作之后的對象索引空間320中, 8個對象索引(①至(D )仍保持零散分布。但在遷移操作之后的存儲器物 理空間315中,所述8個對象索引所對應(yīng)的8個數(shù)據(jù)對象不再保持零散分 布,而是被遷移到存儲器物理空間315中的連續(xù)位置,例如,占用連續(xù)的 8個存儲器塊。這樣,當把數(shù)據(jù)對象從存儲器讀取到高速緩存中時,由于 高速緩存一次性讀取的數(shù)據(jù)量比較大,所述連續(xù)的8個存儲器塊很有可能 被同時讀取到高速緩存中。這樣,具有關(guān)聯(lián)關(guān)系的8個數(shù)據(jù)對象都被包含 在高速緩存中。因此,當重復(fù)執(zhí)行需要順序調(diào)用這8個數(shù)據(jù)對象的應(yīng)用時, 該應(yīng)用就不需要等待高速緩存與存儲器之間進行數(shù)據(jù)交換,而是可以從高 速緩存中順序地獲得所需要的數(shù)據(jù)對象,從而極大地提高了應(yīng)用的運行效 率。注意,上述圖3中所示出的遷移之前以及遷移之后的存儲器物理空間 和對象索引空間中的數(shù)據(jù)對象和對象索引的位置分布均只是示例性的,而 不應(yīng)被理解為對本發(fā)明實施例的限制,實際上,在對于本發(fā)明的實現(xiàn)中, 在存儲器物理空間以及對象索引空間中,任意分布的數(shù)據(jù)對象和對象索引 都是可能的。
繼續(xù)參考圖1的示例,在通過本發(fā)明一個實施例的裝置所執(zhí)行的數(shù)據(jù) 對象的遷移過程之后,具有關(guān)聯(lián)關(guān)系的三個數(shù)據(jù)對象NAME2、 OBJ2和 COM2的分布如圖4所示。這三個數(shù)據(jù)對象在物理上相鄰,例如,在存儲 器物理空間中位于連續(xù)的存儲器塊,如圖中的NAME2 142、 OBJ2 152和 COM2 162所示的那樣。由此,當在服務(wù)器平臺上再次執(zhí)行出現(xiàn)查詢服務(wù) 的所述應(yīng)用的期間,當姓名表事件處理器110再次需要訪問姓名對象池140 的時候,需要將數(shù)據(jù)對象NAME2從存儲器讀取到高速緩存,這樣就很有 可能將數(shù)據(jù)對象OBJ2和COM2 —起讀取到高速緩存中。由此,在姓名表 事件處理器110對于數(shù)據(jù)對象NAME2的訪問結(jié)束之后,在事件處理器鏈 中接下來的姓名-地理信息事件處理器115、地理-地名映射事件處理器120 就會發(fā)現(xiàn)其準備訪問的數(shù)據(jù)對象OBJ2和COM2已經(jīng)處于高速援存中,而不再需要高速緩存與存儲器進行交互。從而,訪問速度得以增加,并且整 個應(yīng)用的執(zhí)行速度得以提高,并最終提高了整個系統(tǒng)的性能。
在同 一發(fā)明構(gòu)思下,本發(fā)明提出了 一種在事件驅(qū)動的系統(tǒng)中動態(tài)地重
新組織存儲器中的數(shù)據(jù)對象的方法。圖5是所述方法的示例性流程圖。首 先,所述方法開始于步驟505,并進行到步驟510。在步驟510,收集存儲 器使用行為信息,在本發(fā)明的一個實施例中,其可以通過跟蹤每個線程的 對象訪問序列并將其記入日志來實現(xiàn)。在步驟515,分析所收集的存儲器 使用行為信息以獲取數(shù)據(jù)對象之間的對象關(guān)聯(lián)信息,所述對象關(guān)聯(lián)例如可 以通過發(fā)現(xiàn)在短時間內(nèi)頻繁發(fā)生對于特定數(shù)據(jù)對象的順序訪問事件而確 定,例如針對特定的多個數(shù)據(jù)對象的順序訪問事件在特定時間段內(nèi)的出現(xiàn) 次數(shù)超過預(yù)定義的閾值。當新的對象關(guān)聯(lián)被分析出時,把關(guān)聯(lián)關(guān)系和相關(guān) 的對象名稱存儲起來,例如存儲在對象關(guān)聯(lián)數(shù)據(jù)庫220中(步驟520)。 在步驟525,周期性地在對象關(guān)聯(lián)數(shù)據(jù)庫中搜索新的對象關(guān)聯(lián)信息。在可 替換實施例中,可以主動通知新的對象關(guān)聯(lián)信息。當出現(xiàn)新的對象關(guān)聯(lián)信 息時,基于所述對象關(guān)聯(lián)信息來執(zhí)行針對該新的關(guān)聯(lián)關(guān)系的數(shù)據(jù)對象的放 置動作,例如對數(shù)據(jù)對象進行重新組織(步驟530),其中所述數(shù)據(jù)對象 的放置動作可以根據(jù)放置算法來進行,所述放置算法確定是否以及如何將 所發(fā)現(xiàn)的具有關(guān)聯(lián)關(guān)系的數(shù)據(jù)對象進行放置,所述數(shù)據(jù)對象的放置動作可 包括在存儲器中將與所述對象關(guān)聯(lián)關(guān)系有關(guān)的數(shù)據(jù)對象移動到相鄰的連 續(xù)地址,將原本位于所述連續(xù)地址的其它數(shù)據(jù)對象移動到存儲器中的其它 區(qū)域,以及相應(yīng)地更新存儲器上的地址映射表。在步驟535,將已執(zhí)行過 放置動作的關(guān)聯(lián)關(guān)系設(shè)置為舊的關(guān)聯(lián)關(guān)系,從而不會在下一次周期性檢查 中針對該對象關(guān)聯(lián)關(guān)系執(zhí)行重復(fù)的數(shù)據(jù)對象的放置操作。最后,所述方法 在步驟540結(jié)束。
特別需要指出,由于對于數(shù)據(jù)對象進行物理遷移本身也占用了 一部分 的系統(tǒng)計算開銷,因此其開銷至少要小于所獲得的性能提升。尤其是在 Web 2.0時代,在事件驅(qū)動的系統(tǒng)中會存在大量的應(yīng)用,其進一步包含大 量的臨時組合而成的事件處理器,同時這些應(yīng)用往往會被重復(fù)執(zhí)行,例如在幾分鐘內(nèi)重復(fù)數(shù)百次甚至上千次。因此,通過應(yīng)用根據(jù)本發(fā)明實施例的
裝置和方法可以極大地節(jié)省系統(tǒng)執(zhí)行時間,即,減少了 CPU等待高速緩存
與存儲器之間的數(shù)據(jù)交換的時間,從而提高了系統(tǒng)性能。
以上詳細描述了才艮據(jù)本發(fā)明 一個實施例的在事件驅(qū)動的系統(tǒng)中動態(tài)地 重新組織存儲器中的數(shù)據(jù)對象的裝置和方法。如本領(lǐng)域普通技術(shù)人員可以 了解的,本發(fā)明可以體現(xiàn)為方法、系統(tǒng)和/或計算機程序產(chǎn)品。因此,本發(fā) 明可以呈現(xiàn)為完全硬件實施形式、完全軟件實施形式或者軟件和硬件組合 實施形式。此外,本發(fā)明可以被呈現(xiàn)為在機器可讀媒體上包括的計算機程 序產(chǎn)品,機器可讀媒體上存儲了用于對計算機系統(tǒng)進行編程以執(zhí)行根據(jù)本 發(fā)明的過程的機器可執(zhí)行程序指令。這里所使用的術(shù)語"機器可讀媒體" 包括向計算機系統(tǒng)提供用于執(zhí)行的指令的任意媒體。這種媒體可以釆用多
種形式,包括但是不局限于非易失性媒體、易失性媒體和傳輸媒體。非 易失性媒體的常見形式例如包括軟盤、軟磁盤、硬盤、磁帶或者任何其它 磁媒體、光盤ROM (CD-ROM)或者任何其它光媒體、打孔卡或者任何 其它帶有孔圖案的物理媒體、可編程ROM (PROM)、可擦寫PROM (EPROM)、電EPROM ( EEPROM)、閃速存儲器、〈壬何其它存儲芯 片或者盒式磁帶(cartridge)、或者計算機系統(tǒng)可以讀取并適合存儲指令 的任何其它媒體。
此外,可以理解,方框圖和/或流程圖中的每個方框以及方框圖和流程 圖中的一些方框的組合可以用一些計算機程序指令實現(xiàn)。這些計算機程序 指令可以提供給一通用計算機、專用計算機或其它可編程數(shù)據(jù)處理設(shè)備的 處理器以產(chǎn)生一機器,使得這些指令通過計算機或其它可編程數(shù)據(jù)處理設(shè) 備的處理器的執(zhí)行創(chuàng)建用于實現(xiàn)在方框圖和/或流程圖內(nèi)或者方框內(nèi)所指 定的功能的裝置。
盡管已經(jīng)參考實施例具體地示出并描述了本發(fā)明,但其不是為了以公 開的形式窮舉或限制本發(fā)明。對于本領(lǐng)域的普通技術(shù)人員,可以在形式上 和細節(jié)上進行各種改變而不會背離本發(fā)明的精神和范圍。選擇并描迷了實 施例是為了最好地解釋本發(fā)明的原理和實際的應(yīng)用,以及為了使本領(lǐng)域的其它普通技術(shù)人員能夠理解對于各種實施例的本發(fā)明,所述實施例具有適 合于預(yù)期的具體使用的各種修改。
權(quán)利要求
1.一種在事件驅(qū)動的系統(tǒng)中動態(tài)地重新組織存儲器中的數(shù)據(jù)對象的裝置,其中所述系統(tǒng)中的所有行為被建模作為事件集合,并且提供了一系列事件處理器以用于響應(yīng)于事件并提供所需的行為,所述裝置包括關(guān)聯(lián)監(jiān)視與分析單元,用于收集存儲器使用行為信息,并對所收集的存儲器使用行為信息進行分析以獲取數(shù)據(jù)對象之間的對象關(guān)聯(lián)信息;以及放置管理器,用于基于所分析出的對象關(guān)聯(lián)信息重新組織存儲器中的數(shù)據(jù)對象。
2. 根據(jù)權(quán)利要求l所述的裝置,其中所述關(guān)聯(lián)監(jiān)視與分析單元進一步 包括對象關(guān)聯(lián)數(shù)據(jù)庫,用于存儲所分析出的對象關(guān)聯(lián)信息。
3. 根據(jù)權(quán)利要求l所述的裝置,其中所述關(guān)聯(lián)監(jiān)視與分析單元進一步 用于跟蹤對象訪問序列,并將所iW象訪問序列記入日志供分析。
4. 根據(jù)權(quán)利要求l所述的裝置,其中所述關(guān)聯(lián)監(jiān)視與分析單元通過發(fā) 現(xiàn)針對特定的多個數(shù)據(jù)對象的順序訪問事件在特定時間段內(nèi)的出現(xiàn)次數(shù)超 過預(yù)定義的閾值,而確定針對這些數(shù)據(jù)對象的對象關(guān)聯(lián)信息。
5. 根據(jù)權(quán)利要求l所迷的裝置,其中所述放置管理器進一步包括放置 算法存儲裝置,用于存儲放置算法,其中所迷放置算法用于確定是否以及 如何將與所獲取的對象關(guān)聯(lián)信息有關(guān)的數(shù)據(jù)對象進行重新組織。
6. 根據(jù)權(quán)利要求l所述的裝置,其中所述放置管理器進行的重新組織 進一步包括在存儲器中將與所述對象關(guān)聯(lián)信息有關(guān)的數(shù)據(jù)對象移動到相鄰的連續(xù) 地址,將原本位于所述連續(xù)地址的其它數(shù)據(jù)對象移動到存儲器中的其它區(qū) 域,以及相應(yīng)地更新存儲器上的地址映射表。
7. 根據(jù)權(quán)利要求l所述的裝置,其中所述放置管理器進一步用于在 完成所述數(shù)據(jù)對象的重新組織之后,將已執(zhí)行過重新組織的所述對象關(guān)聯(lián) 信息設(shè)置為舊的對象關(guān)聯(lián)信息,從而不會再次針對該對象關(guān)聯(lián)信息執(zhí)行重 復(fù)的數(shù)據(jù)對象的重新組織操作。
8. —種在事件驅(qū)動的系統(tǒng)中動態(tài)地重新組織存儲器中的數(shù)據(jù)對象的方 法,其中所述系統(tǒng)中的所有行為被建才莫作為事件集合,并且提供了一系列 事件處理器以用于響應(yīng)于事件并提供所需的行為,所述方法包括收集存儲器使用行為信息;對所收集的存儲器使用行為信息進行分析以獲取數(shù)據(jù)對象之間的對象 關(guān)聯(lián)信息;以及基于所分析出的對象關(guān)聯(lián)信息重新組織存儲器中的數(shù)據(jù)對象。
9. 根據(jù)權(quán)利要求8所述的方法,進一步包括 將所分析出的對象關(guān)聯(lián)信息存儲在對象關(guān)聯(lián)數(shù)據(jù)庫。
10. 根據(jù)權(quán)利要求8所述的方法,其中所述收集存儲器使用行為信息 的步驟進一步包括跟蹤對象訪問序列;以及 將所述對象訪問序列記入日志供分析。
11. 根據(jù)權(quán)利要求8所述的方法,其中所述對所收集的存儲器使用行 為信息進行分析以獲取數(shù)據(jù)對象之間的對象關(guān)聯(lián)信息的步驟進一步包括通過發(fā)現(xiàn)針對特定的多個數(shù)據(jù)對象的順序訪問事件在特定時間段內(nèi)的 出現(xiàn)次數(shù)超過預(yù)定義的閾值,而確定針對這些數(shù)據(jù)對象的對象關(guān)聯(lián)信息。
12. 根據(jù)權(quán)利要求8所述的方法,進一步包括將放置算法存儲在放 置算法存儲裝置中,其中所述放置算法用于確定是否以及如何將與所獲取 的對象關(guān)聯(lián)信息有關(guān)的數(shù)據(jù)對象進行重新組織。
13. 根據(jù)權(quán)利要求8所述的方法,其中所述基于所分析出的對象關(guān)聯(lián) 信息重新組織存儲器中的數(shù)據(jù)對象的步驟進一步包括在存儲器中將與所述對象關(guān)聯(lián)信息有關(guān)的數(shù)據(jù)對象移動到相鄰的連續(xù) 地址,將原本位于所述連續(xù)地址的其它數(shù)據(jù)對象移動到存儲器中的其它區(qū) 域,以及相應(yīng)地更新存儲器上的地址映射表。
14. 根據(jù)權(quán)利要求8所述的方法,進一步包括在完成所述數(shù)據(jù)對象的重新組織之后,將已執(zhí)行過重新組織的所述對 象關(guān)聯(lián)信息設(shè)置為舊的對象關(guān)聯(lián)信息,從而不會再次針對該對象關(guān)聯(lián)信息執(zhí)行重復(fù)的數(shù)據(jù)對象的重新組織操作。
全文摘要
一種在事件驅(qū)動的系統(tǒng)中動態(tài)地重新組織存儲器中的數(shù)據(jù)對象的裝置和方法,其中所述系統(tǒng)中的所有行為被建模作為事件集合,并且提供了一系列事件處理器以用于響應(yīng)于事件并提供所需的行為,所述裝置包括關(guān)聯(lián)監(jiān)視與分析單元,用于收集存儲器使用行為信息,并對所收集的存儲器使用行為信息進行分析以獲取數(shù)據(jù)對象之間的對象關(guān)聯(lián)信息;以及放置管理器,用于基于所分析出的對象關(guān)聯(lián)信息重新組織存儲器中的數(shù)據(jù)對象。
文檔編號G06F12/06GK101551782SQ20081008862
公開日2009年10月7日 申請日期2008年3月31日 優(yōu)先權(quán)日2008年3月31日
發(fā)明者哲 向, 博 楊, 薇 陸, 高志國 申請人:國際商業(yè)機器公司