1. 程式人生 > >Linux下的效能測試工具 – sysbench

Linux下的效能測試工具 – sysbench

sysbench是一款開源的多執行緒效能測試工具,可以執行CPU/記憶體/執行緒/IO/資料庫等方面的效能測試。資料庫目前支援MySQL/Oracle/PostgreSQL。本文只是簡單演示一下幾種測試的用法,後續準備利用sysbench來對MySQL進行一系列的測試。具體的一些引數設定,需要根據不同的測試要求來進行調整.

編譯安裝

# wget  -c http://sourceforge.net/projects/sysbench/files/sysbench/0.4.12/sysbench-0.4.12.tar.gz/download

#tar zxvf  sysbench-0.4.12.tar.gz

#cd sysbench-0.4.12

#./configure && make && make install

如果需要測試Oracle/PostgreSQL,則在configure時需要加上–with-oracle或者–with-pgsql引數

引數

[[email protected] sysbench]# ./sysbench

測試用例:
sysbench [general-options]… –test=<test-name> [test-options]… command

通用選項:
–num-threads=N   建立測試執行緒的數目。預設為1.
–max-requests=N   請求的最大數目。預設為10000,0代表不限制。
–max-time=N   最大執行時間,單位是s。預設是0,不限制。
–forced-shutdown=STRING  超過max-time強制中斷。預設是off。]
–thread-stack-size=SIZE   每個執行緒的堆疊大小。預設是32K。
–init-rng=[on|off]  在測試開始時是否初始化隨機數發生器。預設是off。
–test=STRING      指定測試專案名稱。
–debug=[on|off]    是否顯示更多的除錯資訊。預設是off。
–validate=[on|off]   在可能情況下執行驗證檢查。預設是off。

測試專案:
fileio – File I/O test
cpu – CPU performance test
memory – Memory functions speed test
threads – Threads subsystem performance test
mutex – Mutex performance test(互斥效能測試)
oltp – OLTP test

指令: prepare(測試前準備工作) run(正式測試) cleanup(測試後刪掉測試資料) help version

See ‘sysbench –test=<name> help’ for a list of options for each test. 檢視每個測試專案的更多選項列表。

[[email protected] bin]# ./sysbench –test=fileio help
–file-num=N   建立測試檔案的數量。預設是128
–file-block-size=N  測試時檔案塊的大小。預設是16384(16K)
–file-total-size=SIZE   測試檔案的總大小。預設是2G
–file-test-mode=STRING  檔案測試模式{seqwr(順序寫), seqrewr(順序讀寫), seqrd(順序讀), rndrd(隨機讀), rndwr(隨機寫), rndrw(隨機讀寫)}
–file-io-mode=STRING   檔案操作模式{sync(同步),async(非同步),fastmmap(快速map對映),slowmmap(慢map對映)}。預設是sync
–file-extra-flags=STRING   使用額外的標誌來開啟檔案{sync,dsync,direct} 。預設為空
–file-fsync-freq=N   執行fsync()的頻率。(0 – 不使用fsync())。預設是100
–file-fsync-all=[on|off] 每執行完一次寫操作就執行一次fsync。預設是off
–file-fsync-end=[on|off] 在測試結束時才執行fsync。預設是on
–file-fsync-mode=STRING  使用哪種方法進行同步{fsync, fdatasync}。預設是fsync
–file-merged-requests=N   如果可以,合併最多的IO請求數(0 – 表示不合並)。預設是0
–file-rw-ratio=N     測試時的讀寫比例。預設是1.5

[[email protected] bin]# ./sysbench –test=cpu help
–cpu-max-prime=N  最大質數發生器數量。預設是10000

[[email protected] bin]# ./sysbench –test=memory help
–memory-block-size=SIZE  測試時記憶體塊大小。預設是1K
–memory-total-size=SIZE    傳輸資料的總大小。預設是100G
–memory-scope=STRING    記憶體訪問範圍{global,local}。預設是global
–memory-hugetlb=[on|off]  從HugeTLB池記憶體分配。預設是off
–memory-oper=STRING     記憶體操作型別。{read, write, none} 預設是write
–memory-access-mode=STRING儲存器存取方式{seq,rnd} 預設是seq

[[email protected] bin]# ./sysbench –test=threads help
–thread-yields=N   每個請求產生多少個執行緒。預設是1000
–thread-locks=N    每個執行緒的鎖的數量。預設是8

[[email protected] bin]# ./sysbench –test=mutex help
–mutex-num=N    陣列互斥的總大小。預設是4096
–mutex-locks=N    每個執行緒互斥鎖的數量。預設是50000
–mutex-loops=N    內部互斥鎖的空迴圈數量。預設是10000

