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