Benchmark 第一篇 了解Benchmark
目錄
一、Benchmark(基準)簡介
二、Benchmark的組成
三、工具
1.集成式測試工具
2.單組件測試工具
四、Benchmark特征
五、Benchmark測試需要考慮的因素
六、Benchimark測試步驟
1.觀察
2.假設
3.預測
4.環境控制
5.測試
6.推論和結論
七、Benchmaark測試數據的實際用途/意義
八、Benchmark的重點
九、Benchmark的局限性
一、Benchmark(基準)簡介
基準測試(benchmarking)是一種測量和評估軟件性能指標的活動(是一個評價方式)。在某個時候通過基準測試建立一個已知的性能水平(稱為基準線)。其在整個計算機領域有著長期的應用,計算機領域應用最成功的就是性能測試。
二、Benchmark的組成
Benchmark的核心由3部分組成:數據集、工作負載、度量指標。
三、工具
1.集成式測試工具
1)ab:Apache Http服務器基準測試工具。它可以測試HTTP服務器每秒最多可以處理多少請求。如果測試的是WEB應用服務,這個結果可以轉換成整個應用每秒可以滿足多少請求。只能對單個URL進行盡可能快的壓力測試。ab詳細信息
2)http_load:這個工具概念上和ab類似,也被設計為對web服務器進行測試,但比ab要更加靈活。可以通過一個輸入文件提供多個URL,http_load在這些URL中隨機選擇進行測試。也可以定制http_load,使其按照時間比率進行測試,而不僅僅是測試最大請求處理能力。詳細信息
3)Jmeter:Jmeter是一個java應用程序,可以加載其他應用并測試其性能。可以進行web應用、FTP服務器、或者通過jdbc進行數據庫查詢測試。它可以通過控制預熱時間等參數更加靈活地模擬真實用戶的訪問。同時擁有繪圖接口,可以對測試進行記錄,然后離線重演測試結果。
2.單組件測試工具
1)mysqlslap:可以模擬服務器的負載,并輸出計時信息。
2)mysql benchmark suite:在mysql的發行包中也提供了一款自己的基準測試套件,可以用于在不同數據庫服務器上進行比較測試。它是單線程的,主要用于測試服務器執行查詢的速度。結果會顯示哪種類型的操作在服務器上執行得更快。
3)super smack:是一款用于mysql和postgresql的基準測試工具。可以提供壓力測試和負載生成。可以模擬多用戶訪問,可以加載測試數據到數據庫,并支持使用隨機數據填充測試表。
4)sysbench:是一款多線程系統壓測工具。它可以根據影響數據庫服務器性能的各種因素來評估系統的性能。例如:可以用來測試文件i/o、操作系統調度器、內存分配和傳輸速度、POSIX線程,以及數據庫服務器等。
四、Benchmark特征
1.可重復性:可進行重復性的測試,這樣做有利于比較每次的測試結果,得到性能結果的長期變化趨勢,為系統調優和上線前的容量規劃做參考。
PS:這種特質是為了滿足基準測試的日常輪詢需要。
2.可觀測性:通過全方位的監控(包括測試開始到結束,執行機、服務器、數據庫),及時了解和分析測試過程發生了什么。
3.可展示性:相關人員可以直觀明了的了解測試結果(web界面、儀表盤、折線圖樹狀圖等形式)。
4.真實性:測試的結果反映了客戶體驗到的真實的情況(真實準確的業務場景+與生產一致的配置+合理正確的測試方法)。
5.可執行性:相關人員可以快速的進行測試驗證修改調優(可定位可分析)。
五、Benchmark測試需要考慮的因素
1.交易配比:某些業務場景,一個流程包含多個事務,在模擬并發中,不同的事務各自的占比;
2.突發性的讀寫操作:某些特殊業務場景,會有短時的大流量沖擊或者請求數量驟減,該如何模擬(浪涌測試);
3.系統配置:不同環境的系統配置不同,測試結果如何換算、如何對比?
4.測試時長:測試執行過程中,運行多長時間,不同交易運行的時間分配等;
5.結果展示類型:平均值、峰值、百分比值如何展示,如何對比?
6.成功/失敗占比:每次測試過程中,成功和失敗的事務占比統計;
7.是否可重現:如測試過程中出現報錯或某些異常情況,是否可以重現?
8.是否可對比:是否有其他測試工具或者測試結果進行對比(盡量多次執行測試,進行測試結果對比:標準方差、正太分布了解一下?)?
六、Benchimark測試步驟
1.觀察
我們假設系統管理員購買了一臺服務器,現在看看它的最佳性能。第一步是確定服務器預期任務。其將作為一個虛擬平臺還是運行一個專門的應用程序?確定這些問題之后,就可以開始基準測試了。切記,測量標準和基準測試將根據測試內容和使用的設備而有所變化。例如,如果作為數據庫系統可能會強調處理器測試,而用于網絡服務系統的話可能會突出網絡性能。
2.假設
在這個步驟,工程師設定一個基準目標。假設什么或者測試需要完成什么?簡單地進行一個度量測試將得出一些試驗結果,但是沒有方向或明確的目標的話,這些結果可能是無用的。為測試創建一個基本的目標,并且所有的測試方法都圍繞這個目標。例如,工程師可能會設法測試其占用的內存以讓應用程序處于最佳運行狀態。他或她可能因此推測,給定“X”內存大小可以達到最佳工作負載。這可以立足于以前的研究,供應商提供的基準或其他的來源。確保你的假設是可測試的。也就是說,不要提出一個只是基于數據的而基準測試卻無法證實的假設。
3.預測
接下來,對服務器基準測試做一個大體預測。假設該設備將被作為一個專門的應用服務器。系統管理員能夠預測,為工作負載增加額外的核心,設備性能將提升,同樣,應用程序的性能也將會改善。在某些情況下,工程師甚至可以預測改善的比例,并希望通過基準測試進行驗證。
4.環境控制
變量設置。例如,可能要給服務器分配一些核心。此時,管理員每次應只更改一個設置,直到他或她能夠接受在此基礎上的性能變化。工程師可能需要給服務器設置為6GB的內存,并測試其與其他設備相互配合的情況(CPU、影像、硬盤以及相關聯的設備)。設置不同的變量,包括修改處理器設置,但其他設置都處于最初狀態。
5.測試
變量都設置好之后,現在開始進行測試。從基準線開始進行測試(已知的起點),并有系統地調整服務器設置。每個測試序列都會有一個結果,記錄結果以便以后引用。在這種情況下,一個測試序列可看做是一次硬件設置更改。每應用一次新的設置,都必須重新進行測試并記錄結果。一旦有足夠的運行周期,工程師應該有一份完整的數據以完成他們的推論。
6.推論和結論
進行測試并確認應用程序的實際性能以及給定預計資源或設置后的性能。例如,在只有一半數量的預期核心后,確定應用程序的最佳運行效果。從這點起,確定核心與其他當前變量(所需的內存大小、當前運行的應用程序數量、軟件升級/服務包等)結合給服務器提供的最佳性能。注意,任何變量的改變都需要進一步實驗。
(基準測試應該在相同的環境條件下進行,這樣才能進行結果比較分析。)
七、Benchmaark測試數據的實際用途/意義
1.了解系統性能基準作為參照物(性能問題發生后的測試很難了解系統性能基準)
2.識別系統或環境的配置變更對性能響應帶來的影響
3.為系統優化前后的性能提升/下降提供參考指標
4.觀察系統的整體性能趨勢與拐點發生,及早識別系統性能風險
八、Benchmark的重點
基準測試的工作重點是統計分析:可以從以下幾個維度去進行統計:
1.選擇合適的測試工具,設定合理的測試方法以及需要確認的系統性能指標;
2.選擇不同的測試工具,對測試結果進行對比,選擇穩定且能反應系統真是性能表現的結果;
3.多次執行測試,收集大量的測試數據集和指標;
4.從不同維度解讀分析數據,生成報告。
九、Benchmark的局限性
基準測試不能替代好的設計,不管是混合存儲還是全閃陣列,只要能正確補充存儲,終端用戶都會獲得足夠高的IOPS盡管后端磁盤性能可能不夠而造成緩存不中等。因此,需要充分發揮每個存儲層級的性能以補償缺陷。
特別是遇到混合存儲的時候,需要考慮的一點即是性能上的短板效應。正因為如此,無需快速訪問的數據應該放在相對穩定一些的后端磁盤上。比如說在一些時候,后端如果使用了15000轉速的磁盤,即便前端緩存大小適中也妨礙不大。
如果這樣的話全閃存陣列則更為容易去衡量及評估因為不再需要考慮多級存儲之間的關系。在這種情況下,需要了解SLC及MLC兩種閃存之間的區別。雖然MLC較SLC慢,需要知道的是即便如此,其比傳統硬盤還是會快很多。在許多場景下,MLC也許就足以滿足加速的需求。
總結
以上是生活随笔為你收集整理的Benchmark 第一篇 了解Benchmark的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: BenchmarkSQL配置参数介绍
- 下一篇: Go之Benchmark