[[email protected] bin]# ./sysbench –test=oltp help
oltp options:
–oltp-test-mode=STRING    執行模式{simple,complex(advanced transactional),nontrx(non-transactional),sp}。預設是complex
–oltp-reconnect-mode=STRING 重新連線模式{session(不使用重新連線。每個執行緒斷開只在測試結束),transaction(在每次事務結束後重新連線),query(在每個SQL語句執行完重新連線),random(對於每個事務隨機選擇以上重新連線模式)}。預設是session
–oltp-sp-name=STRING   儲存過程的名稱。預設為空
–oltp-read-only=[on|off]  只讀模式。Update,delete,insert語句不可執行。預設是off
–oltp-skip-trx=[on|off]   省略begin/commit語句。預設是off
–oltp-range-size=N      查詢範圍。預設是100
–oltp-point-selects=N          number of point selects [10]
–oltp-simple-ranges=N          number of simple ranges [1]
–oltp-sum-ranges=N             number of sum ranges [1]
–oltp-order-ranges=N           number of ordered ranges [1]
–oltp-distinct-ranges=N        number of distinct ranges [1]
–oltp-index-updates=N          number of index update [1]
–oltp-non-index-updates=N      number of non-index updates [1]
–oltp-nontrx-mode=STRING   查詢型別對於非事務執行模式{select, update_key, update_nokey, insert, delete} [select]
–oltp-auto-inc=[on|off]      AUTO_INCREMENT是否開啟。預設是on
–oltp-connect-delay=N     在多少微秒後連線資料庫。預設是10000
–oltp-user-delay-min=N    每個請求最短等待時間。單位是ms。預設是0
–oltp-user-delay-max=N    每個請求最長等待時間。單位是ms。預設是0
–oltp-table-name=STRING  測試時使用到的表名。預設是sbtest
–oltp-table-size=N         測試表的記錄數。預設是10000
–oltp-dist-type=STRING    分佈的隨機數{uniform(均勻分佈),Gaussian(高斯分佈),special(空間分佈)}。預設是special
–oltp-dist-iter=N    產生數的迭代次數。預設是12
–oltp-dist-pct=N    值的百分比被視為’special’ (for special distribution)。預設是1
–oltp-dist-res=N    ‘special’的百分比值。預設是75

General database options:
–db-driver=STRING  指定資料庫驅動程式(‘help’ to get list of available drivers)
–db-ps-mode=STRING編制報表使用模式{auto, disable} [auto]

Compiled-in database drivers:
mysql – MySQL driver

mysql options:
–mysql-host=[LIST,...]       MySQL server host [localhost]
–mysql-port=N                MySQL server port [3306]
–mysql-socket=STRING         MySQL socket
–mysql-user=STRING           MySQL user [sbtest]
–mysql-password=STRING       MySQL password []
–mysql-db=STRING             MySQL database name [sbtest]
–mysql-table-engine=STRING   storage engine to use for the test table {myisam,innodb,bdb,heap,ndbcluster,federated} [innodb]
–mysql-engine-trx=STRING     whether storage engine used is transactional or not {yes,no,auto} [auto]
–mysql-ssl=[on|off]          use SSL connections, if available in the client library [off]
–myisam-max-rows=N           max-rows parameter for MyISAM tables [1000000]
–mysql-create-options=STRING additional options passed to CREATE TABLE []

測試

1、CPU測試

[[email protected] bin]# ./sysbench –test=cpu –cpu-max-prime=20000 run

sysbench 0.4.12: multi-threaded system evaluation benchmark

Number of threads: 1

Doing CPU performance benchmark

Threads started!
Done.

Maximum prime number checked in CPU test: 20000
Test execution summary:
total time:                          31.9364s
total number of events:              10000
total time taken by event execution: 31.9334
per-request statistics:
min:                                  3.18ms
avg:                                  3.19ms
max:                                  3.60ms
approx.  95 percentile:               3.20ms

Threads fairness:
events (avg/stddev):           10000.0000/0.00
execution time (avg/stddev):   31.9334/0.00

2、執行緒數測試

thread-locks小於執行緒數除以2,lock越少,處理時間越長。

# ./sysbench –test=threads –num-threads=512 –thread-yields=100 –thread-locks=2 run

sysbench 0.4.12:  multi-threaded system evaluation benchmark
Running the test with following options:Number of threads: 512
Doing thread subsystem performance test

Thread yields per test: 100 Locks used: 2

Threads started!

WARNING: Operation time (0.000000) is less than minimal counted value, counting as 1.000000

