【 摘 要 】 當前,中間件平臺性能自優(yōu)化的需求越來越突出。性能模型是自優(yōu)化控制的核心,是分析系統(tǒng)性能問題和規(guī)劃資源調(diào)度策略的基礎(chǔ)。雖然已有不少針對中間件平臺的性能建模的方法,但是尚沒有方法系統(tǒng)闡述如何應對開放、動態(tài)情況下的性能建模問題。論文分析了當前主流的性能建模方法的可取之處以及存在的不足。
【 關(guān)鍵詞 】 中間件;性能建模
【 Abstract 】 The demand of the middleware platform performance self-optimization is becoming more and more prominent. Performance model is the core of self-optimizing control, the basis of analysis of system performance problems and planning resource scheduling strategy. Although several performance modeling methods for the middleware platformhad been put forward, there isnt a method which expounds systematically how to deal with the problem of performance modelingunder the openand dynamiccircumstance. The merits and the deficiencies of current performance modeling methodsare analyzed in this paper.
【 Keywords 】 middleware;performance modeling
1 引言
Web系統(tǒng)的性能作為衡量用戶滿意度的重要屬性,受到了越來越多的關(guān)注,隨著發(fā)布與管理模式的轉(zhuǎn)變,性能保障不再是單純的以滿足服務質(zhì)量約束為目標,而更需要兼顧資源利用率的提高。與此同時,Web系統(tǒng)面臨的環(huán)境變得日益開放、動態(tài)和難控,導致系統(tǒng)管理和控制難度大大增加。
因此,加強Web應用宿主平臺(即中間件平臺)感知自身和外界的變化,按需調(diào)度底層計算資源的需求也變得越來越強烈。性能自優(yōu)化成為當前研究的熱點之一。自優(yōu)化的目標是通過管理計算資源的分配方式,使軟件能滿足不同用戶的性能需求。性能模型是自優(yōu)化控制的核心,是分析系統(tǒng)性能問題和規(guī)劃資源調(diào)度策略的基礎(chǔ)。
本文將分類討論現(xiàn)有建模方法的優(yōu)點以及存在的不足。
2 基于經(jīng)驗的建模方法
為了分析和理解軟件系統(tǒng)的性能,不少研究集中于性能(元)模型的設(shè)計,比如排隊論模型。但是由于元模型自身的復雜性,這類模型難以被軟件開發(fā)人員直接采用。不少學者研究如何降低性能建模的難度,使性能建模過程可以整合進軟件開發(fā)流程。一類常用的方法是基于設(shè)計人員熟悉的體系結(jié)構(gòu)模型進行性能建模,比如利用UML模型和用例模型等等。
Petriu等提出一個從軟件生命周期的需求階段到體系結(jié)構(gòu)設(shè)計階段進行性能分析的方法。該方法從基于UCM(Use Case Maps)規(guī)約描述的系統(tǒng)場景中導出分層排隊網(wǎng)模型。該方法在UCM規(guī)約中增加了性能標注,定義了在圖的何處進行標注以及如何進行標注。當性能信息缺乏時,該方法還提供了可用的缺省值。由于UCM和分層排隊網(wǎng)基本元素之間具有密切的對應性,從標記了性能信息的UCM中導出分層排隊網(wǎng)是非常直接的。但由于UCM標記不能描述同步、異步以及請求轉(zhuǎn)發(fā)這些通信機制,因此在該方法中,識別組件交互類型時的方法非常復雜。
Wu等人首先提出了一種基于組件的性能建模方法,旨在將性能建模與基于組件模型的開發(fā)方法統(tǒng)一。作者假設(shè)組件庫在某個領(lǐng)域內(nèi)是已經(jīng)存在的,與這些組件匹配的性能子模型也是存在的,而且足夠的靈活,可以應對組件面臨的復雜環(huán)境。作者定義了組件的性能子模塊的接口以及參數(shù)化規(guī)則。組合時,通過參數(shù)實現(xiàn)性能子模塊的個性化設(shè)置,然后通過接口進行組合。
Verdickt提出了一種為基于UML模型的性能模型自動引入中間件性能影響因素的方法。該方法的輸入包括:UML模型的活動圖、協(xié)作圖和部署圖,用以刻畫應用層的性能模型以及中間件描述文件。轉(zhuǎn)換過程中該方法需要使用一個中間件模型庫,這個庫中保存了預先建模的各種中間件的性能子模型。轉(zhuǎn)換過程中,該方法會首先根據(jù)中間件描述文件從中間件模型庫中查找中間件性能子模型,然后在應用層模型中制定的位置將中間件性能子模型插入。
這類方法的優(yōu)勢是大大降低了性能建模的難度,使性能建模過程可以和軟件系統(tǒng)的設(shè)計過程相整合,在設(shè)計軟件體系結(jié)構(gòu)的同時可獲知軟件的性能,以便在軟件設(shè)計早期,預先了解當前設(shè)計下的性能,然后做出適應性的調(diào)整,降低軟件后期修改與調(diào)優(yōu)的代價。
但這類方法過于依賴設(shè)計人員對軟件系統(tǒng)的了解和開發(fā)類似系統(tǒng)的設(shè)計經(jīng)驗,容易出錯。因而,這類方法僅適用于軟件開發(fā)早期進行粗略估計,而不適用于運行時分析和規(guī)劃系統(tǒng)的資源分配。特別是對于開放和動態(tài)的運行環(huán)境,應用設(shè)計人員很難了解平臺的環(huán)境信息,也就無法準確的給出軟件系統(tǒng)的性能模型。
3 基于測試的建模方法
基于測試的方法依賴于軟件實際運行環(huán)境進行建模,使性能模型可以更準確的反映軟件的性能特征。這類方法假設(shè)軟件已經(jīng)或者部分開發(fā)完成,可以部署在運行環(huán)境中進行測試。測試用例或測試環(huán)境由這些方法提供,這些方法通過監(jiān)測與分析測試用例下的應用行為和資源消耗情況最終構(gòu)造出的性能模型。
Hrischuk 等人提出了一種基于軌跡的性能模型構(gòu)造方法。該方法基于AngioTrace進行軌跡分析,分為三個步驟:首先利用測試環(huán)境記錄下軟件的AngioTrace;然后分析這些軌跡,將其轉(zhuǎn)化為分層排隊網(wǎng)的子模型,排隊網(wǎng)子模型中包括軌跡中的各個任務,以及任務之間的交互模型;最后,通過組合這些性能子模型構(gòu)成一個完整的性能模型。此外還需加入模型所需的配置信息。
Jordan等人利用本地代碼調(diào)用獲取應用的CPU資源狀態(tài),并在此基礎(chǔ)上實現(xiàn)JVM內(nèi)的多應用隔離。該方法本質(zhì)上是一種基于采樣的度量方法,其精確度依賴于采樣時間戳的精密度。由于事務型應用每次請求處理所使用的CPU時間極短,因此對方法使用的時間戳精密度要求很高。
Woodside等人提出了一種計算軟件組件資源函數(shù)的方法。資源函數(shù)描述了組件的資源需求與輸入的參數(shù)以及執(zhí)行環(huán)境之間的關(guān)系。該方法為度量單個組件的資源函數(shù)提供測試套件,并在其基礎(chǔ)上提出了一種統(tǒng)計分析資源函數(shù)的方法。但是該方法并不保證組件需要的其它服務都已經(jīng)存在,而是假設(shè)這些服務在測試過程中就已經(jīng)存在。當組件部署到目標平臺前,首先在該平臺上運行基準測試,然后通過基準測試收集的數(shù)據(jù)推算該組件在目標平臺上的資源函數(shù)。
基于測試的方法降低了對設(shè)計人員經(jīng)驗的依賴程度,通過提供各種測試工具和響應的建模方法,性能建模過程只需要設(shè)計人員給出測試計劃即可自動的生產(chǎn)性能模型。但是,這類方法仍存在以下不足:模型構(gòu)造依賴于測試人員的測試計劃,如果在測試計劃中枚舉組件可能面對的使用情況,整個測試過程就會面臨組合爆炸的問題,否則測試環(huán)境又很難與實際使用環(huán)境的相匹配。其次,性能受硬件平臺的影響非常明顯,雖然基準測試可以在一定程度上緩解差測試環(huán)境與實際環(huán)境的差異性,但是仍然無法如何解決代碼中可能存在的本地代碼調(diào)用這類問題,使得基準測試的適用范圍受到限制。
4 動態(tài)建模方法
這一節(jié)討論利用系統(tǒng)運行時的狀態(tài)構(gòu)造性能模型的方法。由于系統(tǒng)運行之后系統(tǒng)內(nèi)部信息就變成了一個黑盒,獲取性能數(shù)據(jù)就會相對困難。
Urgaonkar等人給出了提出了一種針對多層架構(gòu)Internet服務構(gòu)造性能模型的方法。該方法以分層架構(gòu)的Internet軟件為研究對象,作者將服務器節(jié)點視為一個排隊論模型中的隊列,即將服務器節(jié)點視為一個組件。該方法通過監(jiān)測不同層次上服務器的訪問頻率,然后通過服務器節(jié)點之間的先序關(guān)系,計算出上一層服務器訪問下一層服務器的頻率。而對于資源消耗,由于該方法只分析服務器節(jié)點的性能,因而可以很容易的通過監(jiān)測的方法,知道單個服務器節(jié)點的資源消耗。此外,作者還考慮了基于會話的負載。但是由于并沒有考慮應用組件,因而負載也僅考慮了思考時間和會話的長度,并沒有考慮會話中對不同應用組件的請求。
在運行時動態(tài)獲取應用的主要性能特征并對其進行量化構(gòu)造成性能模型可以很好的避免對經(jīng)驗和測試用例的依賴,使性能模型能更好的體現(xiàn)應用真實的狀態(tài),提高性能模型分析的準確性。但是,由于運行時難以獲得構(gòu)造組件與性能相關(guān)的所有參數(shù),現(xiàn)有方法或者是同軟件系統(tǒng)進行較高程度的抽象,忽略掉與軟件組件相關(guān)的性能特征,或者基于某些假設(shè),認為模型的主體已經(jīng)存在,而只需要更新其中的一些參數(shù),并沒有系統(tǒng)的提出一種基于組件的面向運行環(huán)境的建模方法。
5 結(jié)束語
性能模型是一種通過數(shù)學手段將軟件運行與時間相關(guān)的要素進行量化,然后計算出系統(tǒng)在某些參數(shù)修改或者優(yōu)化后的性能表現(xiàn)?;诮M件的性能建模可以很好的用于分析軟件系統(tǒng)中存在的性能問題,評估各種調(diào)度策略的優(yōu)化可能帶來的改進,以及預測系統(tǒng)最大的處理能力。
針對Web應用日益開放、動態(tài)和難控的特點,建模方法應在動態(tài)建模方法方面進一步研究,探索如何獲取應用自身的特點以及運行軟硬件環(huán)境的特征。動態(tài)建模方法可以借鑒基于經(jīng)驗和基于測試的建模方法的優(yōu)點。比如,首先可以基于軌跡跟蹤的方法,在運行時發(fā)現(xiàn)軟件層的邏輯結(jié)構(gòu),然后再結(jié)合應用和平臺分離的思想,將運行時軟件應用和平臺各自的特征結(jié)合起來,構(gòu)成完整的性能模型,最后改進現(xiàn)有的服務時間估算方法,使服務時間更加準確。
參考文獻
[1] D.C. Petriu et al., Software Performance Models from System Scenarios in Use Case Maps, Proc. 12th Intl Conf. Modeling Tools and Techniques for Computer and Comm. System Performance Evaluation, pp. 141-1158, 2002.
[2] Xiuping Wu et al., Performance Modeling from Software Components, Workshop on Software and Performance 2004, pp: 290-301.
[3] Tom Verdickt et al., Automatic Inclusion ofMiddleware Performance Attributesinto Architectural UML Software Models, IEEE Transactionsonsoftwareengineering, VOL. 31, NO. 8, AUGUST 2005. pp:695-711.
[4] Curtis E. Hrischuk et al., Trace-Based Load Characterization forGenerating Performance Software Models, IEEE Transactionson Software Engineering, Vol. 25, No. 1, JANUARY/FEBRUARY 1999, pp:122-135.
[5] Mick Jordan et al., Extending a J2EE server with dynamic and flexible resource management, Proceedings of the 5th ACM/IFIP/USENIX international conference on Middleware, October 18-22, 2004, Toronto, Canada.
[6] Murray Woodside et al., Resource function capture for performance aspects of software components andsub-systems, Performance Engineering, State of the Art and Current Trends, Springer-Verlag, London, UK, 2001, pp. 239_256.
[7] Bhuvan Urgaonkar et al., An Analytical Model for Multi-tier Internet Servicesand Its Applications. ACM SIGMETRICS International Conference on Measurement and Modeling of Computer Systems, 2005.
作者簡介:
徐琳(1985-),女,漢族,安徽天長人,畢業(yè)于中國科學院軟件研究所,碩士,國家知識產(chǎn)權(quán)局專利局,審查員,具有多年專利審查經(jīng)驗,負責計算機網(wǎng)絡、計算機安全、模式識別等領(lǐng)域的專利審查。