摘 要: 探討了使用C++部署網(wǎng)格服務的幾種方案,分析了各種可能的框架的調(diào)用等待時間、可擴展性和可靠性。使用不同的部署框架得到的最終結果在性能上有很大差異。
關鍵詞: 網(wǎng)格服務 C++ 調(diào)用時間 性能評價
網(wǎng)格計算的出現(xiàn)引發(fā)了分布式領域的多個計算標準和架構的出現(xiàn)(如Globus、Legion等),它們都致力于為網(wǎng)格應用程序和服務提供一個穩(wěn)定的環(huán)境[1]。由于Java語言的許多特性非常適合于目標環(huán)境,所以大多數(shù)架構是基于Java開發(fā)的。但是,有些情況下使用Java并不適宜。一個眾所周知的問題就是性能[2]。此外,還有一個問題是原有的C++程序需要重新編寫才能夠在新的體系結構下運行,由于經(jīng)常出現(xiàn)程序邏輯和服務部署的語言不一致,所以用Java重寫通常來說不是一個最佳選擇。
本文研究了現(xiàn)有的、允許部署C++程序作為網(wǎng)格服務的所有框架,在每種框架上都部署了一系列簡單的服務并測試了每種情況下的等待時間和可擴展性。試驗結果說明網(wǎng)格服務平臺架構的選擇對于最終網(wǎng)格服務的性能有著很大的影響。
1 網(wǎng)格體系結構介紹
1.1 網(wǎng)格服務標準
OGSA(Open Grid Services Architecture)的創(chuàng)建是為了滿足網(wǎng)格在分布、異構的動態(tài)環(huán)境下整合服務的需要。OGSA只定義了架構,沒有給出實現(xiàn)。有兩種符合OGSA的實現(xiàn):OGSI(開放式網(wǎng)格服務基礎結構,Open Grid Service Infrastructure)和更新的WSRF(網(wǎng)絡服務資源框架,Web Service Resource Framework)。OGSI擴展了WSDL(Web Service Definition Language)和XML Schema,使Web Service的狀態(tài)可以標準化。WSRF是一個符合OGSA標準的實現(xiàn),用于取代OGSI并統(tǒng)一Web Service和網(wǎng)格服務世界。
1.2 網(wǎng)格服務體系結構
(1)Globus Toolkit。Globus Toolkit把服務隔絕在網(wǎng)格服務容器(Grid Service Container)中,Globus Toolkit在其中發(fā)揮作用并向遠程客戶端提供服務。容器運行時管理所有服務相關的工作,如服務創(chuàng)建、調(diào)用分發(fā)和服務銷毀。
(2)OGSI.NET。OGSI.NET是Microsoft .NET平臺上的一個OGSI的實現(xiàn),由Virginia Grid Computing Group開發(fā)。OGSI.NET服務容器的工作機理是通過一個ISAPI過濾器截獲Microsoft IIS請求。容器本身被作為一個Windows服務實現(xiàn)。
(3)WSRF.NET。WSRF.NET是一個在Microsoft.NET平臺上開發(fā)符合WSRF規(guī)范服務的開發(fā)包。這個框架中大量使用了標準的Microsoft程序和工具(如IIS,ASP.NET)。有一個專門的ISAPI過濾器用來更正基于EPR(末端參考,EndpointReference)的消息分發(fā),但是并沒有單獨的容器來實現(xiàn),而是用一個靜態(tài)生成的殼(wrapper)使得網(wǎng)格服務作為標準的ASP.NET網(wǎng)絡服務運行。
(4)gSOAP。gSOAP是用于創(chuàng)建C/C++網(wǎng)絡服務的軟件開發(fā)包。gSOAP應用于科學計算領域和對時間要求嚴格的場合,特別經(jīng)過速度優(yōu)化。由于加入的層被C++優(yōu)化過,所以可視為是一種快速、天然的部署C++服務的方法。gSOAP不支持創(chuàng)建OGSI和WSRF服務,因此不能直接作為網(wǎng)格服務的容器。本文將其加入測試,是為和其他體系結構做對比。
2 性能對比
2.1 測試方法
為了測試每種體系結構的性能,創(chuàng)建了一個C++類,其包含兩個方法:
int Echo(int):輸入一個整數(shù)并返回,不做其他處理。
int Matrix(int):輸入一個整數(shù)k,進行一個矩陣乘法運算,由兩個k階的矩陣相乘,這樣每次調(diào)用產(chǎn)生一個O(k3)的復雜度運算。返回值是一個整數(shù)描述結果的狀態(tài)。這兩個方法產(chǎn)生的數(shù)據(jù)傳輸(參數(shù)和返回值)是非常小的。這一點保證了調(diào)用這兩個方法時產(chǎn)生的延遲不是由體系結構部署XML parser時產(chǎn)生的。大多數(shù)科學計算程序的調(diào)用請求都屬于這種少量數(shù)據(jù)傳輸?shù)姆绞健?br />
大部分網(wǎng)格架構的測試是通過測量客戶端服務調(diào)用的等待時間實現(xiàn)的。為達到這個目的,在每一種體系結構下部署了Echo和Matrix方法。測試客戶端使用Microsoft.NET平臺的C#開發(fā)。
選擇沒有負載的服務器測試單純的服務調(diào)用等待時間。客戶端每隔50ms調(diào)用一次Echo服務,一共調(diào)用100次,平均調(diào)用等待時間被記錄下來。
2.2 測試配置
服務器端配置兩臺相同的PC機。具體配置為:Intel Pentium IV 2.8 MHz CPU,512MB內(nèi)存,80GB 7200 rpm HDD和100MB以太網(wǎng)卡。
每臺PC機都重新安裝了操作系統(tǒng)。一臺運行Redhat Linux(Kernel 2.6.9-5.EL),另一臺運行Microsoft Windows XP Service Pack 2。所有的軟件包都使用默認安裝,沒有做任何優(yōu)化。其結果為默認配置下的結果。
客戶端使用C#編程。客戶端管理程序能夠產(chǎn)生多個客戶端進程作為分開的線程并且收集每個線程的等待時間,此程序在本文中的所有測試中使用。
2.3 測試結果
測試Echo方法調(diào)用。創(chuàng)建一個服務實例,順序調(diào)用100次Echo。每次調(diào)用中間停止50ms,測試結果如圖1、圖2所示。
圖1是創(chuàng)建一個服務實例,顯示出調(diào)用100次Echo的測試結果。Globus Toolkit是網(wǎng)格服務框架中等待時間最短的,gSOAP由于只支持Web Service,速度比Globus Toolkit還要快。
圖2與圖1相同,但是包含了OGSI.NET的測試結果。OGSI.NET的調(diào)用時間非常長。
GT4.0C代表Globus Toolkit4.0下被Java包裹的C服務,GT4.0Java代表Globus Toolkit4.0下的純Java服務。gSOAP是平均等待時間最短的,為3.2ms。網(wǎng)格服務架構中,Globus Toolkit4.0最快,為6ms。Java wrapper沒有產(chǎn)生明顯的性能延遲,C和Java服務有非常接近的測試結果。
WSRF.NET 的調(diào)用等待時間是23.5ms,OGSI.NET在這項測試中表現(xiàn)非常不好。接下來的測試同樣證明了OGSI.NET存在嚴重的性能缺陷。
圖3的測試是一個單獨的客戶端調(diào)用100次Echo的結果,每次調(diào)用間隔50ms。不同之處在于服務生命期管理功能用于為Echo調(diào)用創(chuàng)建服務實例。第二次調(diào)用Echo前實例被銷毀。從圖3可看出,Globus Toolkit的調(diào)用時間較之前加倍,WSRF.NET的速度基本沒變。
測試結果和之前確定的保持一樣的層次結構。gSOAP由于不支持網(wǎng)格服務和服務生命期管理,所以沒有出現(xiàn)在這次測試中。Globus Toolkit盡管等待時間加倍,但仍然是最快的。WSRF.NET的時間不受影響。OGSI.NET的等待時間是778ms。
3 結 論
測試結果表明,在考慮等待時間和可擴展性的前提下,最適合部署C++網(wǎng)格服務的體系結構是加了Java殼的Globus Toolkit4.0。
WSRF.NET是一個不錯的測試WSRF新標準的平臺。但是,它在等待時間上的表現(xiàn)不如Globus。如果這方面要求非常嚴格,則WSRF.NET不是一個好的選擇。
OGSI.NET表現(xiàn)出性能問題,等待時間、可擴展性都不好。
gSOAP在等待時間和可擴展性方面的表現(xiàn)十分出色。但gSOAP不支持網(wǎng)格服務,所以很難直接比較。如果服務不需要生存期管理、資源、提醒等網(wǎng)格服務的擴展功能并且性能要求很高,則gSOAP可以做為一個不錯的部署框架。Globus開發(fā)小組在Globus Toolkit 4.0中使用gSOAP作為C++服務支持層。從測試結果中可以看出,在不影響網(wǎng)格服務功能的原則下,極大地提高了網(wǎng)格服務的速度。
參考文獻
1 Foster I,Kesselman C,Nick J et al.The Physiology of the Grid:An Open Grid Services Architecture for Distributed Systems Integration.Open Grid Service Infrastructure WG,Global Grid Forum,2002
2 Karatzoglou A.Developing a parallel benchmarking suite for Java Grande applications.Technical Report EPCCSS99-06,Edinburgh Parallel Computing Centre,1999
3 Gannon D.A Revised Analysis of the Open Grid Services Infrastructure.http://www.extreme.indiana.edu/~gannon/ogsaAnalysis4.pdf
4 Tuecke S,Czajkowski K,F(xiàn)oster I et al.Open Grid Services Infrastructure(OGSI) Version 1.0.Global Grid Forum Draft Recommendation,2003
5 Czajkowski K,F(xiàn)erguson D F,F(xiàn)oster I et al.The WSResource Framework Version 1.0.http://www.globus.org/wsrf/specs/ws-wsrf.pdf
6 Czajkowski K,F(xiàn)erguson D,F(xiàn)oster I et al.From Open Grid Services Infrastructure to WS-Resource Framework:Refactoring & Evolution.http://www.globus.org/wsrf/OGSItoWSRF1.0.pdf
7 The Globus Alliance. The Globus Toolkit.http://www.globus.org/toolkit/