專利名稱:用于監(jiān)視計算機(jī)系統(tǒng)中的資源的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及計算機(jī)網(wǎng)絡(luò)上的資源監(jiān)視。更具體地說,本發(fā)明涉及監(jiān)視和管理存在于分布式計算環(huán)境中的資源。
背景技術(shù):
自動計算模型圍繞著可以智能化地分布其工作負(fù)載到多臺計算機(jī)上的連網(wǎng)計算機(jī)之間的交互來發(fā)展。數(shù)據(jù)存儲和處理能力在分布式計算環(huán)境中分布在網(wǎng)絡(luò)上。分布式系統(tǒng)中的機(jī)器可以具有不同硬件體系結(jié)構(gòu)和操作系統(tǒng)。
分布式系統(tǒng)基于能夠在動態(tài)和異構(gòu)環(huán)境中自治行動的智能組件。這些分布式系統(tǒng)使該環(huán)境自治化且智能化,并且可以減少用戶交互。很多分布式計算架構(gòu)包括安裝在多個客戶端系統(tǒng)上的“輕量級”軟件代理,以及一個或多個專用分布式計算管理服務(wù)器。這些服務(wù)器接受分布式計算請求,并且將它們的大處理任務(wù)劃分成可以在單獨桌面計算機(jī)系統(tǒng)上運(yùn)行的較小任務(wù)。
作為一個例子,運(yùn)行在客戶端計算機(jī)系統(tǒng)上的代理可以檢測何時系統(tǒng)處于空閑狀態(tài),向管理服務(wù)器通知該系統(tǒng)可用于處理,并且請求應(yīng)用包。然后,客戶端系統(tǒng)從服務(wù)器接收所請求的應(yīng)用包,并且當(dāng)空閑處理器循環(huán)可用時運(yùn)行應(yīng)用包。客戶端系統(tǒng)將結(jié)果回送給服務(wù)器。
該例子由圖10所示的順序圖進(jìn)一步示出,該圖涉及分布式計算環(huán)境內(nèi)的一般性監(jiān)視代理。在客戶端系統(tǒng)上持續(xù)運(yùn)行以處理請求的客戶端后臺程序(daemon)接收監(jiān)視資源的請求??蛻舳讼到y(tǒng)上的監(jiān)視代理初始化其各個組件如調(diào)度器和評估器(evaluator)對象。
監(jiān)視代理向其調(diào)度器對象通知超時值。監(jiān)視應(yīng)用還向評估器對象通知要應(yīng)用于由調(diào)度器對象收集的數(shù)據(jù)的任務(wù)和算法。調(diào)度器對象通過調(diào)用由操作系統(tǒng)提供的適當(dāng)接口或系統(tǒng)調(diào)用來從系統(tǒng)收集數(shù)據(jù)。當(dāng)服務(wù)器請求資源狀態(tài)時,監(jiān)視代理將評估請求發(fā)送到評估器對象,然后評估器對象向調(diào)度器對象要求應(yīng)用算法的規(guī)格(metrics)。然后,將經(jīng)過處理的數(shù)據(jù)返回到服務(wù)器。
下面表1概括描述圖10的步驟。
表1步驟1001 客戶端后臺程序向監(jiān)視代理發(fā)送涉及所要監(jiān)視的資源的請求。
步驟1002 監(jiān)視代理將資源詳細(xì)信息發(fā)送到調(diào)度器對象。
步驟1003 為該特定資源設(shè)置調(diào)度器對象的超時。
步驟1004 調(diào)度器對象向計時器登記其自身。
步驟1005 在每一個超時內(nèi),調(diào)度器對象通過調(diào)用適當(dāng)可執(zhí)行代碼來獲得資源狀態(tài)。
步驟1006 可執(zhí)行代碼對操作系統(tǒng)進(jìn)行系統(tǒng)調(diào)用。
步驟1007 操作系統(tǒng)提取特定資源的狀態(tài)。該信息在每一個超時內(nèi)由和1008調(diào)度器對象存儲。
步驟1009 當(dāng)有請求來自服務(wù)器時,客戶端后臺程序再次與監(jiān)視代理通信。
步驟1010 采用所需的要對資源數(shù)據(jù)執(zhí)行的算法調(diào)用評估器對象。
步驟1011 評估器對象從調(diào)度器對象收集矩陣信息。
步驟1003 評估器對象對數(shù)據(jù)執(zhí)行算法,并且將結(jié)果發(fā)送到監(jiān)視代理以最終發(fā)送到服務(wù)器。
鑒于上述觀察,顯然需要一種改進(jìn)的分布式資源監(jiān)視方式。
發(fā)明內(nèi)容
描述了一種用于在分布式計算環(huán)境中探測和監(jiān)視應(yīng)用的技術(shù)和相關(guān)軟件設(shè)計。探測器設(shè)計集成到客戶端系統(tǒng)上的操作系統(tǒng)內(nèi)核中。更具體地說,在此所述的設(shè)計巧妙地把周期性探測功能委托給操作系統(tǒng)內(nèi)核。執(zhí)行該委托在操作系統(tǒng)負(fù)擔(dān)方面是“輕量級”的,因為為了其自己的資源配目的,操作系統(tǒng)已經(jīng)監(jiān)視系統(tǒng)資源。
監(jiān)視代理對被觀察參數(shù)的影響是微不足道的。由監(jiān)視代理加到對特定資源所預(yù)期的理想數(shù)據(jù)的偏差極其小??蛻魴C(jī)上的資源探測應(yīng)用現(xiàn)在僅留有根據(jù)服務(wù)器請求對矩陣數(shù)據(jù)運(yùn)行簡單算法。在大多數(shù)操作系統(tǒng)中,該矩陣數(shù)據(jù)或存儲段可以直接使得可用于監(jiān)視代理而無需創(chuàng)建重復(fù)副本?;谥袛嗟木幊逃脕黹_發(fā)內(nèi)核任務(wù)例程。該編程模型使得監(jiān)視代理完全透明于客戶端系統(tǒng)的用戶。該編程模型減小了對客戶端系統(tǒng)的應(yīng)用空間的負(fù)擔(dān),并且對客戶端系統(tǒng)的資源具有較小影響。
圖1是提供在此所述的探測器代理所涉及的各組件的示意圖。
圖2是示出在此所述的探測器代理所涉及的各步驟的流程圖。
圖3是適于提供在此所述的探測器代理的合適類型的計算機(jī)系統(tǒng)的示意圖。
圖4是示出資源監(jiān)視器代理初始化如何在客戶端系統(tǒng)上發(fā)生的順序圖。
圖5是示出如何在客戶端系統(tǒng)上調(diào)用資源監(jiān)視器代理的順序圖。
圖6是示出內(nèi)核探測任務(wù)例程如何執(zhí)行的順序圖。
圖7是示出從服務(wù)器接收和處理了解分布式資源狀態(tài)的請求的順序圖。
圖8是示出當(dāng)客戶端系統(tǒng)接收到停止資源監(jiān)視代理的請求時的事件序列的順序圖。
圖9A、9B、9C和9D共同給出在Linux操作系統(tǒng)環(huán)境上實現(xiàn)的設(shè)備驅(qū)動程序的計算機(jī)代碼。
圖10是分布式計算環(huán)境中的現(xiàn)有監(jiān)視代理的順序圖。
具體實施例方式
參照五個示例事件序列來描述自動計算探測器代理,其中這五個示例事件序列示出該代理通過其與探測器代理所駐留的計算系統(tǒng)進(jìn)行交互的操作。在描述這里給出的這五個例子之前,下面直接提供各組件的描述。然后描述能夠用于實現(xiàn)探測器代理中的類型的計算硬件,隨后是相關(guān)軟件實現(xiàn)觀察的描述。相關(guān)源代碼的例子在五個所提供例子之后。
組件圖1示意性地示出描述資源監(jiān)視探測器103所涉及的各組件。涉及資源監(jiān)視探測器103的事件由在客戶端系統(tǒng)的操作系統(tǒng)下運(yùn)行的客戶端后臺程序102發(fā)起。請求從監(jiān)視服務(wù)器101發(fā)送到客戶端后臺程序102,并且作為例子來描述以說明在客戶端系統(tǒng)中各個所述組件的狀態(tài)如何改變。
監(jiān)視服務(wù)器監(jiān)視服務(wù)器101是對監(jiān)視客戶端系統(tǒng)上的資源感興趣的服務(wù)器應(yīng)用。例如,監(jiān)視服務(wù)器101可以駐留在特定服務(wù)器上或者分布在不同服務(wù)器上。
客戶端后臺程序客戶端后臺程序102是由監(jiān)視服務(wù)器101發(fā)送到客戶端系統(tǒng)以監(jiān)視客戶端系統(tǒng)上的各資源的后臺程序進(jìn)程。例如,這可以涉及客戶端系統(tǒng)的軟件、硬件或網(wǎng)絡(luò)化。因此,客戶端后臺程序102擔(dān)當(dāng)監(jiān)視服務(wù)器101與正被監(jiān)視的客戶端系統(tǒng)之間的通信通道。該客戶端后臺程序102保存由監(jiān)視服務(wù)器101發(fā)送的不同資源監(jiān)視探測器103的引用。
資源監(jiān)視探測器資源監(jiān)視探測器103是監(jiān)視客戶端系統(tǒng)上的資源的代理。資源監(jiān)視探測器103執(zhí)行評估器對象104,并且將整理數(shù)據(jù)返回到監(jiān)視服務(wù)器101。當(dāng)由監(jiān)視服務(wù)器101請求執(zhí)行時,資源監(jiān)視探測器103在用戶空間中執(zhí)行。
評估器對象評估器對象104包含要對由任務(wù)函數(shù)109收集的數(shù)據(jù)執(zhí)行的分析算法。評估器對象104在用戶空間中執(zhí)行。
設(shè)備驅(qū)動程序在初始化的時候,設(shè)備驅(qū)動程序105擔(dān)當(dāng)數(shù)據(jù)頁和任務(wù)操作的創(chuàng)建者。設(shè)備驅(qū)動程序105將任務(wù)操作集成到定時器任務(wù)中。直到設(shè)備驅(qū)動程序105被卸載,設(shè)備驅(qū)動程序105擔(dān)當(dāng)探測器與內(nèi)核106之間的通信通道。
內(nèi)核內(nèi)核106是客戶端系統(tǒng)上操作系統(tǒng)的核心,因此具有各種相關(guān)特性。資源監(jiān)視探測器103將其自己集成到操作系統(tǒng)的內(nèi)核106中以執(zhí)行其功能。集成到內(nèi)核106中的最重要組件是任務(wù)函數(shù)109。
內(nèi)核頁內(nèi)核頁107具有兩個部分。一個部分是設(shè)備驅(qū)動程序接口例程代碼。內(nèi)核頁107的第二部分是用于記錄被監(jiān)視參數(shù)的循環(huán)位圖緩沖區(qū)。資源監(jiān)視探測器103不需要多個存儲頁,因此使用內(nèi)核頁107。
內(nèi)核定時器內(nèi)核定時器108是資源監(jiān)視探測器103通過任務(wù)函數(shù)109與其鏈接的內(nèi)核106(也就是,基本操作系統(tǒng))的一部分。
任務(wù)函數(shù)任務(wù)函數(shù)109由設(shè)備驅(qū)動程序105動態(tài)創(chuàng)建,并且鏈接到內(nèi)核定時器108。任務(wù)函數(shù)109的工作是周期性地掃描軟件、硬件或網(wǎng)絡(luò)資源。
過程概述圖2是以概述方式描述在此所述的資源監(jiān)視探測器103的操作所涉及的各步驟的流程圖。
首先,在步驟210,客戶端后臺程序102從監(jiān)視服務(wù)器101接收監(jiān)視資源的請求。在步驟220,客戶端后臺程序102將資源監(jiān)視探測器103裝載到存儲器中。在步驟230,資源監(jiān)視探測器103又裝載和初始化設(shè)備驅(qū)動程序105。該設(shè)備驅(qū)動程序105擔(dān)任操作系統(tǒng)的內(nèi)核106與資源監(jiān)視探測器103之間的接口的角色。
在步驟240,設(shè)備驅(qū)動程序105在此階段僅分配內(nèi)核頁107以作將來使用。在步驟230完成設(shè)備驅(qū)動程序105的初始化之后,設(shè)備驅(qū)動程序105在步驟250建立用于收集涉及被監(jiān)視資源并且將該數(shù)據(jù)存儲在內(nèi)核頁107中的任務(wù)函數(shù)109。在步驟260,資源監(jiān)視探測器103初始化評估器對象104。該評估器對象104的目的是運(yùn)行一算法以處理在步驟250由任務(wù)函數(shù)109收集的數(shù)據(jù)。
最后,在步驟270,客戶端后臺程序102將經(jīng)過處理的數(shù)據(jù)報告給監(jiān)視服務(wù)器101。
計算機(jī)硬件圖3是在其上可以實現(xiàn)資源監(jiān)視探測器103的客戶端系統(tǒng)的典型類型的計算機(jī)系統(tǒng)300的示意圖。
實現(xiàn)資源監(jiān)視探測器103和相關(guān)功能的計算機(jī)軟件在安裝在計算機(jī)系統(tǒng)300上的適當(dāng)操作系統(tǒng)下執(zhí)行。
計算機(jī)系統(tǒng)300的各組件包括計算機(jī)320、鍵盤310和鼠標(biāo)315、以及視頻顯示器390。計算機(jī)320包括處理器340、存儲器350、輸入/輸出(I/O)接口360、365、視頻接口345以及存儲設(shè)備355。
處理器340是執(zhí)行操作系統(tǒng)和在操作系統(tǒng)下執(zhí)行的計算機(jī)軟件的中央處理單元(CPU)。存儲器350包括隨機(jī)存取存儲器(RAM)和只讀存儲器(ROM),并且在處理器340的引導(dǎo)下使用。
視頻接口345連接到視頻顯示器390,并且提供視頻信號以顯示在視頻顯示器390上。從鍵盤310和鼠標(biāo)315提供用來操作計算機(jī)320的用戶輸入。存儲設(shè)備355可以包括盤驅(qū)動器或任何其他適當(dāng)存儲介質(zhì)。
計算機(jī)320的每一個組件均連接到包括數(shù)據(jù)、地址和控制總線的內(nèi)部總線330,以允許計算機(jī)320的各組件通過總線330相互通信。
計算機(jī)系統(tǒng)300可以使用與以因特網(wǎng)380代表的網(wǎng)絡(luò)的通信通道385通過輸入/輸出(I/O)接口365連接到一個或多個其他類似計算機(jī)。
計算機(jī)軟件可以記錄在便攜式存儲介質(zhì)上,在這種情況下,計算機(jī)軟件程序從存儲設(shè)備355由計算機(jī)系統(tǒng)300訪問?;蛘撸嬎銠C(jī)軟件可以由計算機(jī)320從因特網(wǎng)380直接訪問。在任一情況下,用戶可以使用鍵盤310和鼠標(biāo)315與計算機(jī)系統(tǒng)300交互以操作在計算機(jī)320上執(zhí)行的程序化計算機(jī)軟件。
上述計算機(jī)系統(tǒng)300是僅作為適于用作客戶端系統(tǒng)的特定類型系統(tǒng)的例子來描述的。
計算機(jī)軟件圖9A、9B、9C和9D給出在Linux操作系統(tǒng)的安裝上實現(xiàn)的用于監(jiān)視進(jìn)程的設(shè)備驅(qū)動程序105。如上所述,計算機(jī)系統(tǒng)300是在其上可以提供設(shè)備驅(qū)動程序105的客戶端系統(tǒng)的適當(dāng)計算硬件的例子。
設(shè)備驅(qū)動程序105采用軟件實現(xiàn),從而針對網(wǎng)絡(luò)化環(huán)境中特定客戶端的特定分布式進(jìn)程在分布式計算應(yīng)用中測量處理器340的利用。設(shè)備驅(qū)動程序105在分布式環(huán)境中的每個客戶端系統(tǒng)中調(diào)用。設(shè)備驅(qū)動程序105的目的是對于正被觀察的進(jìn)程以10毫秒的間隔創(chuàng)建反映處理器340的狀態(tài)的二進(jìn)制條目。如果在進(jìn)行測量的那個時刻該進(jìn)程正在執(zhí)行,則該條目為1,并且如果該進(jìn)程不正在運(yùn)行,則為0。
內(nèi)核107沒有在其自己上運(yùn)行的線程。相反,內(nèi)核107具有一組稱作“上半”服務(wù)的服務(wù)以及一組稱作“下半”服務(wù)的中斷例程。
在任何時刻,處理器340可以處于下列階段之一。
(a)進(jìn)程在用戶空間或內(nèi)核空間中運(yùn)行。當(dāng)存在對服務(wù)的進(jìn)程請求時,內(nèi)核106在該進(jìn)程的上下文下執(zhí)行。
(b)處理器340正在中斷模式下執(zhí)行。
(c)處理器340置于停止?fàn)顟B(tài),因為沒有進(jìn)程準(zhǔn)備運(yùn)行。
內(nèi)核代碼通過訪問全局項“current”即一個指向“struct tasks_struct”的指針,可以知道驅(qū)動該代碼的當(dāng)前進(jìn)程。在Linux操作系統(tǒng)中,該變量聲明于頭代碼<linux/sched.h>所包括的頭代碼<asm/current.h>中。“current”指針引用當(dāng)前執(zhí)行的用戶進(jìn)程(PID)。也就是,current->pid。
為了以有規(guī)律間隔探測運(yùn)行在處理器340上的進(jìn)程,設(shè)備驅(qū)動程序105向內(nèi)核定時器108登記任務(wù)隊列。內(nèi)核定時器108精確于處理器340的時鐘頻率級別。任務(wù)函數(shù)109以在登記期間所指定的超時調(diào)用(該超時總是為處理器340的時鐘脈沖時間的倍數(shù)值)。
這些對內(nèi)核定時器108的調(diào)用處于在該時刻運(yùn)行的任何隨機(jī)進(jìn)程的上下文中。由內(nèi)核定時器108指向的任務(wù)函數(shù)109的責(zé)任僅是以循環(huán)方式將“current->pid”寫入到內(nèi)核頁107。
該內(nèi)核頁107(主要由設(shè)備驅(qū)動程序105擁有)是由監(jiān)視應(yīng)用映射的存儲器,因此所收集的數(shù)據(jù)通過虛擬表映射在監(jiān)視應(yīng)用的進(jìn)程上下文下可用。監(jiān)視應(yīng)用可以在其空閑時或者每當(dāng)有請求來自監(jiān)視服務(wù)器101時訪問和處理該數(shù)據(jù)。
例子1-進(jìn)程監(jiān)視探測器圖4示出如何發(fā)生資源監(jiān)視探測器103的初始化。當(dāng)客戶端后臺程序102從監(jiān)視服務(wù)器101接收到啟動資源監(jiān)視探測器103的請求時,客戶端后臺程序102將資源監(jiān)視探測器103裝載到存儲器中。資源監(jiān)視探測器103又裝載和初始化設(shè)備驅(qū)動程序105。該設(shè)備驅(qū)動程序105擔(dān)任操作系統(tǒng)的內(nèi)核106與資源監(jiān)視探測器103之間的接口的角色。
設(shè)備驅(qū)動程序105在此階段僅分配內(nèi)核頁107以如后所述將來由任務(wù)函數(shù)109使用。在完成設(shè)備驅(qū)動程序105的初始化之后,資源監(jiān)視探測器103還初始化評估器對象104。該評估器對象104的目的是運(yùn)行一算法以處理由任務(wù)函數(shù)109收集的矩陣數(shù)據(jù)。該矩陣數(shù)據(jù)是在一段時間內(nèi)寫入在內(nèi)核頁107上的。為了映射該內(nèi)核頁107,評估器對象104調(diào)用設(shè)備驅(qū)動程序105的存儲器映射導(dǎo)出函數(shù)(memory map exportedfunction)。設(shè)備驅(qū)動程序105在資源監(jiān)視探測器103的進(jìn)程虛擬存儲器上下文下創(chuàng)建虛擬頁表,并且將該虛擬存儲器區(qū)域(arena)鏈接到內(nèi)核頁107。虛擬映射的目的是避免為用戶空間和內(nèi)核空間創(chuàng)建重復(fù)數(shù)據(jù)。下面表2概括地描述圖4的步驟。
表2步驟401客戶端后臺程序102創(chuàng)建并初始化資源監(jiān)視探測器103。
步驟402資源監(jiān)視探測器103裝載并初始化設(shè)備驅(qū)動程序105,它擔(dān)當(dāng)與操作系統(tǒng)的接口,并且執(zhí)行低層功能。
步驟403設(shè)備驅(qū)動程序105向操作系統(tǒng)登記其自身。
步驟404設(shè)備驅(qū)動程序105請求4k字節(jié)大小的內(nèi)核頁107。
步驟405內(nèi)核106從其物理存儲器堆中分配內(nèi)核頁107,并且在緩沖器指針寄存器中將地址返回給設(shè)備驅(qū)動程序105。
步驟406資源監(jiān)視探測器103創(chuàng)建并初始化評估器對象104。
和407
步驟408 評估器對象104調(diào)用設(shè)備驅(qū)動程序105的存儲器映射導(dǎo)出函數(shù)。
步驟409 設(shè)備驅(qū)動程序105在資源監(jiān)視探測器103的上下文下為在步驟405獲得的物理頁創(chuàng)建虛擬頁表。虛擬映射的目的是避免用戶空間和內(nèi)核空間中的數(shù)據(jù)重復(fù)。
例子2-探測器進(jìn)程的啟動圖5示出如何在客戶端系統(tǒng)上調(diào)用資源監(jiān)視探測器103。當(dāng)客戶端后臺程序102從監(jiān)視服務(wù)器101接收到發(fā)起探測的請求時,客戶端后臺程序102調(diào)用諸如用于監(jiān)視進(jìn)程或網(wǎng)絡(luò)活動的適當(dāng)資源監(jiān)視探測器103。資源監(jiān)視探測器103通過調(diào)用適當(dāng)接口將該消息轉(zhuǎn)發(fā)到設(shè)備驅(qū)動程序105。設(shè)備驅(qū)動程序105以一超時值創(chuàng)建任務(wù)函數(shù)109。設(shè)備驅(qū)動程序105還向任務(wù)函數(shù)109登記一函數(shù)。該函數(shù)在每個超時期間調(diào)用,并且獨立于任何進(jìn)程上下文而執(zhí)行。最后,設(shè)備驅(qū)動程序105向操作系統(tǒng)的內(nèi)核106登記該定時器任務(wù),即任務(wù)函數(shù)109。下面表3概括地描述圖6的步驟。
表3步驟501客戶端后臺程序102從監(jiān)視服務(wù)器101接收啟動裝載在客戶端系統(tǒng)上的資源監(jiān)視探測器103的請求。
步驟502將該請求轉(zhuǎn)發(fā)到設(shè)備驅(qū)動程序105。
步驟503設(shè)備驅(qū)動程序105以一超時值創(chuàng)建內(nèi)核定時器108。
步驟504向內(nèi)核定時器108登記任務(wù)函數(shù)109。該函數(shù)在每個超時內(nèi)調(diào)用,并且獨立于任何進(jìn)程上下文而執(zhí)行。
步驟505向操作系統(tǒng)的內(nèi)核106登記內(nèi)核定時器108。
例子3-運(yùn)行監(jiān)視器圖6示出內(nèi)核定時器108的任務(wù)函數(shù)109形式的探測任務(wù)例程如何在客戶端系統(tǒng)上執(zhí)行。操作系統(tǒng)的內(nèi)核106在每個超時期間接收一中斷。該超時由設(shè)備驅(qū)動程序105在任務(wù)登記期間指定。調(diào)用與該任務(wù)相鏈接的任務(wù)函數(shù)109。該任務(wù)函數(shù)109是輕量級的,并且僅執(zhí)行非常小的代碼部分以采用循環(huán)方式將被觀察的分布式資源屬性記錄到內(nèi)核頁107中。該循環(huán)記錄是指當(dāng)內(nèi)核頁滿時,它將從頭開始覆寫。下面表4概括地描述圖6的步驟。
表4步驟601操作系統(tǒng)的內(nèi)核106在每個超時期間從內(nèi)核定時器108接收一中斷。該超時由設(shè)備驅(qū)動程序105在任務(wù)函數(shù)109的登記期間作為任務(wù)函數(shù)109的變量項指定。
步驟602如設(shè)備驅(qū)動程序105在內(nèi)核任務(wù)登記期間所指定調(diào)用任務(wù)函數(shù)109。
步驟603該任務(wù)函數(shù)109是“輕量級”的,并且僅以循環(huán)方式將被觀察的資源參數(shù)寫入到常駐內(nèi)核存儲器即內(nèi)核頁107中。
例子4-分布式應(yīng)用的狀態(tài)圖7示出客戶端后臺程序102從監(jiān)視服務(wù)器101接收檢查分布式資源狀態(tài)的請求的例子。適當(dāng)?shù)馁Y源監(jiān)視探測器103將該請求轉(zhuǎn)發(fā)到其評估器對象104。評估器對象104從內(nèi)核頁107讀取矩陣數(shù)據(jù)。該內(nèi)核頁107在初始化期間映射到探測器103的進(jìn)程上下文。評估器對象104對該矩陣數(shù)據(jù)應(yīng)用簡單的算法,以為監(jiān)視服務(wù)器101所請求的特定分布式應(yīng)用計算客戶端系統(tǒng)上的負(fù)載。然后,采用預(yù)定通信協(xié)議將經(jīng)過處理的數(shù)據(jù)轉(zhuǎn)發(fā)到監(jiān)視服務(wù)器101。下面表5概括地描述圖7的步驟。
表5步驟701客戶端后臺程序102從監(jiān)視服務(wù)器101接收分布式資源狀態(tài)請求。
步驟702資源監(jiān)視探測器103將該請求轉(zhuǎn)發(fā)到其評估器對象104。
步驟703評估器對象104直接從內(nèi)核頁107讀取矩陣數(shù)據(jù)。該內(nèi)核頁107由任務(wù)函數(shù)109異步寫入,并且相同內(nèi)核頁107在初始化期間映射到資源監(jiān)視探測器103的虛擬頁表。
步驟704評估器對象104對矩陣數(shù)據(jù)應(yīng)用簡單分析算法以整理數(shù)據(jù),然后發(fā)送由監(jiān)視服務(wù)器101請求的資源狀態(tài)。
例子5-停止探測器圖8示出客戶端后臺程序102接收停止客戶端系統(tǒng)上的資源監(jiān)視探測器103的請求的例子。資源監(jiān)視探測器103調(diào)用設(shè)備驅(qū)動程序105的接口以“清除”其資源。設(shè)備驅(qū)動程序105釋放內(nèi)核頁107。然后,設(shè)備驅(qū)動程序105銷毀任務(wù)函數(shù)109和任務(wù)函數(shù)109。從內(nèi)核106刪除內(nèi)核定時器108的引用。然后,資源探測器代理103刪除為評估器對象105創(chuàng)建的虛擬映射。資源監(jiān)視探測器103然后從存儲器中刪除設(shè)備驅(qū)動程序105,最后銷毀評估器對象104。下面表6概括地描述圖8的步驟。
表6步驟801客戶端后臺程序102接收停止資源監(jiān)視探測器103的請求。
步驟802資源監(jiān)視探測器103然后將“清除”其資源的請求發(fā)送到設(shè)備驅(qū)動程序105。
步驟803設(shè)備驅(qū)動程序105釋放內(nèi)核頁107。
和804步驟805設(shè)備驅(qū)動程序105然后銷毀內(nèi)核定時器108和任務(wù)函數(shù)和806 109。
步驟807設(shè)備驅(qū)動程序105然后刪除向內(nèi)核106登記的定時器任務(wù)。
步驟808設(shè)備驅(qū)動程序105發(fā)送從操作系統(tǒng)的內(nèi)核106中注銷其自己的請求。
步驟809資源監(jiān)視探測器103刪除為評估器對象104創(chuàng)建的虛擬映射。
步驟810資源監(jiān)視探測器103最后銷毀評估器對象104。
結(jié)束語在此所述的探測器代理與分布式計算領(lǐng)域內(nèi)的現(xiàn)有應(yīng)用編程方式不同。采用了基于中斷的編程模型來開發(fā)用于監(jiān)視資源的內(nèi)核探測任務(wù)例程。用于監(jiān)視這些被執(zhí)行任務(wù)例程的責(zé)任委托給操作系統(tǒng)的內(nèi)核。該探測器設(shè)計采用了利用操作系統(tǒng)本身平常用來監(jiān)視系統(tǒng)資源的機(jī)制來監(jiān)視資源的思想。
探測器代理透明于用戶和客戶端系統(tǒng)。此外,探測器代理也無關(guān)于客戶端系統(tǒng)上的工作負(fù)載,并且對系統(tǒng)上的應(yīng)用或資源具有微不足道的影響。然而,資源監(jiān)視驅(qū)動程序的設(shè)計最好是任務(wù)函數(shù)僅執(zhí)行最小所需操作,因為該驅(qū)動程序在內(nèi)核模式下例如每10毫秒自動執(zhí)行。
關(guān)于探測器的準(zhǔn)確性,因為任務(wù)函數(shù)是在中斷模式下調(diào)用的,所以每次探測都沒有包含延遲。操作系統(tǒng)定時器精確到處理器時鐘頻率級別。
所述探測器代理可以在其中兩個或更多個計算機(jī)系統(tǒng)由網(wǎng)絡(luò)連接的任何分布式計算環(huán)境中實現(xiàn),包括連網(wǎng)計算機(jī)具有不同類型的環(huán)境。對于本領(lǐng)域的技術(shù)人員而言是顯而易見的,可以對在此所述的技術(shù)和配置進(jìn)行各種變更和修改。
權(quán)利要求
1.一種由計算機(jī)系統(tǒng)執(zhí)行以監(jiān)視計算機(jī)系統(tǒng)中的資源的方法,所述方法包括以下步驟向操作系統(tǒng)內(nèi)核的設(shè)備驅(qū)動程序請求監(jiān)視資源;執(zhí)行內(nèi)核任務(wù)對象以收集與被監(jiān)視資源相關(guān)的數(shù)據(jù);以及將所收集的與被監(jiān)視資源相關(guān)的數(shù)據(jù)存儲在內(nèi)核存儲器中。
2.如權(quán)利要求1所述的方法,還包括以下步驟創(chuàng)建具有預(yù)定超時值的內(nèi)核任務(wù)對象。
3.如權(quán)利要求2所述的方法,還包括以下步驟向操作系統(tǒng)內(nèi)核登記內(nèi)核任務(wù)對象。
4.如權(quán)利要求1所述的方法,還包括以下步驟周期性地執(zhí)行內(nèi)核任務(wù)對象。
5.如權(quán)利要求1所述的方法,還包括以下步驟處理存儲在內(nèi)核存儲器中的數(shù)據(jù)。
6.如權(quán)利要求1所述的方法,還包括以下步驟在計算機(jī)系統(tǒng)上執(zhí)行后臺程序以接收監(jiān)視資源的請求。
7.如權(quán)利要求6所述的方法,其中,客戶端后臺程序?qū)⒈O(jiān)視資源的請求引導(dǎo)到監(jiān)視應(yīng)用。
8.如權(quán)利要求6所述的方法,還包括以下步驟從能夠與計算機(jī)系統(tǒng)通信的服務(wù)器接收監(jiān)視資源的請求。
9.如權(quán)利要求7所述的方法,還包括以下步驟傳輸所收集的數(shù)據(jù)。
10.存儲在計算機(jī)可讀介質(zhì)中并且在計算機(jī)操作系統(tǒng)下執(zhí)行的計算機(jī)軟件,所述計算機(jī)軟件包括(I)客戶端后臺程序,用于接收監(jiān)視資源的請求;(II)監(jiān)視應(yīng)用,由客戶端后臺程序創(chuàng)建;(III)設(shè)備驅(qū)動程序,由監(jiān)視應(yīng)用初始化,用于與操作系統(tǒng)內(nèi)核通信;以及(IV)內(nèi)核任務(wù)對象,由設(shè)備驅(qū)動程序創(chuàng)建,用于收集和存儲與被監(jiān)視資源相關(guān)的數(shù)據(jù)。
11.如權(quán)利要求10所述的計算機(jī)軟件,還包括評估器對象,由監(jiān)視應(yīng)用創(chuàng)建,用于處理存儲數(shù)據(jù)。
12.一種用于監(jiān)視計算機(jī)系統(tǒng)中的資源的計算機(jī)系統(tǒng),所述計算機(jī)系統(tǒng)包括用于向操作系統(tǒng)內(nèi)核的設(shè)備驅(qū)動程序請求監(jiān)視資源的裝置;用于執(zhí)行內(nèi)核任務(wù)對象以收集與被監(jiān)視資源相關(guān)的數(shù)據(jù)的裝置;以及用于將所收集的與被監(jiān)視資源相關(guān)的數(shù)據(jù)存儲在內(nèi)核存儲器中的裝置。
全文摘要
使用設(shè)計為集成到操作系統(tǒng)內(nèi)核中的探測器實現(xiàn)了分布式計算機(jī)網(wǎng)絡(luò)中應(yīng)用的探測和監(jiān)視。該探測器巧妙地把周期性探測功能委托給操作系統(tǒng)內(nèi)核。由于為了其自己的資源分配目的,操作系統(tǒng)已經(jīng)監(jiān)視系統(tǒng)資源,因此該功能表示最小的額外計算和網(wǎng)絡(luò)負(fù)載??蛻魴C(jī)上的資源探測應(yīng)用根據(jù)服務(wù)器請求對矩陣數(shù)據(jù)運(yùn)行簡單的算法。
文檔編號G06F11/30GK1607505SQ200410078629
公開日2005年4月20日 申請日期2004年9月14日 優(yōu)先權(quán)日2003年9月30日
發(fā)明者帕薩·曼達(dá)爾 申請人:國際商業(yè)機(jī)器公司