WARNING: Percentile statistics will be inaccurateDone.

Test execution summary:

total time:                          4.1759s

total number of events:              10000

total time taken by event execution: 2038.5959

per-request statistics:

min:                                  0.00ms

avg:                                203.86ms

max:                               2735.47ms

approx.  95 percentile:             829.60ms
Threads fairness:

events (avg/stddev):           19.5312/8.26

execution time (avg/stddev):   3.9816/0.04

3、磁碟IO效能測試

首先生成需要的測試檔案,檔案總大小3G,16個併發執行緒,隨機讀寫模式。執行完後會在當前目錄下生成一堆小檔案。

# ./sysbench –test=fileio –num-threads=16 –file-total-size=3G –file-test-mode=rndrw prepare

sysbench 0.4.12:  multi-threaded system evaluation benchmark

128 files, 24576Kb each, 3072Mb total

Creating files for the test…

開始測試:

# ./sysbench –test=fileio –num-threads=16 –file-total-size=3G –file-test-mode=rndrw run

sysbench 0.4.12:  multi-threaded system evaluation benchmark

Running the test with following options:Number of threads: 16

Extra file open flags: 0

128 files, 24Mb each

3Gb total file size

Block size 16Kb

Number of random requests for random IO: 10000

Read/Write ratio for combined random IO test: 1.50

Periodic FSYNC enabled, calling fsync() each 100 requests

.Calling fsync() at the end of test, Enabled.

Using synchronous I/O modeDoing random r/w test

Threads started!

WARNING: Operation time (0.000000) is less than minimal counted value, counting as 1.000000

WARNING: Percentile statistics will be inaccurateDone.

Operations performed:  6004 Read, 3996 Write, 12800 Other = 22800 TotalRead 93.812Mb  Written 62.438Mb  Total transferred 156.25Mb  (6.472Mb/sec)  414.21 Requests/sec executed

Test execution summary:

total time:                          24.1426s

total number of events:              10000

total time taken by event execution: 164.4243

per-request statistics:

min:                                  0.00ms

avg:                                 16.44ms

max:                                821.08ms         approx.  95 percentile:             102.40ms
Threads fairness:

events (avg/stddev):           625.0000/63.99    e

xecution time (avg/stddev):   10.2765/0.62

清理現場

# ./sysbench –test=fileio –num-threads=16 –file-total-size=3G –file-test-mode=rndrw cleanup

sysbench 0.4.12:  multi-threaded system evaluation benchmark

Removing test files…

4、記憶體測試

下面的引數指定了本次測試整個過程是在記憶體中傳輸 1G 的資料量,每個 block 大小為 8K。

./sysbench –test=memory –num-threads=64 –memory-block-size=8192 –memory-total-size=1G run

sysbench 0.4.12:  multi-threaded system evaluation benchmark

Running the test with following options:

Number of threads: 64

Doing memory operations speed test

Memory block size: 8K

Memory transfer size: 1024M

Memory operations type: writeMemory scope type: globalThreads started!(last message repeated 1 times)

WARNING: Operation time (0.000000) is less than minimal counted value, counting as 1.000000

WARNING: Percentile statistics will be inaccurate(last message repeated 1 times)Done.

Operations performed: 131072 (416391.08 ops/sec)

1024.00 MB transferred (3253.06 MB/sec)

Test execution summary:

total time:                          0.3148s

total number of events:              131072

total time taken by event execution: 17.5553

per-request statistics:

min:                                  0.00ms

avg:                                  0.13ms

max:                                289.55ms

approx.  95 percentile:               0.00ms
Threads fairness:

events (avg/stddev):           2048.0000/4854.85

execution time (avg/stddev):   0.2743/0.04

5、Mutex測試

測試mutex
[[email protected] ]# ./sysbench –test=mutex –num-threads=1500 –max-requests=2000   –mutex-num=10240 –mutex-locks=100000

–mutex-loops=15000 run
sysbench 0.4.12:  multi-threaded system evaluation benchmark

Running the test with following options:
Number of threads: 1500

Doing mutex performance test
Threads started!
Done.
Test execution summary:
total time:                          74.0710s
total number of events:              1500
total time taken by event execution: 5410.6925
per-request statistics:
min:                                485.77ms
avg:                               3607.13ms
max:                              13770.44ms
approx.  95 percentile:           12489.67ms

Threads fairness:
events (avg/stddev):           1.0000/0.00
execution time (avg/stddev):   3.6071/3.97

6、MySQL資料庫測試


首先需要建立預設的sbtest資料庫,或者使用–mysql-db指定一個已經存在的資料庫

