巧用PerfMon工具進(jìn)行Windows服務(wù)器基準(zhǔn)測(cè)試
服務(wù)器性能是不能憑主觀(guān)意識(shí)去判定的,即使一臺(tái)服務(wù)器狀態(tài)良好,IT工程師們也需要一臺(tái)機(jī)器測(cè)量,明確衡量標(biāo)準(zhǔn),和衡量其性能。幾乎在每一種情況下,基準(zhǔn)都是用來(lái)測(cè)量和監(jiān)測(cè)服務(wù)器性能的。本文提供了一個(gè)服務(wù)器指標(biāo)和基準(zhǔn)測(cè)試的概述。
了解服務(wù)器的度量和基準(zhǔn)測(cè)試
服務(wù)器測(cè)量標(biāo)準(zhǔn)和基準(zhǔn)測(cè)試技術(shù)并非新的概念,其實(shí)早在許多年前就已提出來(lái),并用于測(cè)試早期的一些計(jì)算機(jī)系統(tǒng)。但是,設(shè)計(jì)基準(zhǔn)測(cè)試以衡量服務(wù)器性能其本身就是一門(mén)完整的科學(xué)。我們的想法是這樣的:對(duì)服務(wù)器的預(yù)期工作負(fù)載執(zhí)行一個(gè)模擬運(yùn)行過(guò)程。在執(zhí)行運(yùn)行過(guò)程并計(jì)時(shí)。然后在不同的系統(tǒng)上執(zhí)行完全相同的測(cè)試并對(duì)比結(jié)果。
由于服務(wù)器體系結(jié)構(gòu)先進(jìn),它變得更加難以在不同的計(jì)算機(jī)系統(tǒng)通過(guò)簡(jiǎn)單地分析確定其性能,因此,度量和基準(zhǔn)測(cè)試開(kāi)始出現(xiàn)了。
我們都使用Windows任務(wù)管理器,看看某個(gè)應(yīng)用程序或進(jìn)程影響著我們的內(nèi)存或CPU使用率。這是度量測(cè)試,盡管在一個(gè)非常簡(jiǎn)單的水平。與Windows任務(wù)管理器的問(wèn)題是,它并沒(méi)有說(shuō)明如何一臺(tái)機(jī)器的真正效果。分層緩存子系統(tǒng),自定義應(yīng)用程序,定制硬件,海量數(shù)據(jù)庫(kù),非統(tǒng)一內(nèi)存和同時(shí)多線(xiàn)程處理器已經(jīng)作出了現(xiàn)代計(jì)算系統(tǒng)的性能產(chǎn)生巨大影響。
“科學(xué)”的服務(wù)器性能基準(zhǔn)測(cè)試
服務(wù)器性能通常不會(huì)由一個(gè)因素的影響,因此服務(wù)器的性能進(jìn)行測(cè)試應(yīng)類(lèi)似于一個(gè)科學(xué)實(shí)驗(yàn)位。最好的方式來(lái)進(jìn)行服務(wù)器的性能測(cè)試之一是利用在分析的科學(xué)方法。這個(gè)方法是一個(gè)六步的過(guò)程,包括觀(guān)察,初步假設(shè),預(yù)測(cè),測(cè)試/控制和測(cè)試的最終結(jié)果即一個(gè)理論和結(jié)論。那么結(jié)論是支持最好的證據(jù)收集在運(yùn)行測(cè)試集。無(wú)論是最佳和最小的服務(wù)器性能水平也得到了同樣的證據(jù),是在這個(gè)過(guò)程中收集的。
1、觀(guān)察:我們假設(shè)系統(tǒng)管理員購(gòu)買(mǎi)了一臺(tái)服務(wù)器,現(xiàn)在看看它的最佳性能。第一步是確定服務(wù)器預(yù)期任務(wù)。其將作為一個(gè)虛擬平臺(tái)還是運(yùn)行一個(gè)專(zhuān)門(mén)的應(yīng)用程序?確定這些問(wèn)題之后,就可以開(kāi)始基準(zhǔn)測(cè)試了。切記,測(cè)量標(biāo)準(zhǔn)和基準(zhǔn)測(cè)試將根據(jù)測(cè)試內(nèi)容和使用的設(shè)備而有所變化。例如,如果作為數(shù)據(jù)庫(kù)系統(tǒng)可能會(huì)強(qiáng)調(diào)處理器測(cè)試,而用于網(wǎng)絡(luò)服務(wù)系統(tǒng)的話(huà)可能會(huì)突出網(wǎng)絡(luò)性能。
2、假設(shè):在這個(gè)步驟,工程師設(shè)定一個(gè)基準(zhǔn)目標(biāo)。假設(shè)什么或者測(cè)試需要完成什么?簡(jiǎn)單地進(jìn)行一個(gè)度量測(cè)試將得出一些試驗(yàn)結(jié)果,但是沒(méi)有方向或明確的目標(biāo)的話(huà),這些結(jié)果可能是無(wú)用的。為測(cè)試創(chuàng)建一個(gè)基本的目標(biāo),并且所有的測(cè)試方法都圍繞這個(gè)目標(biāo)。例如,工程師可能會(huì)設(shè)法測(cè)試其占用的內(nèi)存以讓?xiě)?yīng)用程序處于最佳運(yùn)行狀態(tài)。他或她可能因此推測(cè),給定“X”內(nèi)存大小可以達(dá)到最佳工作負(fù)載。這可以立足于以前的研究,供應(yīng)商提供的基準(zhǔn)或其他的來(lái)源。確保你的假設(shè)是可測(cè)試的。也就是說(shuō),不要提出一個(gè)只是基于數(shù)據(jù)的而基準(zhǔn)測(cè)試卻無(wú)法證實(shí)的假設(shè)。
3、預(yù)測(cè):接下來(lái),對(duì)服務(wù)器基準(zhǔn)測(cè)試做一個(gè)大體預(yù)測(cè)。假設(shè)該設(shè)備將被作為一個(gè)專(zhuān)門(mén)的應(yīng)用服務(wù)器。系統(tǒng)管理員能夠預(yù)測(cè),為工作負(fù)載增加額外的核心,設(shè)備性能將提升,同樣,應(yīng)用程序的性能也將會(huì)改善。在某些情況下,工程師甚至可以預(yù)測(cè)改善的比例,并希望通過(guò)基準(zhǔn)測(cè)試進(jìn)行驗(yàn)證。
4、環(huán)境控制:變量設(shè)置。例如,可能要給服務(wù)器分配一些核心。此時(shí),管理員每次應(yīng)只更改一個(gè)設(shè)置,直到他或她能夠接受在此基礎(chǔ)上的性能變化。工程師可能需要給服務(wù)器設(shè)置為6GB的內(nèi)存,并測(cè)試其與其他設(shè)備相互配合的情況(CPU、影像、硬盤(pán)以及相關(guān)聯(lián)的設(shè)備)。設(shè)置不同的變量,包括修改處理器設(shè)置,但其他設(shè)置都處于最初狀態(tài)。
5、測(cè)試:變量都設(shè)置好之后,現(xiàn)在開(kāi)始進(jìn)行測(cè)試。從基準(zhǔn)線(xiàn)開(kāi)始進(jìn)行測(cè)試(已知的起點(diǎn)),并有系統(tǒng)地調(diào)整服務(wù)器設(shè)置。每個(gè)測(cè)試序列都會(huì)有一個(gè)結(jié)果,記錄結(jié)果以便以后引用。在這種情況下,一個(gè)測(cè)試序列可看做是一次硬件設(shè)置更改。每應(yīng)用一次新的設(shè)置,都必須重新進(jìn)行測(cè)試并記錄結(jié)果。一旦有足夠的運(yùn)行周期,工程師應(yīng)該有一份完整的數(shù)據(jù)以完成他們的推論。
6、推論和結(jié)論:進(jìn)行測(cè)試并確認(rèn)應(yīng)用程序的實(shí)際性能以及給定預(yù)計(jì)資源或設(shè)置后的性能。例如,在只有一半數(shù)量的預(yù)期核心后,確定應(yīng)用程序的最佳運(yùn)行效果。從這點(diǎn)起,確定核心與其他當(dāng)前變量(所需的內(nèi)存大小、當(dāng)前運(yùn)行的應(yīng)用程序數(shù)量、軟件升級(jí)/服務(wù)包等)結(jié)合給服務(wù)器提供的最佳性能。注意,任何變量的改變都需要進(jìn)一步實(shí)驗(yàn)。
服務(wù)器性能基準(zhǔn)測(cè)試的概念十分簡(jiǎn)單,但如何進(jìn)行基準(zhǔn)測(cè)試并獲得有價(jià)值的數(shù)據(jù),就是另外一回事了。微軟的Performance Monitor(PerfMon),是款十分靈活的基準(zhǔn)測(cè)試工具,但其內(nèi)置的供各種豐富計(jì)數(shù)器和設(shè)置參數(shù)可能讓測(cè)試變得更加復(fù)雜,甚至使測(cè)試結(jié)果難以解釋。通過(guò)本文,我們將介紹PerfMon在基準(zhǔn)測(cè)試中最常用的計(jì)數(shù)器,并深入了解它們是如何影響實(shí)際測(cè)試的。
內(nèi)存分配與一般內(nèi)存設(shè)置
如果給某個(gè)應(yīng)用程序分配過(guò)多內(nèi)存,可能影響到服務(wù)器上其它進(jìn)程的性能。實(shí)際上,內(nèi)存利用不當(dāng)將給整體系統(tǒng)性能帶來(lái)消極影響。
在利用PerfMon進(jìn)行服務(wù)器基準(zhǔn)測(cè)試時(shí),可利用以下計(jì)數(shù)器來(lái)驗(yàn)證內(nèi)存分配是否影響到服務(wù)器整體性能:
Memory::Available Bytes——該計(jì)數(shù)器顯示操作系統(tǒng)可使用物理內(nèi)存與服務(wù)器進(jìn)程及應(yīng)用程序運(yùn)行所需內(nèi)存總和比較的結(jié)果。
Memory:Committed Bytes——該計(jì)數(shù)器顯示的結(jié)果會(huì)隨時(shí)間推移而變化,需要追蹤記錄以了解某段時(shí)間內(nèi)的負(fù)載峰值活動(dòng)。可以通過(guò)追蹤C(jī)ommitted Bytes中峰值與谷值所出現(xiàn)的時(shí)間了解服務(wù)器是如何運(yùn)行的。需確保可用內(nèi)存(available memory)比提交的內(nèi)存(committed memory)至少多4MB或5%以上。
Memory:Page Faults/sec——該計(jì)數(shù)器記錄某應(yīng)用程序嘗試從被標(biāo)識(shí)為“不存在(not present)”的虛擬內(nèi)存位置讀取數(shù)據(jù)時(shí)產(chǎn)生的頁(yè)面錯(cuò)誤。大多數(shù)情況下,0是最理想的測(cè)量結(jié)果。任何高于0的測(cè)量值都意味著響應(yīng)時(shí)間的延遲。記住,Memory:Page Faults/sec測(cè)量值為硬頁(yè)面錯(cuò)誤和軟頁(yè)面錯(cuò)誤總和。硬頁(yè)面錯(cuò)誤發(fā)生在當(dāng)某個(gè)文件需要從硬盤(pán)而不是虛擬內(nèi)存中獲取時(shí)。與此相反,軟頁(yè)面錯(cuò)誤發(fā)生在某已解決的頁(yè)面錯(cuò)誤,數(shù)據(jù)在物理內(nèi)存的其他位置被找到,雖然有中斷處理器,但對(duì)性能的影響微乎其微。
基準(zhǔn)測(cè)試線(xiàn)程與進(jìn)程監(jiān)控
注意留心處理器的幾個(gè)重要計(jì)數(shù)器,尤其在當(dāng)你嘗試最大化每個(gè)CPU的線(xiàn)程數(shù)時(shí)。留心“上下文交換(context switches)”發(fā)生的次數(shù)。
“上下文交換”發(fā)生在內(nèi)核或操作系統(tǒng)核心把進(jìn)程從一個(gè)切換至另一個(gè)時(shí)。需要避免上下文交換狀況發(fā)生,每次上下文交換都會(huì)使處理器清空L1和L2緩存并重新填裝。緩存刷新與重填將浪費(fèi)寶貴的時(shí)間并降低系統(tǒng)性能。
Process:Thread Count:Inetinfo——記錄由Inetinfo進(jìn)程所創(chuàng)建的線(xiàn)程數(shù)并顯示最新數(shù)值。
Thread:% Processor Time:Inetinfo =>Thread #——測(cè)量Inetinfo進(jìn)程所屬線(xiàn)程消耗的處理器時(shí)間總量。
Thread:Context Switches:sec:Inetinfo =>Thread#——測(cè)量每處理器或線(xiàn)程池的最大線(xiàn)程數(shù)。監(jiān)控這個(gè)計(jì)數(shù)器十分重要,可以防止因過(guò)多上下文交換而的造成內(nèi)存損失,如果內(nèi)存損失過(guò)高,增加線(xiàn)程的優(yōu)勢(shì)也將不復(fù)存在,這里存在一個(gè)平衡點(diǎn),一旦打破平衡,系統(tǒng)性能將不會(huì)提升,反而會(huì)降低。
基準(zhǔn)測(cè)試的測(cè)量與分析
不幸的是,進(jìn)程與服務(wù)器指標(biāo)有著異常廣泛的內(nèi)容——我們無(wú)法在此文中一一例舉。盡管如此,就大部分情況下,系統(tǒng)性能和指標(biāo)測(cè)試可被劃分為以下幾類(lèi):
- 內(nèi)存管理
- 網(wǎng)絡(luò)容量
- 處理器性能
- 磁盤(pán)優(yōu)化
測(cè)試工程師應(yīng)該可以通過(guò)以上這些分組,獲得可靠的基準(zhǔn)測(cè)試結(jié)果,并利用這些數(shù)值對(duì)整個(gè)服務(wù)器環(huán)境加以改善優(yōu)化。
了解基準(zhǔn)測(cè)試所面臨的挑戰(zhàn)
在服務(wù)器環(huán)境中完成的任何測(cè)試,相關(guān)基準(zhǔn)測(cè)試與指標(biāo)評(píng)價(jià)報(bào)告通常都會(huì)附帶一些注意事項(xiàng)。
1、警惕供應(yīng)商所提供的基準(zhǔn)測(cè)試結(jié)果。供應(yīng)商們傾向于將產(chǎn)品按一般照行業(yè)標(biāo)準(zhǔn)進(jìn)行基準(zhǔn)測(cè)試。這意味著官方提供的基準(zhǔn)測(cè)試文檔或白皮書(shū)可能不適用你所處的環(huán)境。例如,我們假設(shè)某IT經(jīng)理計(jì)劃采購(gòu)一款軟件,以實(shí)現(xiàn)將用戶(hù)數(shù)據(jù)信息庫(kù)存儲(chǔ)在服務(wù)器上。有參數(shù)顯示該軟件在Windows Server 2008上運(yùn)行的穩(wěn)定,而且響應(yīng)也很迅速。雖然這聽(tīng)起來(lái)不錯(cuò),但未必適合當(dāng)前的環(huán)境。舉個(gè)例子,如果該指標(biāo)是供應(yīng)商在一臺(tái)獨(dú)立并增強(qiáng)配置的服務(wù)器上進(jìn)行測(cè)試的結(jié)果,而你的環(huán)境卻是共享宿主資源的虛擬機(jī),會(huì)發(fā)生什么情況呢?記住,供應(yīng)商的目的是把軟件賣(mài)給你,所以他們會(huì)利用一些“作弊”手段,讓基準(zhǔn)測(cè)試的分?jǐn)?shù)看起來(lái)很美好。這樣做可以提高書(shū)面上的數(shù)據(jù),但可能會(huì)讓事情在真實(shí)環(huán)境中變得更糟。雖然大型硬件和軟件供應(yīng)商不屑于此,但某些規(guī)模較小的銷(xiāo)售公司確實(shí)會(huì)在這些數(shù)據(jù)上做些手腳。舉例來(lái)說(shuō),某臺(tái)硬件號(hào)稱(chēng)能夠滿(mǎn)足通過(guò)WAN實(shí)現(xiàn)VPN連接,并能獲得較理想的速度,因?yàn)橄到y(tǒng)已經(jīng)經(jīng)過(guò)基準(zhǔn)測(cè)試并進(jìn)行了優(yōu)化。但在實(shí)際部署上線(xiàn)后,該設(shè)備在速度性能上卻明顯下降了20%-30%。所以,對(duì)那些依賴(lài)性高,承載關(guān)鍵任務(wù)的設(shè)備或軟件,需要進(jìn)行嚴(yán)謹(jǐn)和盡職的調(diào)查。
2、永遠(yuǎn)不要只關(guān)注一項(xiàng)測(cè)試指數(shù)。在進(jìn)行服務(wù)器基準(zhǔn)測(cè)試時(shí),因盡可能的涉及多種組件。不要只關(guān)注其中一項(xiàng)因素,如CPU速度。關(guān)注服務(wù)器中各項(xiàng)組件的行為,可以讓工程師更為全面的了解整體系統(tǒng)在不同環(huán)境下是如何運(yùn)行,這樣可以便于在未來(lái)快速定位與修正性能問(wèn)題。
3、留心基準(zhǔn)測(cè)試服務(wù)提供商。如果你正計(jì)劃將基準(zhǔn)和指標(biāo)測(cè)試進(jìn)行外包,確保你已經(jīng)做了足夠詳盡的調(diào)查。很多時(shí)候,即使是最著名的咨詢(xún)公司也會(huì)無(wú)視或不遵循基本的科學(xué)方法。這包括但不限于,小型服務(wù)器與應(yīng)用程序樣本大小,缺乏變量控制,結(jié)果的重復(fù)性有限以及軟件硬件上的數(shù)值偏差。查找極端數(shù)值,如SQL Server測(cè)試后發(fā)現(xiàn)數(shù)值比預(yù)期的還高,這很可能與測(cè)試采用的硬件有關(guān)。模糊的硬件需求定義也是個(gè)陷阱。如果產(chǎn)商列出硬件卻沒(méi)有提供任何詳細(xì)清單——如雙核CPU,4GB內(nèi)存,512MB顯卡——你需要對(duì)此額外留心。在弄清基準(zhǔn)測(cè)試的微小細(xì)節(jié)時(shí),每個(gè)變量都很重要。在這種情況下,該用那種類(lèi)型的處理器?需要使用哪種型號(hào)的內(nèi)存以及何種型號(hào)的顯卡?所有這些細(xì)節(jié)都大有不同。
關(guān)鍵在于意識(shí)到每個(gè)環(huán)境都是獨(dú)一無(wú)二的,都有屬于自己的特定需求集。利用如PerfMon一類(lèi)的工具進(jìn)行指標(biāo)測(cè)試,是個(gè)持續(xù)的過(guò)程,其中涉及大量參數(shù),這些參數(shù)都可以在很大程度上影響測(cè)試數(shù)據(jù)的結(jié)果。通過(guò)規(guī)劃測(cè)試方案并遵循嚴(yán)謹(jǐn)?shù)目茖W(xué)方法,測(cè)試管理員可以更加準(zhǔn)確地評(píng)估硬件與軟件的運(yùn)行狀況。如果進(jìn)展順利,一個(gè)好的基準(zhǔn)測(cè)試分析所提供的信息對(duì)改進(jìn)服務(wù)器架構(gòu)與性能可以起到很大的幫助。
關(guān)于作者:Bill Kleyman,MBA,MISM,一名狂熱的技術(shù)專(zhuān)家,在網(wǎng)絡(luò)基礎(chǔ)設(shè)施管理領(lǐng)域具有豐富的經(jīng)驗(yàn)。其工程經(jīng)驗(yàn)包括大型虛擬化環(huán)境部署以及商業(yè)網(wǎng)絡(luò)設(shè)計(jì)與實(shí)施。目前他是World Wide Fittings公司的技術(shù)總監(jiān),該公司在中國(guó),歐洲與美國(guó)均設(shè)有分支機(jī)構(gòu)。
原文:
- http://www.searchdatacenter.com.cn/showcontent_51106.htm
- http://www.searchdatacenter.com.cn/showcontent_51103.htm
【編輯推薦】