Benchmark學習筆記

小記一篇Benchmark的學習筆記

1.什么是benchmark

在維基百科中,是這樣子講的

“As computer architecture advanced, it became more difficult to compare the performance of various computer systems simply by looking at their specifications.Therefore, tests were developed that allowed comparison of different architectures.”

大致意思就是,隨著計算機體系結構的進步,我們無法再簡簡單單的從他們的特性去比較計算機系統的性能,所以就誕生了我們今天的主角? `Benchmark` !!

  • Benchmark :?"基準測試"?是一種用于衡量和評估系統性能的方法。在計算機領域,它通常指的是通過運行一系列標準化的測試來評估硬件或軟件的性能。基準測試可以幫助人們比較不同系統、不同組件或不同配置之間的性能差異!!!

其實,用自己的話來說就是:

  • 通過相應的工具,手段,對硬件組件 ,軟件應用程序如CPU性能、內存帶寬、硬盤讀寫速度等單個組件或整個系統進行測試,并且將多次測量得到的結果用于性能的評估和比較,優化和調整,成為日后產品上市的決策支持等!!

下面,我們就來詳細的講解一下Benchmark的過程!!

2.確認測試的目標

對于每一次測試,我們都要選擇對應的目標,這樣才便于我們后續的數據分析和對比

如果目標是一個數據庫,那么就可以從以下角度出發

  1. 查詢性能:就拿mysql為例子,像這種查詢遇到數據量大的,可以通過記錄查詢的執行時間或者查詢的吞吐量來評估
  2. 并發連接數?:在現實生活中,我們可能會遇到大量用戶同時對數據庫進行查詢,么我們通過增加并發的數據庫連接數,并觀察數據庫的響應時間和系統資源利用率來評估
  3. 數據插入和更新性能:在sql注入中,有一些服務器會對User_Agent Cookie Refer頭進行存儲,那么就會用到mysql里面的 update 或者insert,那么,我們就可以觀察插入和更新大量數據時的性能表現,包括單條數據的插入/更新性能和批量數據的插入/更新性能

如果他是一個網絡服務系統,那么我們就可以從以下角度出發

  1. 響應時間 :用戶在對服務其發送請求,然后經過服務器的處理,再返回給用戶,這期間需要的時間就是響應時間我們通過記錄這些時間,可以評估整個請求-響應周期的性能表現。
  2. 吞吐量:吞吐量可以表示為每秒處理的請求數量或每秒傳輸的數據量,它反映了系統的處理能力和性能瓶頸。
  3. 并發連接數:我們可以通過一些測試軟件,如jmeter等工具,在一瞬間建立多并發連接數量,用來模擬在某一時刻的大量用戶涌入的情景,然后通過觀察系統的響應時間和資源利用率,可以評估系統的并發性能和資源消耗情況
  4. 穩定性和可靠性 ,在上面建立多并發的基礎上我們還可以通過觀察系統的穩定性和異常處理能力,可以評估系統在各種條件下的表現

3.選擇合理的測試工具

還是拿上面的兩個測試目標來舉例子

網絡服務系統

  1. Apache JMeter:Apache JMeter是一款功能強大的開源性能測試工具,主要用于測試各種類型的網絡服務系統,包括Web應用程序、Web服務、數據庫服務器等它支持多線程測試、分布式測試、圖形化測試結果展示等功能,非常適合進行負載測試和壓力測試
  2. ? 這個工具經常用來壓力測試
  3. Gatling:Gatling是一款基于Scala語言開發的現代化性能測試工具,特別適用于高并發場景下的性能測試。它采用基于DSL(領域特定語言)的方式進行測試腳本編寫,支持使用Scala語言進行自定義腳本開發,具有良好的可擴展性和靈活性。
  4. Wrk:Wrk是一款簡單而強大的HTTP性能測試工具,適用于對HTTP服務進行高并發的壓力測試。它采用多線程和非阻塞I/O的方式進行測試,并能夠生成詳細的測試報告和統計信息。

相信大家都發現了,只要是網絡服務系統,壓測它的工具一般都多并發,多線程的壓力測試工具

?????????????????????????

數據庫

  1. SysBench:SysBench 是一個跨平臺的基準測試工具,支持多種數據庫系統,包MySQL、PostgreSQL、MariaDB 等。它可以用于測試數據庫的性能、并發連接數、事務處理能力
  2. HammerDB:HammerDB 是一個開源的基準測試工具,主要用于測試關系型數據庫系統,如 Oracle、SQL Server、DB2 等。它提供了豐富的基準測試場景和工具,可以模擬真實的數據庫工作負載并評估數據庫的性能表現
  3. Percona Toolkit:Percona Toolkit 是一個由 Percona 公司提供的一套 MySQL 和 MongoDB 管理工具,其中包括一些基準測試工具,如 pt-query-digest、pt-upgrade 等,可以用于評估和優化數據庫的性能。

