雖然自己是從事 QA(Quality Assurance) 相關測試工作,但對於這些工具的使用還是有很多問號,下面列出 Linux 下我常用的 壓力(Stress) 與 的效能 (Performance) 測試軟體.
壓力測試 (Stress)
要如何在 Linux 下針對不同的 I/O 與系統做壓力測試,可以參考下面幾種方式.
- SysBench – https://benjr.tw/8715
Linux 下常見的壓力測試工具不多,而且通常很分散,要不然就是協力廠商所開發的工具需收費而且所費不貲,不過現在 Linux 下有一套比較完整的壓力測試工具 sysbench ,具有 File I/O, CPU , Memory , Threads , Mutx , OLTP 等測試. - Stressful Application Test (stressapptest) – https://benjr.tw/96740
Stressful Application Test (stressapptest) 程式可以在 memory 到 processor 與 I/O 之間產生大量的隨機流量,主要用於模擬系統在高負載情況下的壓力測試,他現在屬於 apache 2.0 license. - memtest86+ – https://benjr.tw/491
在 Linux 的開機光碟中專門用來檢視記憶體模組的工具. - Memtester – https://benjr.tw/96460
前面的 Memtest86+ 無法直接在 Linux 環境下直接來使用,Memtester 可以直接在 Linux 環境下執行. - Fio – https://benjr.tw/96736
Fio 提供兩個參數可共硬碟做壓力測試. - Prime95 (MPrime) – https://benjr.tw/99150
Prime95 是用來做 CPU 壓力測試的,由 GIMPS (Great Internet Mersenne Prime Search)所提供,主要是透過運算找出梅森質數,什麼是 質數(Prime number)指的是除了 1 和自身外,無法被其他自然數整除,何謂梅森質數 是指 2n − 1 ,是質數,就被稱為 梅森質數. - Intel State Residency and Manipulation
CPU 在沒有使用時可以被停用或以比較低的效能模式來運行,依據不同的狀態可以區分成為 Processor Operating States (C-states) 與 Processor Performance States (P-states), 關於 CPU State 請參考 https://benjr.tw/99146 .但是這工具需要有 Intel 帳號. - PTU (Power Thermal Utility)
Intel PTU (Power Thermal Utility) 可以用來測試 CPU 與 Memory 但是這工具需要有 Intel 帳號.
效能可以區分為兩個種類,一種是單體的效能(如 CPU , MEMORY , DISK , IO …),另外一種就是針對整個系統(單一伺服器 server , 單一儲存裝置 Storage 或是機櫃 Rack ),下面大部分使用的方式是透過 軟體+實際設備 的方式來進行效能測試.
除了這種方式外 QA 還會利用不同種類的電子量測設備來進行效能測試,如 Spirent (台灣代理 廣聯科技) ,IXIA (台灣代理 派恩科技), 以及其他的 立肯科技 或是 太克科技,使用電子量測設備的好處是可以比較快速看出系統在設計時有哪些瑕疵存在.外面廠商也有專門幫你做驗證的如 百佳泰.
在進行效能 (Performance) 前,還需要了解一下資料頻寬 – https://benjr.tw/20493 的上限值是多少.
單體效能 (Performance)
下面是 Linux 環境下我常用的單體效能測試工具:
CPU
- CPU Burn-in – https://benjr.tw/8738
只能針對單核心在做運算,不推薦使用. - Geekbench – https://benjr.tw/94201
針對 整數 (Integer performance) ,浮點數 (Floating point performance) 與 記憶體 (Memory performance)的運算(主要涵蓋了 加密,圖像處理,信號處理與物理模擬). - Intel Memory Latency Checker – https://benjr.tw/99426
在 NUMA (Non-uniform memory access) 架構下,如何知道記憶體的存取效能如何,Intel 提供了 Memory Latency Checker 可以做檢查. - Lmbench 測試處理器 – https://benjr.tw/98333
- bw_pipe
產生兩個 processes (行程) 彼此交換 (pipe) 資料並測試其速度. - bw_unix
產生了 parent (reader) , child (writer) processes彼 此交換 (pipe) 資料並測試其速度.
- bw_pipe
Memory
Lmbech 測試記憶體效能 – https://benjr.tw/98285
- bw_file_rd
檔案 (硬碟) 到 memory 之間產生 mapping 並測試其讀取速度. - bw_mem
主要在測試 processor 與 memory 之間的傳輸速度. - bw_mmap_rd
從檔案 (硬碟) 到 memory 測試其讀取速度.
Lmbech 測試記憶體延遲 – https://benjr.tw/98338
- lat_pagefault
The time it takes to fault in a page from a file. - lat_mem_rd
主要在測試 processor 與 memory 的讀取延遲 (latency). - lat_mmap
這邊主要在測試 memory 到 檔案 (硬碟) 之間的延遲 (latency).
LMbench stream – https://benjr.tw/98356
John McCalpin’s stream benchmark
Disk
以前用過 dd , hdparm 或是 Iometer 來測試 Disk I/O 的是速度,但 dd, hdparm 太過簡單,Iometer 太過老舊 ,目前比較多人使用的是 Fio 這一支測試工具.
- iometer Quick start – https://benjr.tw/435
- iometer – https://benjr.tw/370
- hdparm – https://benjr.tw/450 , https://benjr.tw/96289
- dd – https://benjr.tw/458
- lmdd – https://benjr.tw/98399
- Fio (Flexible I/O Tester) – https://benjr.tw/269
Network
- Iometer –https://benjr.tw/94270
利用 IOMeter 來測試網路效能,使用方式基本上跟 IOmeter 測試 Disk 一樣. - iperf – https://benjr.tw/462
免費最簡單的網路效能測試工具. - qperf – https://benjr.tw/486
RHEL6 預設的網路效能測試工具. - IxChariot –https://benjr.tw/470
專業級的網路效能測試工具, IXIA 系列的產品 IxAutomate , IxExplorer , IxLoad. - Pktgenhttps://benjr.tw/93300
Packet-Generation 它是一個 Linux 核心的模組,它可以以非常快的速度產生封包. - Smartbits – https://benjr.tw/638 , TestCenter – https://benjr.tw/633
Smartbits (1G) / TestCenter (10G , 25G , 40G , 100G )是一套專門用來檢視網路設備的硬體檢測裝置,是由 SPIRENT 這一家公司所提供主要可以用來檢視網卡或是 switch 等網路裝置. - nttcp – https://benjr.tw/23686
透過 nttcp 可以針對網路的 TCP, UDP 以及 UDP multicast connection 來進行效能檢視. - NTttcp – https://benjr.tw/94564
Microsoft Azure 以及 Amazon 建議使用的網路效能測試工具 NTttcp ,同時提供 Linux 與 Windows 版本.
如果透過這些工具測試出來,發現效能不好該怎麼辦,這時候可以參考 Network 效能測試與調整 – https://benjr.tw/93408
系統效能 (Performance)
Web Server
在架站之後,想要了解一下你的 http service (Apache) 的效能,這時候可以使用 web server 相關的效能測試程式.
- ab (ApacheBench) – https://benjr.tw/94140
Apache 內建的效能測試程式 – ab (Apache HTTP Server Benchmarking Tool)
加解密演算法
- openssl speed – https://benjr.tw/94131
透過 SSL 的加解密演算法來看你系統的效能 (CPU 與 memory 效能測試)
資料庫的效能評比
- Sysbench oltp – https://benjr.tw/95251
SysBench 裡面有一個測試項目就是針對資料庫的 oltp (Online transaction processing,線上交易處理) . - Sysbech + MariaDB Galera Cluster + HAProxy – https://benjr.tw/95724
利用 MariaDB Galera Cluster , HAProxy 的架構來進行 Sysbech OLTP 測試.
雲端效能評比
- TBD
其他待評估
- GPU – nvqual , gpu_burn , Basemark GPU 支援 Android, Windows 以及 Linux 版本,下載點 – https://www.basemark.com/products/basemark-gpu/
- Benchmark – Phoronix Test Suite + OpenBenchmarking , Intel® BITT , Bonnie++ , BurnInTest , stress-ng , SPECjbb benchmark , Google perfkit benchmarker
- InfiniBand – ib_read_bw(read bandwidth) , ib_write_bw(write bandwidth)
- Filesystem Benchmark – Iozone , VDBench , diskspd(Windows) , ATTO Disk Benchmark
- CPU – LinPack Benchmark , SPEC CPU2006
- Network – httperf , weighttp , httpress , siege , netperf
- Cloud – COSBench
- Other – SPEC power_ssj2008 ,java performance testing tools , TPC Benchmark™ E (TPC-E) , The TPC Benchmark™H (TPC-H) , SPECjEnterprise2010 , IBM – Rational Performance Tester , HP – Loadrunner , Finisar Medusa Test Tool , Apache JMeter