生成測試資料,引擎為myisam,表大小為1000000條記錄

[[email protected] ]# ./sysbench --test=oltp --mysql-table-engine=myisam --oltp-table-size=1000000 \
--mysql-user=root --mysql-socket=/opt/mysql/run/mysql.sock prepare
sysbench 0.4.12:  multi-threaded system evaluation benchmark

No DB drivers specified, using mysql
Creating table 'sbtest'...
Creating 1000000 records in table 'sbtest'...

[email protected] 11:42:18>desc sbtest.sbtest;
+-------+------------------+------+-----+---------+----------------+
| Field | Type             | Null | Key | Default | Extra          |
+-------+------------------+------+-----+---------+----------------+
| id    | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| k     | int(10) unsigned | NO   | MUL | 0       |                |
| c     | char(120)        | NO   |     |         |                |
| pad   | char(60)         | NO   |     |         |                |
+-------+------------------+------+-----+---------+----------------+

執行測試

[[email protected] ]# ./sysbench --test=oltp --mysql-table-engine=myisam --oltp-table-size=1000000 \
--mysql-user=root --mysql-socket=/opt/mysql/run/mysql.sock run
sysbench 0.4.12:  multi-threaded system evaluation benchmark

No DB drivers specified, using mysql
Running the test with following options:
Number of threads: 1

Doing OLTP test.
Running mixed OLTP test
Using Special distribution (12 iterations,  1 pct of values are returned in 75 pct cases)
Using "LOCK TABLES WRITE" for starting transactions
Using auto_inc on the id column
Maximum number of requests for OLTP test is limited to 10000
Threads started!
Done.

OLTP test statistics:
    queries performed:
        read:                            140000
        write:                           50000
        other:                           20000
        total:                           210000
    transactions:                        10000  (336.64 per sec.)
    deadlocks:                           0      (0.00 per sec.)
    read/write requests:                 190000 (6396.11 per sec.)
    other operations:                    20000  (673.27 per sec.)

Test execution summary:
    total time:                          29.7056s
    total number of events:              10000
    total time taken by event execution: 29.6301
    per-request statistics:
         min:                                  2.27ms
         avg:                                  2.96ms
         max:                                 43.88ms
         approx.  95 percentile:               3.36ms

Threads fairness:
    events (avg/stddev):           10000.0000/0.00
    execution time (avg/stddev):   29.6301/0.00

清理現場

[[email protected] ]# ./sysbench--test=oltp --mysql-table-engine=myisam --oltp-table-size=1000000 \
--mysql-user=root --mysql-socket=/opt/mysql/run/mysql.sock cleanup
sysbench 0.4.12:  multi-threaded system evaluation benchmark

No DB drivers specified, using mysql
Dropping table 'sbtest'...
Done.

FAQ

相關推薦

Linux效能測試工具sysbench

sysbench是一款開源的多執行緒效能測試工具,可以執行CPU/記憶體/執行緒/IO/資料庫等方面的效能測試。資料庫目前支援MySQL/Oracle/PostgreSQL。本文只是簡單演示一下幾種測試的用法,後續準備利用sysbench來對MySQL進行一系列的測試。具體

Linux伺服器效能測試工具介紹

前言 作為伺服器開發人員,對效能應該非常的敏感,在伺服器設計和編碼時就應該充分考慮到效能問題,但如果寫出來的程式,或者已經存在的程式在執行中出現了效能問題,我們又如何下手去找出問題並解決呢?這不僅靠的是經驗,還需要藉助一些工具來輔助分析。 本文將以一個例項為樣本,介紹幾款

MySql效能測試工具-sysbench

雖然mysql預設的有mysqlslap這個效能測試工具,但和sysbench比較來說,還遜色不少。 shell> wget https://github.com/akopytov/sysbench/archive/1.0.zip

linux 磁碟效能測試工具fio

1,安裝 apt-get install fio dd if=/dev/zero of=2G.file bs=1G count=2 2,測試 fio -filename=/mnt/dmcache/chenming.log -direct=1

Linux效能測試

轉載文章:http://blog.51cto.com/wushank/1585927 linux下的CPU、記憶體、IO、網路的壓力測試 一、對CPU進行簡單測試: 1、通過bc命令計算特別函式 例:計算圓周率 echo "scale=5000; 4*a(1)

Linux 實時效能測試工具——Cyclictest 的使用與分析

  Cyclictest is a high resolution test program, written by User:Tglx, maintained by Clark Williams and John Kacur Documentatio