4.準備測試環境

這個也是非常重要的一步,我們需要保測試環境的穩定性和一致性,包括硬件配置、操作系統版本、驅動程序版本等。關閉不必要的后臺任務和服務,以確保測試結果的準確性。

5.執行基準測試

當變量都設置好之后,現在開始進行測試。從基準線開始進行測試(已知的起點),并有系統地調整服務器設置。每個測試序列都會有一個結果,記錄結果以便以后引用。在這種情況下,一個測試序列可看做是一次硬件設置更改。每應用一次新的設置,都必須重新進行測試并記錄結果。一旦有足夠的運行周期,工程師應該有一份完整的數據以完成他們的推論。

6.收集測試執行結果

其中包括各種性能指標的數據,如響應時間、吞吐量、并發連接數等。使用工具提供的報告功能或自定義腳本來自動化數據收集過程。

7.分析和比較結果

在這個步驟中,我們需要進行以下步驟

  1. 總體性能評估:首先,對系統的總體性能進行評估。這包括查看各項性能指標的平均值、中位數、標準差等統計數據,以了解系統的整體表現。

  2. 識別性能瓶頸:通過分析測試結果,識別系統性能的瓶頸所在。這可能包括響應時間較長的操作、吞吐量不足的任務、并發連接數過高導致的系統資源耗盡等。通過識別性能瓶頸,可以確定優化的重點和方向。

  3. 比較不同場景下的性能數據:如果進行了多個測試場景的基準測試,需要比較不同場景下的性能數據。這可以幫助確定系統在不同條件下的性能表現,并找出最佳的配置和參數組合。

  4. 對比不同系統或組件的性能:如果進行了多個系統或組件的基準測試,需要對比它們的性能數據。這可以幫助選擇最適合自己需求的系統或組件,并確定哪些系統或組件需要進一步優化。

  5. 查找異常數據和趨勢:檢查測試結果中的異常數據和趨勢。這可能包括某些測試任務的性能突然下降或波動、系統資源利用率異常高或異常低等。通過查找異常數據和趨勢,可以發現系統中的問題并及時解決。

這個步驟就像計算機取證的分析的重要性一樣

通過分析和比較基準測試結果意味著對測試數據進行詳細的研究和比較,以便從中獲取有用的見解和信息。這個過程的目的是為了理解系統的性能表現,識別潛在的問題或瓶頸,并確定優化的方向。

8.提出優化建議

Benchmark的一個最終的目的,就是提出優化建議

在測試中通常會選擇一個或多個基準模型作為比較的標準。這些基準模型可以是已知的、在該任務上表現良好的模型,用來與新的方法進行比較?

當然了,除了需要從網上尋求相應的標準來進行對比以外,我們還需要根絕自身的特殊情況(如服務器的運存等條件)進行綜合的測試


分析問題原因:針對性能瓶頸和問題,深入分析其根本原因。這可能涉及到系統的架構設計、代碼實現、數據庫優化、網絡配置等方面的問題。通過分析問題原因,可以確定優化的方向和重點。


9.驗證和重復測試?

?你以為做完上面的就完事了嗎?? 肯定不是!!!

當我們得到了上面的測試和分析結果之后,我們還要去對這些結果進行進一步測試,因為我們不確定時候改進后的參數是否還會符合要求 理由如下:

  1. 確認優化效果:優化措施的實施并不總是能立即帶來明顯的改善。通過驗證和重復測試,可以確認優化措施的實際效果是否與預期一致這有助于確定哪些優化是有效的,哪些需要進一步改進。

  2. 評估系統穩定性優化措施可能會對系統的穩定性產生影響。通過驗證和重復測試,可以評估優化措施對系統穩定性的影響,并及時發現和解決潛在的問題,以確保系統的穩定運行。

  3. 排除誤差和變化:基準測試結果可能受到各種因素的影響,如測試環境的變化、測試工具的誤差等。通過重復測試,可以排除這些誤差和變化的影響,確保測試結果的可靠性和一致性。

  4. 驗證優化建議的可行性:重復測試可以驗證提出的優化建議的可行性和有效性。如果優化建議在多次測試中都能得到相似的結果,那么說明該建議是可行的,并且對系統性能有實際的改進作用。

  5. 持續改進和優化:系統的性能優化是一個持續改進的過程。通過驗證和重復測試,可以不斷地評估系統的性能,并根據測試結果進行調整和優化,以滿足不斷變化的需求和挑戰。

10.做出最終的建議

通過與第一次的結果進行對比,選出最優的結果,并且根據以下參考,做出建議

數據庫優化

  • 索引優化:評估數據庫的索引使用情況,根據查詢模式和頻率優化索引設計。
  • 查詢優化:審查并優化復雜、低效的查詢語句,確保查詢執行效率高。
  • 表結構優化:評估數據庫表結構,合理設計和規劃表之間的關系,以及字段的數據類型和長度。
  • 緩存策略優化:考慮使用緩存技術來減輕數據庫壓力,提高數據訪問速度。

網絡服務優化

  • 響應時間優化:優化網絡服務的響應時間,包括優化代碼、減少網絡延遲、使用高效的數據傳輸協議等。
  • 并發處理優化:評估系統的并發處理能力,優化并發處理策略和線程池配置,提高系統的并發處理能力。
  • 負載均衡優化:考慮使用負載均衡技術來平衡服務器負載,確保系統的穩定性和可靠性。

應用程序優化

  • 代碼優化:審查并優化應用程序的代碼,提高代碼的執行效率和性能。
  • 內存管理優化:優化內存使用,包括減少內存泄漏、優化內存分配和釋放策略等。
  • 異步處理優化:考慮使用異步處理技術來提高系統的并發處理能力和響應速度。

等等.........

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/716567.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/716567.shtml
英文地址,請注明出處:http://en.pswp.cn/news/716567.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python標識符、變量和常量

一、保留字與標識符 1.1保留字 保留字是指python中被賦予特定意義的單詞,在開發程序時,不可以把這些保留字作為變量、函數、類、模塊和其它對象的名稱來使用。 比如:and、as、def、if、import、class、finally、with等 查詢這些關鍵字的方…

【LeetCode】升級打怪之路 Day 11 加餐:單調隊列

今日題目: 239. 滑動窗口最大值 | LeetCode 今天學習了單調隊列這種特殊的數據結構,思路很新穎,值得學習。 Problem:單調隊列 【必會】 與單調棧類似,單調隊列也是一種特殊的數據結構,它相比與普通的 que…

【NR 定位】3GPP NR Positioning 5G定位標準解讀(一)

目錄 前言 1. 3GPP規劃下的5G技術演進 2. 5G NR定位技術的發展 2.1 Rel-16首次對基于5G的定位技術進行標準化 2.2 Rel-17進一步提升5G定位技術的性能 3. Rel-18 關于5G定位技術的新方向、新進展 3.1 Sidelink高精度定位功能 3.2 針對上述不同用例,3GPP考慮按…

自動駕駛---Motion Planning之Speed Boundary(上)

1 背景 在上篇博客《自動駕駛---Motion Planning之Path Boundary》中,筆者主要介紹了path boundary的一些內容,通過將道路中感興趣區域的動靜態障礙物投影到車道坐標系中,用于確定L或者S的邊界,并利用道路信息再確定Speed的邊界,最后結合粗糙的速度曲線和路徑曲線,即可使…

Go-知識簡短變量聲明

Go-知識簡短變量聲明 1. 簡短變量聲明符2. 簡短變量賦值可能會重新聲明3. 簡短變量賦值不能用于函數外部4. 簡短變量賦值作用域問題5. 總結 githuio地址:https://a18792721831.github.io/ 1. 簡短變量聲明符 在Go語言中,可以使用關鍵字var或直接使用簡短…

【STK】手把手教你利用STK進行仿真-STK軟件基礎02 STK系統的軟件界面01 STK的界面窗口組成

STK系統是Windows窗口類型的桌面應用軟件,功能非常強大。在一個桌面應用軟件中集成了仿真對象管理、仿真對象屬性參數、設置、空間場景二三維可視化、場景顯示控制欲操作、仿真結果報表定制與分析、對象數據管理、仿真過程控制、外部接口連接和系統集成編程等復雜的功能。 STK…

SpringBoot之Actuator的兩種監控模式

SpringBoot之Actuator的兩種監控模式 springboot提供了很多的檢測端點(Endpoint),但是默認值開啟了shutdown的Endpoint&#xff0c;其他默認都是關閉的,可根據需要自行開啟 文章目錄 SpringBoot之Actuator的兩種監控模式1. pom.xml2. 監控模式1. HTTP2. JMX 1. pom.xml <de…

力扣 第 125 場雙周賽 解題報告 | 珂學家 | 樹形DP + 組合數學

前言 整體評價 T4感覺有簡單的方法&#xff0c;無奈樹形DP一條路上走到黑了&#xff0c;這場還是有難度的。 T1. 超過閾值的最少操作數 I 思路: 模擬 class Solution {public int minOperations(int[] nums, int k) {return (int)Arrays.stream(nums).filter(x -> x <…

VM虛擬機無法傳輸文件(更新時間24/3/3)

