Benchmark 第一篇 了解Benchmark
目錄
一、Benchmark(基準(zhǔn))簡(jiǎn)介
二、Benchmark的組成
三、工具
1.集成式測(cè)試工具
2.單組件測(cè)試工具
四、Benchmark特征
五、Benchmark測(cè)試需要考慮的因素
六、Benchimark測(cè)試步驟
1.觀察
2.假設(shè)
3.預(yù)測(cè)
4.環(huán)境控制
5.測(cè)試
6.推論和結(jié)論
七、Benchmaark測(cè)試數(shù)據(jù)的實(shí)際用途/意義
八、Benchmark的重點(diǎn)
九、Benchmark的局限性
一、Benchmark(基準(zhǔn))簡(jiǎn)介
基準(zhǔn)測(cè)試(benchmarking)是一種測(cè)量和評(píng)估軟件性能指標(biāo)的活動(dòng)(是一個(gè)評(píng)價(jià)方式)。在某個(gè)時(shí)候通過(guò)基準(zhǔn)測(cè)試建立一個(gè)已知的性能水平(稱為基準(zhǔn)線)。其在整個(gè)計(jì)算機(jī)領(lǐng)域有著長(zhǎng)期的應(yīng)用,計(jì)算機(jī)領(lǐng)域應(yīng)用最成功的就是性能測(cè)試。
二、Benchmark的組成
Benchmark的核心由3部分組成:數(shù)據(jù)集、工作負(fù)載、度量指標(biāo)。
三、工具
1.集成式測(cè)試工具
1)ab:Apache Http服務(wù)器基準(zhǔn)測(cè)試工具。它可以測(cè)試HTTP服務(wù)器每秒最多可以處理多少請(qǐng)求。如果測(cè)試的是WEB應(yīng)用服務(wù),這個(gè)結(jié)果可以轉(zhuǎn)換成整個(gè)應(yīng)用每秒可以滿足多少請(qǐng)求。只能對(duì)單個(gè)URL進(jìn)行盡可能快的壓力測(cè)試。ab詳細(xì)信息
2)http_load:這個(gè)工具概念上和ab類似,也被設(shè)計(jì)為對(duì)web服務(wù)器進(jìn)行測(cè)試,但比ab要更加靈活??梢酝ㄟ^(guò)一個(gè)輸入文件提供多個(gè)URL,http_load在這些URL中隨機(jī)選擇進(jìn)行測(cè)試。也可以定制http_load,使其按照時(shí)間比率進(jìn)行測(cè)試,而不僅僅是測(cè)試最大請(qǐng)求處理能力。詳細(xì)信息
3)Jmeter:Jmeter是一個(gè)java應(yīng)用程序,可以加載其他應(yīng)用并測(cè)試其性能??梢赃M(jìn)行web應(yīng)用、FTP服務(wù)器、或者通過(guò)jdbc進(jìn)行數(shù)據(jù)庫(kù)查詢測(cè)試。它可以通過(guò)控制預(yù)熱時(shí)間等參數(shù)更加靈活地模擬真實(shí)用戶的訪問(wèn)。同時(shí)擁有繪圖接口,可以對(duì)測(cè)試進(jìn)行記錄,然后離線重演測(cè)試結(jié)果。
2.單組件測(cè)試工具
1)mysqlslap:可以模擬服務(wù)器的負(fù)載,并輸出計(jì)時(shí)信息。
2)mysql benchmark suite:在mysql的發(fā)行包中也提供了一款自己的基準(zhǔn)測(cè)試套件,可以用于在不同數(shù)據(jù)庫(kù)服務(wù)器上進(jìn)行比較測(cè)試。它是單線程的,主要用于測(cè)試服務(wù)器執(zhí)行查詢的速度。結(jié)果會(huì)顯示哪種類型的操作在服務(wù)器上執(zhí)行得更快。
3)super smack:是一款用于mysql和postgresql的基準(zhǔn)測(cè)試工具??梢蕴峁毫y(cè)試和負(fù)載生成。可以模擬多用戶訪問(wèn),可以加載測(cè)試數(shù)據(jù)到數(shù)據(jù)庫(kù),并支持使用隨機(jī)數(shù)據(jù)填充測(cè)試表。
4)sysbench:是一款多線程系統(tǒng)壓測(cè)工具。它可以根據(jù)影響數(shù)據(jù)庫(kù)服務(wù)器性能的各種因素來(lái)評(píng)估系統(tǒng)的性能。例如:可以用來(lái)測(cè)試文件i/o、操作系統(tǒng)調(diào)度器、內(nèi)存分配和傳輸速度、POSIX線程,以及數(shù)據(jù)庫(kù)服務(wù)器等。
四、Benchmark特征
1.可重復(fù)性:可進(jìn)行重復(fù)性的測(cè)試,這樣做有利于比較每次的測(cè)試結(jié)果,得到性能結(jié)果的長(zhǎng)期變化趨勢(shì),為系統(tǒng)調(diào)優(yōu)和上線前的容量規(guī)劃做參考。
PS:這種特質(zhì)是為了滿足基準(zhǔn)測(cè)試的日常輪詢需要。
2.可觀測(cè)性:通過(guò)全方位的監(jiān)控(包括測(cè)試開(kāi)始到結(jié)束,執(zhí)行機(jī)、服務(wù)器、數(shù)據(jù)庫(kù)),及時(shí)了解和分析測(cè)試過(guò)程發(fā)生了什么。
3.可展示性:相關(guān)人員可以直觀明了的了解測(cè)試結(jié)果(web界面、儀表盤(pán)、折線圖樹(shù)狀圖等形式)。
4.真實(shí)性:測(cè)試的結(jié)果反映了客戶體驗(yàn)到的真實(shí)的情況(真實(shí)準(zhǔn)確的業(yè)務(wù)場(chǎng)景+與生產(chǎn)一致的配置+合理正確的測(cè)試方法)。
5.可執(zhí)行性:相關(guān)人員可以快速的進(jìn)行測(cè)試驗(yàn)證修改調(diào)優(yōu)(可定位可分析)。
五、Benchmark測(cè)試需要考慮的因素
1.交易配比:某些業(yè)務(wù)場(chǎng)景,一個(gè)流程包含多個(gè)事務(wù),在模擬并發(fā)中,不同的事務(wù)各自的占比;
2.突發(fā)性的讀寫(xiě)操作:某些特殊業(yè)務(wù)場(chǎng)景,會(huì)有短時(shí)的大流量沖擊或者請(qǐng)求數(shù)量驟減,該如何模擬(浪涌測(cè)試);
3.系統(tǒng)配置:不同環(huán)境的系統(tǒng)配置不同,測(cè)試結(jié)果如何換算、如何對(duì)比?
4.測(cè)試時(shí)長(zhǎng):測(cè)試執(zhí)行過(guò)程中,運(yùn)行多長(zhǎng)時(shí)間,不同交易運(yùn)行的時(shí)間分配等;
5.結(jié)果展示類型:平均值、峰值、百分比值如何展示,如何對(duì)比?
6.成功/失敗占比:每次測(cè)試過(guò)程中,成功和失敗的事務(wù)占比統(tǒng)計(jì);
7.是否可重現(xiàn):如測(cè)試過(guò)程中出現(xiàn)報(bào)錯(cuò)或某些異常情況,是否可以重現(xiàn)?
8.是否可對(duì)比:是否有其他測(cè)試工具或者測(cè)試結(jié)果進(jìn)行對(duì)比(盡量多次執(zhí)行測(cè)試,進(jìn)行測(cè)試結(jié)果對(duì)比:標(biāo)準(zhǔn)方差、正太分布了解一下?)?
六、Benchimark測(cè)試步驟
1.觀察
我們假設(shè)系統(tǒng)管理員購(gòu)買(mǎi)了一臺(tái)服務(wù)器,現(xiàn)在看看它的最佳性能。第一步是確定服務(wù)器預(yù)期任務(wù)。其將作為一個(gè)虛擬平臺(tái)還是運(yùn)行一個(gè)專門(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ì)突出網(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)的話,這些結(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è)專門(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)線開(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)。
(基準(zhǔn)測(cè)試應(yīng)該在相同的環(huán)境條件下進(jìn)行,這樣才能進(jìn)行結(jié)果比較分析。)
七、Benchmaark測(cè)試數(shù)據(jù)的實(shí)際用途/意義
1.了解系統(tǒng)性能基準(zhǔn)作為參照物(性能問(wèn)題發(fā)生后的測(cè)試很難了解系統(tǒng)性能基準(zhǔn))
2.識(shí)別系統(tǒng)或環(huán)境的配置變更對(duì)性能響應(yīng)帶來(lái)的影響
3.為系統(tǒng)優(yōu)化前后的性能提升/下降提供參考指標(biāo)
4.觀察系統(tǒng)的整體性能趨勢(shì)與拐點(diǎn)發(fā)生,及早識(shí)別系統(tǒng)性能風(fēng)險(xiǎn)
八、Benchmark的重點(diǎn)
基準(zhǔn)測(cè)試的工作重點(diǎn)是統(tǒng)計(jì)分析:可以從以下幾個(gè)維度去進(jìn)行統(tǒng)計(jì):
1.選擇合適的測(cè)試工具,設(shè)定合理的測(cè)試方法以及需要確認(rèn)的系統(tǒng)性能指標(biāo);
2.選擇不同的測(cè)試工具,對(duì)測(cè)試結(jié)果進(jìn)行對(duì)比,選擇穩(wěn)定且能反應(yīng)系統(tǒng)真是性能表現(xiàn)的結(jié)果;
3.多次執(zhí)行測(cè)試,收集大量的測(cè)試數(shù)據(jù)集和指標(biāo);
4.從不同維度解讀分析數(shù)據(jù),生成報(bào)告。
九、Benchmark的局限性
基準(zhǔn)測(cè)試不能替代好的設(shè)計(jì),不管是混合存儲(chǔ)還是全閃陣列,只要能正確補(bǔ)充存儲(chǔ),終端用戶都會(huì)獲得足夠高的IOPS盡管后端磁盤(pán)性能可能不夠而造成緩存不中等。因此,需要充分發(fā)揮每個(gè)存儲(chǔ)層級(jí)的性能以補(bǔ)償缺陷。
特別是遇到混合存儲(chǔ)的時(shí)候,需要考慮的一點(diǎn)即是性能上的短板效應(yīng)。正因?yàn)槿绱?#xff0c;無(wú)需快速訪問(wèn)的數(shù)據(jù)應(yīng)該放在相對(duì)穩(wěn)定一些的后端磁盤(pán)上。比如說(shuō)在一些時(shí)候,后端如果使用了15000轉(zhuǎn)速的磁盤(pán),即便前端緩存大小適中也妨礙不大。
如果這樣的話全閃存陣列則更為容易去衡量及評(píng)估因?yàn)椴辉傩枰紤]多級(jí)存儲(chǔ)之間的關(guān)系。在這種情況下,需要了解SLC及MLC兩種閃存之間的區(qū)別。雖然MLC較SLC慢,需要知道的是即便如此,其比傳統(tǒng)硬盤(pán)還是會(huì)快很多。在許多場(chǎng)景下,MLC也許就足以滿足加速的需求。
總結(jié)
以上是生活随笔為你收集整理的Benchmark 第一篇 了解Benchmark的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: BenchmarkSQL配置参数介绍
- 下一篇: Go之Benchmark