嵌入式linux網路效能測試工具iperf

       通常在某些應用中我們會乙太網作為高速傳輸媒介介面,在前期的驗證以及硬體完成以後都需要進行必要的效能測試。微控制器中由於RAM有限通常不會實現完整的TCP/IP協議棧,而採用諸如uIP/L

Linux 網路效能測試工具 iperf 的安裝和使用

好久沒寫文章,iperf 也一直有用,感覺不錯就記錄一下 說明: OS :CentOS 6.4 x86_64 Server: 192.168.100.55 Client: 192.168.100.6 簡介: Iperf是一個網路效能測試工具。可以測試TCP和UDP頻寬質量,

linux環境 C++效能測試工具 gprof 和gprof2dot

1 簡介 改進應用程式的效能是一項非常耗時耗力的工作,但是究竟程式中是哪些函式消耗掉了大部分執行時間,這通常都不是非常明顯的。GNU 編譯器工具包所提供了一種剖析工具 GNU profiler(gprof)。gprof 可以為 Linux平臺上的程式精確分析效能瓶頸。gprof精確地給出函式被呼叫

簡談linux環境網路效能測試工具iperf

通用引數  -f [kmKM] 分別表示以Kbits, Mbits, KBytes, MBytes顯示報告,預設以Mbits為單位,eg:iperf -c 222.35.11.23 -f K  -i sec 以秒為單位顯示報告間隔,eg:iperf -c 222.35.11.23 -i 2  -l 緩衝區大小

Linux效能測試工具-UnixBench--安裝以及結果分析

UnixBench unixbench是一個用於測試unix系統性能的工具,也是一個比較通用的benchmark, 此測試的目的是對類Unix 系統提供一個基本的效能指示,很多測試用於系統性能的不同方面,這些測試的結果是一個指數值(index value,如520),這個值

linux使用ab工具對伺服器進行壓力測試

ab 安裝 yum -y install httpd-tools (centos) 安裝完成後使用ab -v 檢視ab版本確認是否安裝成功 選項 選項 含義 -A auth-username:password 對伺服器提供BASIC認證信任。 使

Linux VPS/伺服器效能測試工具之二

無論我們選擇國內、國外VPS、伺服器,我們都希望價效比高,都凸顯在哪些方面呢?價格成本、速度、穩定性,以及各種支援的功能。其中最為關鍵的我們在選擇便宜VPS主機的時候可能會用於國內的建站等專案,其實最為直接的測試速度就是我們架設網站之後看看實際的使用者開啟速度,這樣其實是最好

Linux效能測試工具安裝全集

stress 下載地址:http://people.seas.harvard.edu/~apw/stress/ 一、stress工具安裝:1、獲取stress原始碼安裝包(stress-1.0.4.tar.gz)3、解壓並安裝 [[email protected] /]#cd /tmp/

Linux利用Valgrind工具進行記憶體洩露檢測和效能分析

Valgrind通常用來成分析程式效能及程式中的記憶體洩露錯誤 一 Valgrind工具集簡紹 Valgrind包含下列工具:     1、memcheck:檢查程式中的記憶體問題,如洩漏、越界、非法指標等。     2、callgrind:檢測程式程式碼的執行

Linux虛擬機器上安裝效能測試工具OProfile

                作者:鄒祁峰 郵箱:[email protected] 部落格

linux 效能測試工具Lmbench 使用方法

一、引言 要評價一個系統的效能,通常有不同的指標,相應的會有不同的測試方法和測試工具,一般來說為了確保測試結果的公平和權威性,會選用比較成熟的商業測試軟體。但在特定情形下,只是想要簡單比較不同系統或比較一些函式庫效能時,也能夠從開源世界裡選用一些優秀的工具來完成這個任務,

linux / unix 網路效能測試工具iperf詳細使用圖文教程

Iperf是一個網路效能測試工具。Iperf可以測試TCP和UDP頻寬質量。Iperf可以測量最大TCP頻寬,具有多種引數和UDP特性。Iperf可以報告頻寬,延遲抖動和資料包丟失。利用Iperf這一特性,可以用來測試一些網路裝置如路由器,防火牆,交換機等的效能。 Iperf有兩種版本,windows版和

sysbench 0.5 效能測試工具使用手冊

1. sysbench 介紹sysbench是一個模組化的、跨平臺、多執行緒基準測試工具,主要用於評估測試各種不同系統引數 下的資料庫負載情況。關於這個專案的詳細介紹請看:http://sysbench.sourcef

Linux讀寫效能測試工具--iozone

IOzone是一個檔案系統測試基準工具。可以測試不同的作業系統中檔案系統的讀寫效能。可以通過 write, re-write, read, re-read, random read, random write, random mix, backwards read, rec