出現這個問題一般是未安裝VMware Tools 以下為手動安裝教程及可能出現的問題的解決方法&#xff1a; 1. 準備安裝 2.用cmd手動啟動安裝 3. 安裝過程默認即可&#xff0c;直接一直下一步 4.安裝完成后會自動重啟虛擬機&#xff08;沒有的話手動重啟即可&#xff09; 5.重啟以后…

Web應用安全威脅與防護措施

本文已收錄至《全國計算機等級考試——信息 安全技術》專欄 由于極其容易出現漏洞、并引發安全事故&#xff0c;因此數據隱私的保護是目前絕大多數企業不可繞過的運維環節。不過&#xff0c;許多中小型企業往往會錯誤地認為只有大型企業才會成為黑客的目標。而實際統計數字卻截…

StarCoder2模型,釋放你的大模型編碼潛能

每周跟蹤AI熱點新聞動向和震撼發展 想要探索生成式人工智能的前沿進展嗎&#xff1f;訂閱我們的簡報&#xff0c;深入解析最新的技術突破、實際應用案例和未來的趨勢。與全球數同行一同&#xff0c;從行業內部的深度分析和實用指南中受益。不要錯過這個機會&#xff0c;成為AI領…

DeepSpeed-Chat RLHF 階段代碼解讀(0) —— 原始 PPO 代碼解讀

為了理解 DeepSpeed-Chat RLHF 的 RLHF 全部過程&#xff0c;這個系列會分三篇文章分別介紹&#xff1a; 原始 PPO 代碼解讀RLHF 獎勵函數代碼解讀RLHF PPO 代碼解讀 這是系列的第一篇文章&#xff0c;我們來一步一步的看 PPO 算法的代碼實現&#xff0c;對于 PPO 算法原理不太…

部署若依前后端分離項目,連接數據庫失敗

部署若依前后端分離項目&#xff0c;連接數據庫失敗&#xff0c;異常如下&#xff1a; 解決方案&#xff1a;application配置文件里&#xff0c;連接數據庫的參數useSSL的值改為false

leetcode 長度最小的子數組

在本題中&#xff0c;我們可以知道&#xff0c;是要求數組中組成和為target的最小子數組的長度。所以&#xff0c;我們肯定可以想到用兩層for循環進行遍歷&#xff0c;然后枚舉所有的結果進行挑選&#xff0c;但這樣時間復雜度過高。 我們可以采用滑動窗口&#xff0c;其實就是…

編寫dockerfile掛載卷、數據容器卷

編寫dockerfile掛載卷 編寫dockerfile文件 [rootwq docker-test-volume]# vim dockerfile1 [rootwq docker-test-volume]# cat dockerfile1 FROM centosVOLUME ["volume01","volume02"]CMD echo "------end------" CMD /bin/bash [rootwq dock…

2024 年廣東省職業院校技能大賽(高職組)“云計算應用”賽項樣題 2

#需要資源或有問題的&#xff0c;可私博主&#xff01;&#xff01;&#xff01; #需要資源或有問題的&#xff0c;可私博主&#xff01;&#xff01;&#xff01; #需要資源或有問題的&#xff0c;可私博主&#xff01;&#xff01;&#xff01; 某企業根據自身業務需求&#…

每日OJ題_牛客_合法括號序列判斷

目錄 合法括號序列判斷 解析代碼 合法括號序列判斷 合法括號序列判斷__牛客網 解析代碼 class Parenthesis {public:bool chkParenthesis(string A, int n){if (n & 1) // 如果n是奇數return false;stack<char> st;for (int i 0; i < n; i) {if (A[i] () {s…

筆記本hp6930p安裝Android-x86補記

在上一篇日記中&#xff08;筆記本hp6930p安裝Android-x86避坑日記-CSDN博客&#xff09;提到hp6930p安裝Android-x86-9.0&#xff0c;無法正常啟動&#xff0c;本文對此再做嘗試&#xff0c;原因是&#xff1a;Android-x86-9.0不支持無線網卡&#xff0c;需要在BIOS中關閉WLAN…

《Docker極簡教程》--Docker的高級特性--Docker Compose的使用

Docker Compose是一個用于定義和運行多容器Docker應用程序的工具。它允許開發人員通過簡單的YAML文件來定義應用程序的服務、網絡和卷等資源&#xff0c;并使用單個命令來啟動、停止和管理整個應用程序的容器。以下是關于Docker Compose的一些關鍵信息和優勢&#xff1a; 定義…

B082-SpringCloud-Eureka

目錄 微服務架構與springcloud架構演變為什么使用微服務微服務的通訊方式架構的選擇springcloud概述場景模擬之基礎架構的搭建模擬微服務之間的服務調用目前遠程調用的問題 eureka注冊中心的作用注冊中心的實現服務提供者注冊到注冊中心 springcloud基于springboot 微服務架構與…