sysbench是一款开源的多线程性能测试工具

sysbench是一款开源的多线程性能测试工具,可以执行CPU/内存/线程/IO/数据库等方面的性能测试。数据库目前支持MySQL/Oracle/PostgreSQL。本文只是简单演示一下几种测试的用法,后续准备利用sysbench来对MySQL进行一系列的测试。具体的一些参数设置,需要根据不同的测试要求来进行调整。
下载
http://sourceforge.net/projects/sysbench/

编译安装

默认支持MySQL,如果需要测试Oracle/PostgreSQL,则在configure时需要加上-with-oracle或者-with-pgsql参数
[table=95%]
[tr][td]以下是引用片段:
./configure --prefix=/u01/sysbench \
–with-mysql-includes=/opt/mysql/include/mysql \
–with-mysql-libs=/opt/mysql/lib/mysql

make && make install[/td][/tr]
[/table]参数
[table=95%]
[tr][td]以下是引用片段:
NinGoo:/u01/sysbench/bin>$sysbench
Missing required command argument.
Usage:
sysbench [general-options]… --test= [test-options]… command

General options:
–num-threads=N number of threads to use [1]
–max-requests=N limit for total number of requests [10000]
–max-time=N limit for total execution time in seconds [0]
–forced-shutdown=STRING amount of time to wait after --max-time before forcing shutdown [off]
–thread-stack-size=SIZE size of stack per thread [32K]
–init-rng=[on|off] initialize random number generator [off]
–test=STRING test to run
–debug=[on|off] print more debugging info [off]
–validate=[on|off] perform validation checks where possible [off]
–help=[on|off] print help and exit
–version=[on|off] print version and exit

Compiled-in tests:
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

Commands: prepare run cleanup help version
See ’sysbench --test= help’ for a list of options for each test.[/td][/tr]
[/table]CPU测试sysbench采用寻找最大素数的方式来测试CPU的性能[table=95%]
[tr][td]以下是引用片段:
NinGoo:/u01/sysbench/bin>$sysbench --test=cpu --cpu-max-prime=2000 run
sysbench 0.4.12: multi-threaded system evaluation benchmark

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

Doing CPU performance benchmark

Threads started!
Done.

Maximum prime number checked in CPU test: 2000

Test execution summary:
total time: 2.3996s
total number of events: 10000
total time taken by event execution: 2.3917
per-request statistics:
min: 0.23ms
avg: 0.24ms
max: 27.44ms
approx. 95 percentile: 0.24ms

Threads fairness:
events (avg/stddev): 10000.0000/0.00
execution time (avg/stddev): 2.3917/0.00[/td][/tr]
[/table]线程测试[table=95%]
[tr][td]以下是引用片段:
NinGoo:/u01/sysbench/bin>$sysbench --test=threads --num-threads=64 --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: 64

Doing thread subsystem performance test
Thread yields per test: 100 Locks used: 2
Threads started!
Done.

Test execution summary:
total time: 4.3925s
total number of events: 10000
total time taken by event execution: 280.4418
per-request statistics:
min: 0.04ms
avg: 28.04ms
max: 72.81ms
approx. 95 percentile: 52.29ms

Threads fairness:
events (avg/stddev): 156.2500/1.43
execution time (avg/stddev): 4.3819/0.01[/td][/tr]
[/table]
文件IO性能测试

首先生成需要的测试文件,文件总大小300M,16个并发线程,随机读写模式。执行完后会在当前目录下生成一堆小文件。
[table=95%]
[tr][td]以下是引用片段:
NinGoo:/u01/sysbench/bin>$sysbench --test=fileio --num-threads=16 \
–file-total-size=300M --file-test-mode=rndrw prepare
sysbench 0.4.12: multi-threaded system evaluation benchmark

128 files, 2400Kb each, 300Mb total
Creating files for the test…[/td][/tr]
[/table]执行测试
[table=95%]
[tr][td]以下是引用片段:
NinGoo:/u01/sysbench/bin>$sysbench --test=fileio --num-threads=16 \
–file-total-size=300M --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, 2.3438Mb each
300Mb 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 mode
Doing random r/w test
Threads started!
Done.

Operations performed: 5996 Read, 4004 Write, 12800 Other = 22800 Total
Read 93.688Mb Written 62.562Mb Total transferred 156.25Mb (26.713Mb/sec)
1709.66 Requests/sec executed

Test execution summary:
total time: 5.8491s
total number of events: 10000
total time taken by event execution: 12.5045
per-request statistics:
min: 0.01ms
avg: 1.25ms
max: 373.28ms
approx. 95 percentile: 0.03ms

Threads fairness:
events (avg/stddev): 625.0000/109.60
execution time (avg/stddev): 0.7815/0.29[/td][/tr]
[/table]清理现场
[table=95%]
[tr][td]以下是引用片段:
NinGoo:/u01/sysbench/bin>$sysbench --test=fileio --num-threads=16 \
–file-total-size=300M --file-test-mode=rndrw cleanup
sysbench 0.4.12: multi-threaded system evaluation benchmark

Removing test files…[/td][/tr]
[/table]Mutex测试
[table=95%]
[tr][td]以下是引用片段:
NinGoo:/u01/sysbench/bin>$sysbench --test=mutex --num-threads=16 \
–mutex-num=1024 --mutex-locks=10000 --mutex-loops=5000 run
sysbench 0.4.12: multi-threaded system evaluation benchmark

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

Doing mutex performance test
Threads started!
Done.

Test execution summary:
total time: 1.1561s
total number of events: 16
total time taken by event execution: 18.3831
per-request statistics:
min: 1084.60ms
avg: 1148.94ms
max: 1153.52ms
approx. 95 percentile: 10000000.00ms

Threads fairness:
events (avg/stddev): 1.0000/0.00
execution time (avg/stddev): 1.1489/0.02[/td][/tr]
[/table]内存测试[table=95%]
[tr][td]以下是引用片段:
NinGoo:/u01/sysbench/bin>$sysbench --test=memory --num-threads=16 \
–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: 16

Doing memory operations speed test
Memory block size: 8K

Memory transfer size: 1024M

Memory operations type: write
Memory scope type: global
Threads started!
WARNING: Operation time (0.000000) is less than minimal counted value, counting as 1.000000
WARNING: Percentile statistics will be inaccurate
Done.

Operations performed: 131072 (114162.68 ops/sec)

1024.00 MB transferred (891.90 MB/sec)

Test execution summary:
total time: 1.1481s
total number of events: 131072
total time taken by event execution: 16.0448
per-request statistics:
min: 0.00ms
avg: 0.12ms
max: 3.60ms
approx. 95 percentile: 0.01ms

Threads fairness:
events (avg/stddev): 8192.0000/192.89
execution time (avg/stddev): 1.0028/0.00[/td][/tr]
[/table]MySQL数据库测试首先需要创建默认的sbtest数据库,或者使用-mysql-db指定一个已经存在的数据库生成测试数据,引擎为myisam,表大小为1000000条记录
[table=95%]
[tr][td]以下是引用片段:
NinGoo:/u01/sysbench/bin>$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’…

root@sbtest 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 | | | |
±------±-----------------±-----±----±--------±---------------+[/td][/tr]
[/table]执行测试
[table=95%]
[tr][td]以下是引用片段:
NinGoo:/u01/sysbench/bin>$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[/td][/tr]
[/table]清理现场
[table=95%]
[tr][td]以下是引用片段:
NinGoo:/u01/sysbench/bin>$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.[/td][/tr]
[/table]

学习。。。:5_104: