張 千,梁 鴻,石 琎,關(guān)新全
(中國石油大學(xué) 計(jì)算機(jī)與通信工程學(xué)院,山東 青島266555)
目前石油勘探開發(fā)行業(yè)對(duì)于高性能計(jì)算有著強(qiáng)勁的應(yīng)用需求,高精度勘探對(duì)地震資料的存儲(chǔ)和處理能力的需求呈指數(shù)倍增長,我校早期購置的一些32節(jié)點(diǎn)、64節(jié)點(diǎn)的小規(guī)模集群雖性能良好,但已不能滿足大規(guī)模計(jì)算任務(wù)日益增長的需求,并且集群間在系統(tǒng)軟硬件上存在異構(gòu),現(xiàn)有方法難以將其有效整合和集成利用,從而導(dǎo)致可用資源處于閑置狀態(tài),在該背景下,本文提出了一種基于JAVA框架技術(shù)的虛擬計(jì)算平臺(tái) (framework-base virtual computing environment,F(xiàn)VCE)實(shí)現(xiàn)方法,充分利用現(xiàn)有的計(jì)算資源和閑置集群資源,對(duì)分散異構(gòu)的資源進(jìn)行整合管理,提升資源的利用率,同時(shí)最大限度地屏蔽底層繁雜通信細(xì)節(jié),簡化系統(tǒng)業(yè)務(wù)邏輯的實(shí)施,建立了通用的虛擬計(jì)算系統(tǒng)框架,提供簡單易學(xué)的接口,滿足系統(tǒng)接口的應(yīng)用就可以利用網(wǎng)絡(luò)中的計(jì)算資源,為用戶提供透明的計(jì)算資源使用方式。
虛擬計(jì)算環(huán)境需要協(xié)調(diào)多個(gè)計(jì)算主機(jī)求解復(fù)雜的計(jì)算任務(wù),計(jì)算環(huán)境自身的功能和組織結(jié)構(gòu)就十分復(fù)雜。因此,F(xiàn)VCE使用WEB架構(gòu)技術(shù),將虛擬計(jì)算環(huán)境分解為功能相對(duì)獨(dú)立的服務(wù)組件,各組件可以獨(dú)立設(shè)計(jì)、開發(fā)和進(jìn)化,從而縮小整個(gè)計(jì)算環(huán)境的實(shí)施和維護(hù)代價(jià)。FVCE按照功能劃分成7個(gè)服務(wù)組件,各服務(wù)組件的主要功能描述如下:
(1)用戶訪問接口 (user port):基于FVCE二次開發(fā)的,方便用戶操作和使用的圖形用戶接口。用戶訪問接口提供觀測計(jì)算環(huán)境資源負(fù)載狀態(tài)、組織提交任務(wù)、查看任務(wù)執(zhí)行狀態(tài)和結(jié)果、瀏覽工作目錄等功能;
(2)任務(wù)提交服務(wù) (submit):接收來自于用戶的任務(wù)執(zhí)行請(qǐng)求,分析任務(wù)執(zhí)行文件,創(chuàng)建任務(wù)描述對(duì)象,維護(hù)任務(wù)狀態(tài)信息和執(zhí)行邏輯;
(3)注冊(cè)服務(wù) (register):向FVCE提交注冊(cè)信息,維護(hù)計(jì)算環(huán)境拓?fù)浣Y(jié)構(gòu),測試遠(yuǎn)程主機(jī)心跳等;
(4)信息服務(wù) (information):維護(hù)整個(gè)計(jì)算環(huán)境靜態(tài)主機(jī)信息列表,獲取遠(yuǎn)程主機(jī)動(dòng)態(tài)信息;
(5)文件服務(wù) (file):當(dāng)任務(wù)計(jì)算需要傳輸數(shù)據(jù)文件時(shí),將相關(guān)文件從調(diào)度主機(jī)傳遞到執(zhí)行主機(jī),并維護(hù)任務(wù)執(zhí)行結(jié)果,方便使用者查詢;
(6)任務(wù)執(zhí)行服務(wù) (executor):接收遠(yuǎn)程任務(wù)執(zhí)行請(qǐng)求,在本地開啟任務(wù)執(zhí)行,并監(jiān)控任務(wù)執(zhí)行狀態(tài),反饋任務(wù)執(zhí)行信息;
(7)調(diào)度服務(wù) (schedule):接收來源于任務(wù)提交服務(wù)的調(diào)度請(qǐng)求,評(píng)估信息服務(wù)提供的資源信息,采用某種調(diào)度策略,為任務(wù)選擇執(zhí)行主機(jī),并將任務(wù)提交到執(zhí)行主機(jī)的執(zhí)行服務(wù)。
FVCE是基于對(duì)等組織結(jié)構(gòu)的,因此計(jì)算環(huán)境中的所有計(jì)算節(jié)點(diǎn)都具有完備功能,即每個(gè)計(jì)算資源都要配置所有的7個(gè)服務(wù)。經(jīng)過劃分后的7個(gè)服務(wù)組件,功能和內(nèi)部實(shí)現(xiàn)相對(duì)獨(dú)立,各組件通過相應(yīng)服務(wù)訪問接口獲取其它組件功能支持,同時(shí)向其它組件提供服務(wù)支持,各服務(wù)組件可直接通過網(wǎng)絡(luò)與其它主機(jī)內(nèi)的服務(wù)組件通信,實(shí)現(xiàn)相應(yīng)功能。
松散耦合的WEB設(shè)計(jì)架構(gòu)中,服務(wù)對(duì)外提供的訪問方法和交互數(shù)據(jù)內(nèi)容是預(yù)定義的,不可改變,但服務(wù)內(nèi)部實(shí)現(xiàn)和業(yè)務(wù)邏輯是可變更的。服務(wù)實(shí)現(xiàn)者在遵從服務(wù)訪問規(guī)則前提下,根據(jù)系統(tǒng)需求提供最終的內(nèi)部實(shí)現(xiàn)邏輯。FVCE框架的服務(wù)分層設(shè)計(jì)模型將服務(wù)訪問規(guī)則與具體服務(wù)實(shí)現(xiàn)相隔離,相同功能的組件對(duì)外提供相同服務(wù),而對(duì)內(nèi)卻可有多種不同的策略和實(shí)施方式,從而提高了應(yīng)用服務(wù)的適應(yīng)性和擴(kuò)展性。圖1展示了FVCE框架中服務(wù)設(shè)計(jì)的層次關(guān)系。
圖1 服務(wù)設(shè)計(jì)層次關(guān)系
確定服務(wù)對(duì)外提供的功能和訪問方式,是服務(wù)設(shè)計(jì)需要解決的首要任務(wù)。如圖1所示,Resource層描述服務(wù)對(duì)外訪問接口,是服務(wù)功能的具體體現(xiàn)。虛擬計(jì)算環(huán)境設(shè)計(jì)過程中,根據(jù)各服務(wù)組件向外提供的功能,確定Resource層相應(yīng)的接口方法。
XSD層用于規(guī)范服務(wù)間通信消息格式,一般同Resource層結(jié)合定義。Resource層定義接口過程中使用的復(fù)雜參數(shù)和返回值,需要使用XSD規(guī)范定義,通信雙方通過XSD文檔規(guī)范轉(zhuǎn)換出各自應(yīng)用場景下使用的消息表示形式,最終完成通信。服務(wù)訪問規(guī)則是一個(gè)服務(wù)對(duì)外的功能和訪問方式體現(xiàn),因此一旦確定,就很少發(fā)生改變。外部其它環(huán)境或應(yīng)用在理解服務(wù)訪問規(guī)則的前提下,可以使用任何設(shè)計(jì)方式和實(shí)現(xiàn)環(huán)境對(duì)FVCE進(jìn)行二次開發(fā)。使用XSD規(guī)范復(fù)雜通信數(shù)據(jù)類型的目的在于,環(huán)境的繼續(xù)開發(fā)者可以選擇期望的開發(fā)和運(yùn)行環(huán)境對(duì)FVCE進(jìn)行功能擴(kuò)展,采用計(jì)算環(huán)境提供的RESTful類型的訪問方式,結(jié)合XSD的數(shù)據(jù)格式定義,任何一個(gè)能夠解析HTTP協(xié)議和XML文檔的開發(fā)運(yùn)行環(huán)境都能夠輕易的與計(jì)算環(huán)境交互,使用其內(nèi)部功能,達(dá)到靈活擴(kuò)展的目的。
Model層描述Resource層中定義的復(fù)雜參數(shù)和返回值類型,是通信兩端消息的實(shí)體存在。通信兩端通過XSD層定義轉(zhuǎn)換出對(duì)應(yīng)的 Model實(shí)體類 (entity class)。JAVA提供XJC可將XSD定義文檔直接轉(zhuǎn)換成包含有JAXB標(biāo)記的Model層實(shí)體類,方便XML消息的自動(dòng)生成和解析。
Logic層是服務(wù)內(nèi)部實(shí)現(xiàn)的邏輯抽象,銜接Resource層和內(nèi)部具體實(shí)現(xiàn)。每個(gè)服務(wù)內(nèi)部可能有多種具體實(shí)現(xiàn),不同的實(shí)現(xiàn)版本在策略和邏輯上略有差異,因此Logic和Impl是一對(duì)多的關(guān)系。在計(jì)算環(huán)境啟動(dòng)時(shí),使用一定的配置手段,選擇適當(dāng)?shù)腎mpl,為遠(yuǎn)程請(qǐng)求提供服務(wù)支持。
為了提高服務(wù)使用的靈活性,采用Deploy外部文件的形式配置服務(wù)運(yùn)行參數(shù)。Factory層在服務(wù)開啟時(shí),分析Deploy文件描述,選擇適當(dāng)?shù)腎mpl實(shí)現(xiàn)注入到Resource層的Logic引用中,當(dāng)遠(yuǎn)程請(qǐng)求訪問Resource的相應(yīng)接口時(shí),Resource會(huì)通過Logic層選用具體的Impl版本提供服務(wù)處理。當(dāng)需要更改計(jì)算環(huán)境中某個(gè)服務(wù)的具體實(shí)現(xiàn)時(shí),只需將新實(shí)現(xiàn)版本相關(guān)文件加入到運(yùn)行環(huán)境中,更改Deploy配置選項(xiàng),無需對(duì)計(jì)算系統(tǒng)原有代碼進(jìn)行修改,提高了系統(tǒng)擴(kuò)展性和靈活性。計(jì)算環(huán)境中所有7個(gè)服務(wù)都遵從服務(wù)分層設(shè)計(jì)方法,具有較好的可用性、靈活性和擴(kuò)展性同時(shí),也方便了其他人員對(duì)環(huán)境的研究和改進(jìn)。
1.3.1 框架技術(shù)組合
Spring[1,2]企業(yè)級(jí)框架技術(shù)簡化服務(wù)內(nèi)部資源組織、維護(hù)和管理,能與多種通信框架無縫結(jié)合,屏蔽服務(wù)底層繁雜通信邏輯,可向外部應(yīng)用者提供多種可選服務(wù)訪問方式,提高了系統(tǒng)靈活性。Spring框架技術(shù)在FVCE服務(wù)搭建過程中處于關(guān)鍵地位。圖2描述了虛擬計(jì)算環(huán)境框架技術(shù)組合方式,JRE (Java runtime environment)是基于JAVA 框架的服務(wù)運(yùn)行基礎(chǔ),屏蔽計(jì)算資源硬件和軟件系統(tǒng)異構(gòu)性,支撐服務(wù)運(yùn)行。Jetty是嵌入式WEB容器,負(fù)責(zé)構(gòu)建和維護(hù)內(nèi)部發(fā)布的服務(wù),并在運(yùn)行期間,監(jiān)聽遠(yuǎn)程服務(wù)請(qǐng)求,選擇相應(yīng)的服務(wù)處理請(qǐng)求。
圖2 框架組合方式
服務(wù)啟動(dòng)時(shí)Spring框架負(fù)責(zé)構(gòu)建應(yīng)用對(duì)象,根據(jù)服務(wù)配置解析應(yīng)用對(duì)象間依賴關(guān)系,完成對(duì)象關(guān)系的依賴注入,服務(wù)運(yùn)行后,Spring框架負(fù)責(zé)接收J(rèn)etty容器提交來的請(qǐng)求,解析請(qǐng)求信息內(nèi)容,轉(zhuǎn)換成內(nèi)部Resource層相應(yīng)方法的調(diào)用,Resource層使用Impl層提供的具體邏輯處理遠(yuǎn)程業(yè)務(wù)請(qǐng)求,業(yè)務(wù)執(zhí)行結(jié)束后,Spring負(fù)責(zé)將響應(yīng)內(nèi)容以請(qǐng)求者期望的通信方式包裝返回。
Spring HTTP使用完整JAVA串行化機(jī)制,支持復(fù)雜JAVA對(duì)象傳輸,適合JAVA端到端之間通信;Hessian使用自定義二進(jìn)制信息傳輸格式,將對(duì)象轉(zhuǎn)換成二進(jìn)制編碼,并進(jìn)行壓縮后傳輸,減輕網(wǎng)絡(luò)傳輸負(fù)擔(dān),同時(shí)支持多種異構(gòu)平臺(tái)間信息傳輸。
Blazeds是由Adobe公司提供的基于二進(jìn)制格式的消息傳輸方式,與Hessian相似,具有一定跨異構(gòu)平臺(tái)傳輸能力,適用于Flex客戶端與虛擬計(jì)算環(huán)境通信使用,由于本文提供的用戶訪問界面使用Flex開發(fā),因此Blazeds作為默認(rèn)客戶端通信方式,Jersey提供RESTful類型服務(wù)通信支持,當(dāng)其它通信方式無法滿足服務(wù)使用者開發(fā)需求時(shí),可以選用RESTful通信模式與FVCE進(jìn)行通信,計(jì)算環(huán)境提供RESTful結(jié)合XML的通信形式,因此對(duì)于能使用HTTP協(xié)議,且解析XML文檔的開發(fā)運(yùn)行環(huán)境,就有與計(jì)算環(huán)境通信的可能。
可二次開發(fā)是FVCE的特性之一,開發(fā)者在了解FVCE相應(yīng)使用規(guī)范后,即可對(duì)FVCE功能進(jìn)行擴(kuò)展。因此,計(jì)算環(huán)境向外提供多種可選服務(wù)通信方式,方便服務(wù)使用者開發(fā)使用。服務(wù)使用者選擇期望的開發(fā)語言和運(yùn)行平臺(tái)擴(kuò)展FVCE的功能。
1.3.2 服務(wù)構(gòu)建及請(qǐng)求處理
本文結(jié)合多種框架技術(shù)為外部提供靈活的訪問方式,同時(shí)提出基于分層的設(shè)計(jì)實(shí)現(xiàn)方法。通過分析服務(wù)構(gòu)建流程,有利于理解計(jì)算環(huán)境和框架結(jié)合使用的方式,同時(shí)說明服務(wù)如何通過配置文件,配置服務(wù)內(nèi)部業(yè)務(wù)邏輯。圖3描述了基于框架技術(shù)的服務(wù)構(gòu)建流程。
圖3 服務(wù)構(gòu)建流程
jetty.xml文檔描述Jetty容器啟動(dòng)時(shí)配置的運(yùn)行參數(shù)(例如:IP地址、端口號(hào)、服務(wù)名稱、緩沖池大小等),服務(wù)啟動(dòng)時(shí),Jetty分析jetty.xml文檔,設(shè)定容器運(yùn)行參數(shù)。Jetty容器正常啟動(dòng)后,分析工作目錄下的web.xml文檔,獲取應(yīng)用服務(wù)具體配置。web.xml文檔提供了遠(yuǎn)程請(qǐng)求URI與應(yīng)用處理程序入口的映射,Jetty根據(jù)應(yīng)用程序入口配置,啟動(dòng)Spring處理過程。Spring分析配置文件servlet.xml,創(chuàng)建應(yīng)用服務(wù)對(duì)象,并分析對(duì)象間依賴關(guān)系,完成依賴關(guān)系注入。
然后Spring創(chuàng)建Factory對(duì)象,分析deploy.xml文檔。deploy.xml文檔中配置服務(wù)開啟時(shí)默認(rèn)使用的業(yè)務(wù)邏輯策略,F(xiàn)actory負(fù)責(zé)創(chuàng)建具體的Impl對(duì)象,并將Impl對(duì)象注入到Resource層的Logic引用中。同時(shí),Spring分析通信模式的配置,并將通信模式的訪問與Resource層中具體方法相關(guān)聯(lián),確定內(nèi)部數(shù)據(jù)的轉(zhuǎn)換邏輯。
服務(wù)運(yùn)行時(shí),接收遠(yuǎn)程請(qǐng)求,選擇適當(dāng)?shù)臉I(yè)務(wù)處理邏輯處理請(qǐng)求,并以期望的方式給予響應(yīng)。Jetty服務(wù)容器監(jiān)聽遠(yuǎn)程客戶端請(qǐng)求,如果請(qǐng)求的URI描述與服務(wù)映射相同,將請(qǐng)求轉(zhuǎn)交給Spring監(jiān)聽器處理,Spring根據(jù)URI的描述,選擇可用通信處理手段,解析請(qǐng)求消息內(nèi)容,生成調(diào)用過程中使用的JAVA參數(shù)對(duì)象,并根據(jù)URI描述定位Resource層中具體的方法,Resource層的方法通過Logic接口,調(diào)用Impl層的具體實(shí)現(xiàn),完成遠(yuǎn)程請(qǐng)求的業(yè)務(wù)處理邏輯。Spring負(fù)責(zé)將請(qǐng)求處理結(jié)果按請(qǐng)求提交的通信方式反饋給客戶端。
注冊(cè)服務(wù)包含5個(gè)主要功能,分別是注冊(cè)、注銷、探測、心跳測試和主機(jī)列表獲取。
任意計(jì)算節(jié)點(diǎn)啟動(dòng)時(shí),向FVCE中某個(gè)計(jì)算節(jié)點(diǎn)提交注冊(cè)信息,表明當(dāng)前節(jié)點(diǎn)期望加入計(jì)算組織,接收注冊(cè)信息的節(jié)點(diǎn)稱為介紹者節(jié)點(diǎn)。介紹者節(jié)點(diǎn)將新節(jié)點(diǎn)信息通知整個(gè)計(jì)算組織,并將計(jì)算組織內(nèi)的主機(jī)列表反饋給新節(jié)點(diǎn)。注冊(cè)結(jié)束后,新節(jié)點(diǎn)知道計(jì)算環(huán)境中所有計(jì)算節(jié)點(diǎn)的資源靜態(tài)信息,計(jì)算環(huán)境中的其它計(jì)算節(jié)點(diǎn)也容納了新節(jié)點(diǎn)的信息。如果介紹節(jié)點(diǎn)是新節(jié)點(diǎn)自身或者配置的注冊(cè)節(jié)點(diǎn)不可達(dá),則新節(jié)點(diǎn)自己構(gòu)成一個(gè)虛擬計(jì)算環(huán)境。
計(jì)算節(jié)點(diǎn)正常離開時(shí),向FVCE提供注銷信息,組織中的其它主機(jī)刪除注銷節(jié)點(diǎn),不再將任務(wù)提交到離開的節(jié)點(diǎn)執(zhí)行。當(dāng)計(jì)算節(jié)點(diǎn)異常離開時(shí),F(xiàn)VCE會(huì)對(duì)異常節(jié)點(diǎn)開啟異常探測過程。注冊(cè)服務(wù)對(duì)不可達(dá)主機(jī)進(jìn)行定期心跳測試,當(dāng)測試次數(shù)超過指定閾值后,注冊(cè)服務(wù)認(rèn)為該主機(jī)將在很長一段時(shí)間內(nèi)不可達(dá),并將不可達(dá)主機(jī)從主機(jī)列表中刪除。
圖4展示了注冊(cè)服務(wù)用戶界面,列表中顯示PCClient計(jì)算節(jié)點(diǎn)能夠調(diào)度使用的計(jì)算單元基本信息。從表中可以得出,虛擬計(jì)算環(huán)境能夠組合多種類型的異構(gòu)資源。
圖4 注冊(cè)服務(wù)
信息服務(wù)組件主要包括,資源靜態(tài)信息列表維護(hù)、資源動(dòng)態(tài)信息獲取、本地資源歷史信息維護(hù)和本地資源信息查詢等功能。
在服務(wù)注冊(cè)期間,信息服務(wù)獲取各計(jì)算節(jié)點(diǎn)的靜態(tài)信息,存儲(chǔ)到本地。調(diào)度組件通過分析主機(jī)靜態(tài)信息選取部分感興趣的計(jì)算節(jié)點(diǎn),使用信息服務(wù)獲取資源動(dòng)態(tài)信息,因此,調(diào)度過程中僅對(duì)部分主機(jī)使用動(dòng)態(tài)信息獲取,減輕了網(wǎng)絡(luò)負(fù)擔(dān)。
本地資源信息查詢需要獲取本地資源配置信息,出于安全考慮,多數(shù)編譯和運(yùn)行環(huán)境不提供主機(jī)信息的直接提取,JAVA僅能獲取少量OS相關(guān)信息,無法獲取CPU、內(nèi)存、硬盤等詳細(xì)信息??梢允褂肅或腳本語言編寫本地主機(jī)信息獲取程序,結(jié)合管道技術(shù)將信息傳遞給信息服務(wù)組件。由于不同操作系統(tǒng)資源訪問庫和腳本不同,一個(gè)信息獲取程序的編寫不適用于所有操作平臺(tái),如果每種操作系統(tǒng)都由FVCE單獨(dú)提供信息收集程序,那么計(jì)算環(huán)境將面臨高昂的開發(fā)代價(jià)。
本文描述的信息服務(wù)使用Sigar[3]收集計(jì)算資源系統(tǒng)信息。信息服務(wù)開啟時(shí),通過JAVA提供的操作系統(tǒng)基本信息,選擇適當(dāng)?shù)腟igar信息收集庫連接到資源系統(tǒng),即可完成計(jì)算資源信息收集。圖5展示了信息服務(wù)組件提供的功能。
圖5 基本信息服務(wù)
文件服務(wù)主要有兩類功能,分別是文件管理功能和文件傳輸功能。文件管理功能包括,遠(yuǎn)程主機(jī)工作目錄訪問、文件關(guān)鍵屬性查詢 (文件名、類型、大小、修改日期等)和工作目錄下創(chuàng)建、查找、刪除文件等操作,JAVA提供了文件系統(tǒng)相關(guān)API,可完成上述功能。
文件服務(wù)在任務(wù)開始執(zhí)行前,將任務(wù)執(zhí)行文件和相關(guān)數(shù)據(jù)文件傳輸?shù)綀?zhí)行主機(jī)工作目錄,并在任務(wù)執(zhí)行結(jié)束后將執(zhí)行結(jié)果相關(guān)文件傳輸?shù)秸{(diào)度提交端,以便使用者查詢?nèi)蝿?wù)執(zhí)行結(jié)果,且文件服務(wù)清理執(zhí)行主機(jī)工作目錄任務(wù)相關(guān)文件,恢復(fù)任務(wù)執(zhí)行前執(zhí)行主機(jī)文件系統(tǒng)狀態(tài)。
任務(wù)管理服務(wù)由3個(gè)主要功能組成,分別是分析任務(wù)、維護(hù)任務(wù)狀態(tài)和維護(hù)任務(wù)池。分析任務(wù)是接收遠(yuǎn)程任務(wù)提交請(qǐng)求、分析任務(wù)說明文件、創(chuàng)建任務(wù)描述對(duì)象,并維護(hù)對(duì)象間執(zhí)行邏輯關(guān)系;維護(hù)任務(wù)狀態(tài)是指,任務(wù)提交服務(wù)接收遠(yuǎn)程執(zhí)行服務(wù)任務(wù)狀態(tài)變化通知,修改任務(wù)池中相應(yīng)單元的執(zhí)行狀態(tài),以便用戶查詢;提交任務(wù)池,維護(hù)投遞到本節(jié)點(diǎn),但尚未執(zhí)行完成的任務(wù),任務(wù)提交服務(wù)通過任務(wù)池容量可以限定投遞到本地的計(jì)算任務(wù)數(shù)量。
任務(wù)調(diào)度服務(wù)接收提交服務(wù)的任務(wù)調(diào)度請(qǐng)求,通過信息服務(wù)獲取計(jì)算環(huán)境主機(jī)靜態(tài)信息,使用評(píng)估策略從中篩選出若干性能較好的資源,之后使用信息服務(wù)的動(dòng)態(tài)信息獲取功能,獲取選中節(jié)點(diǎn)的動(dòng)態(tài)運(yùn)行信息,評(píng)估資源,選擇優(yōu)秀的執(zhí)行資源,將任務(wù)投遞到執(zhí)行主機(jī)的執(zhí)行服務(wù)。調(diào)度算法采用了一種基于對(duì)等模式的隨機(jī)自適應(yīng)調(diào)度算法,能適應(yīng)異構(gòu)的、資源性能差距較大的運(yùn)行環(huán)境,合理的將計(jì)算任務(wù)分配到節(jié)點(diǎn)上,并使用隨機(jī)策略、過載評(píng)估策略和反饋策略,將任務(wù)分配到優(yōu)秀資源上執(zhí)行的同時(shí),保證整個(gè)計(jì)算環(huán)境負(fù)載平衡。
執(zhí)行服務(wù)接收遠(yuǎn)程任務(wù)執(zhí)行請(qǐng)求,創(chuàng)建執(zhí)行描述對(duì)象,存放于任務(wù)執(zhí)行池中,在本地開啟任務(wù)執(zhí)行,監(jiān)控任務(wù)執(zhí)行狀態(tài),并將執(zhí)行狀態(tài)變化反饋給調(diào)度主機(jī)的提交服務(wù)。執(zhí)行服務(wù)同樣需要維護(hù)任務(wù)池,任務(wù)池的容量限定了執(zhí)行主機(jī)能夠同時(shí)運(yùn)行的計(jì)算任務(wù)的數(shù)量。
圖6展示了測試用的5個(gè)并行執(zhí)行的子任務(wù)在虛擬計(jì)算環(huán)境中的執(zhí)行狀態(tài)。
圖6 任務(wù)執(zhí)行信息
如表1所示,測試環(huán)境采用4個(gè)Dell服務(wù)器節(jié)點(diǎn)、3個(gè)高性能計(jì)算單機(jī)節(jié)點(diǎn)、4個(gè)普通測試節(jié)點(diǎn)和1個(gè)遠(yuǎn)程控制節(jié)點(diǎn)組成。每個(gè)Dell服務(wù)器節(jié)點(diǎn)由兩個(gè)CPU組成,每個(gè)CPU有4個(gè)核心,使用超線程技術(shù),每個(gè)核心提供兩個(gè)計(jì)算線程,因此,每個(gè)服務(wù)器節(jié)點(diǎn)由2×4×2個(gè)邏輯CPU組成。每個(gè)高性能計(jì)算單機(jī)節(jié)點(diǎn)由1個(gè)雙核CPU組成,而普通測試節(jié)點(diǎn)則配置較低,與高性能節(jié)點(diǎn)性能差距較大。
表1 虛擬計(jì)算環(huán)境主機(jī)列表
基于對(duì)等體系結(jié)構(gòu)的FVCE,系統(tǒng)內(nèi)各計(jì)算單元間沒有嚴(yán)格的等級(jí)結(jié)構(gòu),所有的計(jì)算單元都具有提交、調(diào)度、執(zhí)行任務(wù)功能。系統(tǒng)管理者可以根據(jù)需要,先將內(nèi)部的零散計(jì)算資源組織成一個(gè)較小的FVCE,之后使用主動(dòng)探測功能與遠(yuǎn)程其它FVCE構(gòu)建成更大的計(jì)算組織。
Server2、Server3、Server4根據(jù)配置文件向Server1注冊(cè),PC2、PC3向PC1注冊(cè),Demo2、Demo3、Demo4向Demo1注冊(cè),Server1、PC1、Demo1、PCClient向自身注冊(cè)。當(dāng)所有計(jì)算單元上的服務(wù)都正常開啟后,Server1、Server2、Server3、Server4,PC1、PC2、PC3,Demo1、Demo2、Demo3、Demo4和PCClient都各自構(gòu)成一個(gè)FVCE,最后,使用注冊(cè)服務(wù)的主動(dòng)探測功能,Server1、PC1、Demo1分別向PCClient交換信息,構(gòu)成一個(gè)更大的計(jì)算環(huán)境。通過FVCE中的任何一個(gè)計(jì)算資源,用戶都可以訪問整個(gè)計(jì)算環(huán)境,本文通過使用裝有Windows系統(tǒng)環(huán)境的PCClient訪問整個(gè)計(jì)算環(huán)境。
本文使用Marmousi模型波場正演[4]對(duì)FVCE組件功能進(jìn)行測試。有限差分波場正演根據(jù)炮集劃分成若干粒度較粗子任務(wù),各任務(wù)可獨(dú)立并行運(yùn)行,正演過程分成五步:①速度模型重采樣;②單炮正演,采用二維聲學(xué)有限差分正演每炮合成記錄;③每炮使用梯形濾波,過濾不必要的頻率成分;④生成單炮合成記錄;⑤所有炮正演結(jié)束后,統(tǒng)一調(diào)整道頭,產(chǎn)生零偏移距剖面和近偏移距剖面。任務(wù)DAG圖描述如圖7所示。
圖7 Marmousi正演過程DAG描述
在FVCE環(huán)境下通過計(jì)算測試得出零偏移距和近偏移距剖面合成結(jié)果如圖8所示,F(xiàn)VCE分布式計(jì)算框架基本上可以滿足地震勘探海量測試數(shù)據(jù)的計(jì)算需求。利用這種虛擬計(jì)算框架能夠協(xié)同多種計(jì)算資源共同完成復(fù)雜的計(jì)算任務(wù),節(jié)約了計(jì)算成本。
圖8 零偏移距和近偏移距剖面合成記錄
在同等環(huán)境下,將FVCE的功能組件與集群計(jì)算和網(wǎng)格計(jì)算環(huán)境下的處理系統(tǒng)進(jìn)行對(duì)比,計(jì)算Marmousi正演過程所需的時(shí)間。3種不同虛擬計(jì)算環(huán)境下的處理系統(tǒng)的運(yùn)行時(shí)間如圖9所示。集群PBS處理系統(tǒng)所需運(yùn)行時(shí)間為10805(s),集群使用集中調(diào)度方式,對(duì)全局資源評(píng)估的基礎(chǔ)上實(shí)施調(diào)度,在實(shí)驗(yàn)室計(jì)算規(guī)模較小的情況下相對(duì)性能較高。
圖9 不同虛擬環(huán)境下Marmousi正演時(shí)間對(duì)比
網(wǎng)格計(jì)算GT系統(tǒng)所需運(yùn)行時(shí)間為13203(s),盡管GT也使用集中調(diào)度方式,但是網(wǎng)格的性能提升很大程度上依賴與底層集群的執(zhí)行效率,并且子任務(wù)不能夠跨越多個(gè)集群執(zhí)行,因此效率比單集群低很多。
FVCE環(huán)境下所需運(yùn)行時(shí)間為11001(s),F(xiàn)VCE采用對(duì)等式調(diào)度模式,所有的計(jì)算節(jié)點(diǎn)都具有調(diào)度執(zhí)行功能,并且適用于異構(gòu)的計(jì)算環(huán)境中實(shí)施調(diào)度,在當(dāng)前實(shí)驗(yàn)室配置環(huán)境中,F(xiàn)VCE的執(zhí)行性能與GT相近。當(dāng)計(jì)算環(huán)境規(guī)模擴(kuò)大,并且資源種類多樣時(shí),F(xiàn)VCE性能將會(huì)得到進(jìn)一步提升。
當(dāng)計(jì)算規(guī)模較小,且使用同構(gòu)或性能差異較小的計(jì)算資源,集群即可發(fā)揮較大的性能優(yōu)勢(shì);當(dāng)計(jì)算環(huán)境規(guī)模不斷擴(kuò)大,計(jì)算資源種類較多且性能差異明顯時(shí),集群已無法滿足計(jì)算和調(diào)度需求,F(xiàn)VCE使用對(duì)等式調(diào)度模式,適用于組織零散的計(jì)算資源,尤其是計(jì)算資源性能差異明顯并且規(guī)模較大的情況。當(dāng)計(jì)算資源規(guī)模繼續(xù)擴(kuò)大,并且能夠?qū)⑼瑯?gòu)計(jì)算資源使用集群組織管理,分層管理模式的GT在更高層次上控制和管理多個(gè)集群,能夠使整個(gè)系統(tǒng)獲得更好的計(jì)算性能。
本文在研究以往虛擬計(jì)算環(huán)境、調(diào)度算法和框架技術(shù)基礎(chǔ)上,提出了一種基于框架技術(shù)的虛擬計(jì)算環(huán)境FVCE的實(shí)現(xiàn)方法,框架技術(shù)能夠屏蔽底層繁雜的通信細(xì)節(jié),簡化系統(tǒng)業(yè)務(wù)處理邏輯,實(shí)現(xiàn)多個(gè)服務(wù)組件在異構(gòu)環(huán)境中通信與協(xié)作,能夠整合散異構(gòu)的計(jì)算資源。FVCE采用分層服務(wù)設(shè)計(jì)方式來提高服務(wù)擴(kuò)展性及靈活性,將計(jì)算環(huán)境按功能劃分成多個(gè)服務(wù)組件,各服務(wù)組件在遵循接口定義的約束下,可獨(dú)立設(shè)計(jì)、開發(fā)和進(jìn)化,方便用戶進(jìn)行二次開發(fā),提升了虛擬計(jì)算系統(tǒng)的靈活性。采用Marmousi模型波場正演為例進(jìn)行了應(yīng)用測試,證明了虛擬計(jì)算系統(tǒng)的可行性,并在相同的硬件配置環(huán)境下與集群和網(wǎng)格計(jì)算系統(tǒng)進(jìn)行了性能測試對(duì)比,實(shí)驗(yàn)結(jié)果表明,F(xiàn)VCE適用于性能差異明顯的計(jì)算資源組織,在計(jì)算資源規(guī)模較大的環(huán)境下性能較好,能夠充分發(fā)揮出整體的計(jì)算潛能。
[1]Shufen Zhang,Shuai Zhang,Xuebin Chen,et al.Analysis and research of cloud computing system instance [C]//Second International Conference on Future Networks,2010:88-92.
[2]Rod Johnson,Juergen hoeller,Keith Donald,et al.Spring framework reference document [EB/OL]. [2011-04-25].http://www.springsource.org.
[3]Ryan Morgan,Doug MacEachem.System information gather and reporter(SIGAR)[EB/OL]. [2010-09-10].http://support.hyperic.com/display/SIGAR/Home.
[4]Ding Renwei,Li Zhenchun,Tong Zhaoqi.Research and development of seismic data processing system based on CFP technology by utilizing Qt graphical user interface library [J].Geophysical Prospecting for Petroleum,2009 (2):256-261.
[5]Daniel Nurmi,Rich Wolski,Chris Grzegorczyk,et al.The eucalyptus open-source cloud-computing system [C]//9th IEEE/ACM International Symposium on Cluster Computing and the Grid,2009:124-132.
[6]Youseff L.Toward a unified ontology of cloud computing[C]//Grid Computing Environments Workshop,2008:1-10.
[7]Foster I.Cloud computing and grid computing 360-degree compared[C]//Grid Computing Environments Workshop,2008:12-16.
[8]Peter Mell,Timothy Grance.The NIST definition of cloud computing [S].National Institute of Standards and Technology Special Publication (800-145),2011.
[9]CHEN Xiaojun,ZHANG Jing,LI Junhuai.Framework for collaborative computing task distribution deployment and execution over multiple virtual machines [J].Journal of Applied Sciences,2011,29 (5):516-520 (in Chinese). [陳小軍,張璟,李軍懷.多虛擬機(jī)協(xié)同計(jì)算任務(wù)的分發(fā)部署及運(yùn)行框[J].應(yīng)用科學(xué)學(xué)報(bào),2011,29 (5):516-520.]
[10]Ellert M,Gronager M,Konstantinov A,et al.Advanced resource connector middleware for lightweight computational grids [J].Future Generation Computer Systems,2007 (23):219-240.
[11]ZHU Jun,GONG Jianhua,LIN Jun.Study on VGE computing architecture and key technologies [J].Journal of North University of China (Natural Science Edition),2007,28(4):326-330 (in Chinese). [朱軍,龔建華,林軍.虛擬地理環(huán)境計(jì)算框架及其關(guān)鍵技術(shù)研究 [J].中北大學(xué)學(xué)報(bào) (自然科學(xué)版),2007,28 (4):326-330.]