sysbench是一个开源的、模块化的、跨平台的多线程性能测试工具,可以用来进行CPU、内存、磁盘I/O、线程、数据库的性能测试。目前支持的数据库有MySQL、Oracle和PostgreSQL。当前功能允许测试的系统参数有:

file I/O performance (文件I / O性能)
scheduler performance (调度性能)
memory allocation and transfer speed (内存分配和传输速度)
POSIX threads implementation performance (POSIX线程执行绩效)
database server performance (OLTP benchmark) (数据库服务器性能)

安装:
      1):Ubuntu系统可以直接apt,如:

apt-get install sysbench

2):其他系统的则可以编译安装[在/home/zhoujy/目录下]:(安装前先装automake,libtool)

wget http://nchc.dl.sourceforge.net/project/sysbench/sysbench/0.4.12/sysbench-0.4.12.tar.gz
tar zxvf sysbench-0.4.12.tar.gz

进入解压目录,并且创建安装目录:
root@m2:/home/zhoujy# cd sysbench-0.4.12/
root@m2:/home/zhoujy/sysbench-0.4.12# mkdir /usr/sysbench/

准备编译
root@m2:/home/zhoujy/sysbench-0.4.12# apt-get install automake
root@m2:/home/zhoujy/sysbench-0.4.12#apt-get install libtool
root@m2:/home/zhoujy/sysbench-0.4.12# ./autogen.sh

要是出现:perl: warning: Falling back to the standard locale ("C")。则需要设置locale:

echo "export LC_ALL=C" >> /root/.bashrc
source /root/.bashrc

要是没有安装开发包,即/usr/include/ 目录下面没有mysql文件夹。则需要执行安装(版本为12.04):

sudo apt-get install libmysqlclient-dev
sudo apt-get install libmysqld-dev
sudo apt-get install libmysqld-pic

执行configure操作:

./configure --prefix=/usr/sysbench/ --with-mysql-includes=/usr/include/mysql/ --with-mysql-libs=/usr/lib/mysql/ --with-mysql

说明:
--prefix=/usr/sysbench/                    :指定sysbench的安装目录。
--with-mysql-includes=/usr/include/mysql/  :指定安装mysql时候的includes目录。
--with-mysql-libs=/usr/lib/mysql/          :指定装mysql时候的lib目录。
--with-mysql                               :sysbench默认支持mysql,如果需要测试oracle或者pgsql则需要制定–with-oracle或者–with-pgsql。

在这里需要先执行:

cp /usr/bin/libtool /home/zhoujy/sysbench-0.4.12/libtool

再make和make install。否者会出现 libtool 报出的 Xsysbench: command not found  错误,则表示编译文件包的libtool版本太低,需要替换。

选项说明(通用):

root@db2:~# sysbench
Missing required command argument.
Usage: #使用方法sysbench [general-options]... --test=<test-name> [test-options]... commandGeneral options: #通用选项--num-threads=N            number of threads to use [1] #创建测试线程的数目。默认为1.--max-requests=N           limit for total number of requests [10000] #请求的最大数目。默认为10000,0代表不限制。--max-time=N               limit for total execution time in seconds [0] #最大执行时间,单位是s。默认是0,不限制。--forced-shutdown=STRING   amount of time to wait after --max-time before forcing shutdown [off] #超过max-time强制中断。默认是off。--thread-stack-size=SIZE   size of stack per thread [32K] #每个线程的堆栈大小。默认是32K。--init-rng=[on|off]        initialize random number generator [off] #在测试开始时是否初始化随机数发生器。默认是off。--test=STRING              test to run #指定测试项目名称。--debug=[on|off]           print more debugging info [off] #是否显示更多的调试信息。默认是off。--validate=[on|off]        perform validation checks where possible [off] #在可能情况下执行验证检查。默认是off。--help=[on|off]            print help and exit #帮助信息。--version=[on|off]         print version and exit #版本信息。Compiled-in tests: #测试项目fileio - File I/O test #IOcpu - CPU performance test #CPUmemory - Memory functions speed test #内存threads - Threads subsystem performance test #线程mutex - Mutex performance test #互斥性能测试oltp - OLTP test # 数据库,事务处理Commands: prepare:测试前准备工作; run:正式测试 cleanup:测试后删掉测试数据 help versionSee 'sysbench --test=<name> help' for a list of options for each test. #查看每个测试项目的更多选项列表

更多选项:
1):sysbench  --test=fileio help

root@db2:~# sysbench  --test=fileio help
sysbench 0.4.12:  multi-threaded system evaluation benchmarkfileio options:--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
root@db2:~# sysbench  --test=fileio help
sysbench 0.4.12:  multi-threaded system evaluation benchmarkfileio options:--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

2):sysbench  --test=cpu help

--cpu-max-prime=N  最大质数发生器数量。默认是10000
--cpu-max-prime=N  最大质数发生器数量。默认是10000

3):sysbench  --test=memory help

root@db2:~# sysbench  --test=memory help
sysbench 0.4.12:  multi-threaded system evaluation benchmarkmemory options:--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
root@db2:~# sysbench  --test=memory help
sysbench 0.4.12:  multi-threaded system evaluation benchmarkmemory options:--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

4):sysbench  --test=threads help

sysbench 0.4.12:  multi-threaded system evaluation benchmarkthreads options:--thread-yields=N   每个请求产生多少个线程。默认是1000--thread-locks=N    每个线程的锁的数量。默认是8
sysbench 0.4.12:  multi-threaded system evaluation benchmarkthreads options:--thread-yields=N   每个请求产生多少个线程。默认是1000--thread-locks=N    每个线程的锁的数量。默认是8

5):sysbench  --test=mutex help

root@db2:~# sysbench  --test=mutex help
sysbench 0.4.12:  multi-threaded system evaluation benchmarkmutex options:--mutex-num=N    数组互斥的总大小。默认是4096--mutex-locks=N    每个线程互斥锁的数量。默认是50000--mutex-loops=N    内部互斥锁的空循环数量。默认是10000
root@db2:~# sysbench  --test=mutex help
sysbench 0.4.12:  multi-threaded system evaluation benchmarkmutex options:--mutex-num=N    数组互斥的总大小。默认是4096--mutex-locks=N    每个线程互斥锁的数量。默认是50000--mutex-loops=N    内部互斥锁的空循环数量。默认是10000

6): sysbench --test=oltp help

root@db2:~# sysbench --test=oltp help
sysbench 0.4.12:  multi-threaded system evaluation benchmarkoltp 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’的百分比值。默认是75General 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: sysbench --test=cpu --cpu-max-prime=2000 run

root@db2:~# sysbench --test=cpu --cpu-max-prime=2000 run
sysbench 0.4.12:  multi-threaded system evaluation benchmarkRunning the test with following options:
Number of threads: 1Doing CPU performance benchmarkThreads started!
Done.Maximum prime number checked in CPU test: 2000Test execution summary:total time:                          3.7155stotal number of events:              10000total time taken by event execution: 3.7041per-request statistics:min:                                  0.36msavg:                                  0.37msmax:                                  2.53msapprox.  95 percentile:               0.37msThreads fairness:events (avg/stddev):           10000.0000/0.00execution time (avg/stddev):   3.7041/0.00

2)测试线程:sysbench  --test=threads --num-threads=500 --thread-yields=100 --thread-locks=4 run

root@db2:~# sysbench  --test=threads --num-threads=500 --thread-yields=100 --thread-locks=4 run
sysbench 0.4.12:  multi-threaded system evaluation benchmarkRunning the test with following options:
Number of threads: 500Doing thread subsystem performance test
Thread yields per test: 100 Locks used: 4
Threads started!
Done.Test execution summary:total time:                          1.0644stotal number of events:              10000total time taken by event execution: 501.3952per-request statistics:min:                                  0.05msavg:                                 50.14msmax:                                587.05msapprox.  95 percentile:             190.28msThreads fairness:events (avg/stddev):           20.0000/4.72execution time (avg/stddev):   1.0028/0.01

3)测试IO:--num-threads 开启的线程     --file-total-size 总的文件大小
1,prepare阶段,生成需要的测试文件,完成后会在当前目录下生成很多小文件。
sysbench --test=fileio --num-threads=16 --file-total-size=2G --file-test-mode=rndrw prepare     
2,run阶段
sysbench --test=fileio --num-threads=20 --file-total-size=2G --file-test-mode=rndrw run
3,清理测试时生成的文件
sysbench --test=fileio --num-threads=20 --file-total-size=2G --file-test-mode=rndrw cleanup

root@db2:~/io# sysbench --test=fileio --num-threads=16 --file-total-size=2G --file-test-mode=rndrw prepare
sysbench 0.4.12:  multi-threaded system evaluation benchmark128 files, 16384Kb each, 2048Mb total
Creating files for the test...
root@db2:~/io# sysbench --test=fileio --num-threads=20 --file-total-size=2G --file-test-mode=rndrw run
sysbench 0.4.12:  multi-threaded system evaluation benchmarkRunning the test with following options:
Number of threads: 20Extra file open flags: 0
128 files, 16Mb each
2Gb 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:  6010 Read, 3997 Write, 12803 Other = 22810 Total
Read 93.906Mb  Written 62.453Mb  Total transferred 156.36Mb  (6.6668Mb/sec)426.68 Requests/sec executedTest execution summary:total time:                          23.4534stotal number of events:              10007total time taken by event execution: 111.5569per-request statistics:min:                                  0.01msavg:                                 11.15msmax:                                496.18msapprox.  95 percentile:              53.05msThreads fairness:events (avg/stddev):           500.3500/37.50execution time (avg/stddev):   5.5778/0.21root@db2:~/io# sysbench --test=fileio --num-threads=20 --file-total-size=2G --file-test-mode=rndrw cleanup
sysbench 0.4.12:  multi-threaded system evaluation benchmarkRemoving test files...

4)测试内存:sysbench --test=memory --memory-block-size=8k --memory-total-size=1G run

sysbench 0.4.12:  multi-threaded system evaluation benchmark
Operations performed: 1310720 (396525.32 ops/sec)
10240.00 MB transferred (3097.85 MB/sec)
Test execution summary:
total time:                          3.3055s
total number of events:              1310720
total time taken by event execution: 205.0560
per-request statistics:
min:                                  0.00ms
avg:                                  0.16ms
max:                               1066.04ms
approx.  95 percentile:               0.02ms
Threads fairness:
events (avg/stddev):           13107.2000/3870.38
execution time (avg/stddev):   2.0506/0.28

5)测试mutex:sysbench –test=mutex –num-threads=100 –mutex-num=1000 –mutex-locks=100000 –mutex-loops=10000 run

Test execution summary:
total time:                          12.5606s
total number of events:              100
total time taken by event execution: 1164.4236
per-request statistics:
min:                               9551.87ms
avg:                              11644.24ms
max:                              12525.32ms
approx.  95 percentile:           12326.25ms
Threads fairness:
events (avg/stddev):           1.0000/0.00
execution time (avg/stddev):   11.6442/0.59

6)测试OLTP:
1,prepare阶段,生成需要的测试表
sysbench --test=oltp --mysql-table-engine=innodb --mysql-host=192.168.X.X --mysql-db=test --oltp-table-size=500000 --mysql-user=root --mysql-password=123456 prepare
2,run阶段
sysbench --num-threads=16 --test=oltp --mysql-table-engine=innodb --mysql-host=192.168.x.x --mysql-db=test --oltp-table-size=500000 --mysql-user=root --mysql-password=123456 run
3,清理测试时生成的测试表
sysbench --num-threads=16 --test=oltp --mysql-table-engine=innodb --mysql-host=192.168.x.x --mysql-db=test --oltp-table-size=500000 --mysql-user=root --mysql-password=123456 cleanup

root@db2:~# sysbench --test=oltp --mysql-table-engine=innodb --mysql-host=192.168.x.x --mysql-db=rep_test --oltp-table-size=1000000 --mysql-user=root --mysql-password=123456 prepare
sysbench 0.4.12:  multi-threaded system evaluation benchmarkNo DB drivers specified, using mysql
Creating table 'sbtest'...
Creating 1000000 records in table 'sbtest'...
root@db2:~# sysbench --num-threads=16 --test=oltp --mysql-table-engine=innodb --mysql-host=192.168.x.x --mysql-db=rep_test --oltp-table-size=1000000 --mysql-user=root --mysql-password=123456 run
sysbench 0.4.12:  multi-threaded system evaluation benchmarkNo DB drivers specified, using mysql
Running the test with following options:
Number of threads: 16Doing OLTP test.
Running mixed OLTP test
Using Special distribution (12 iterations,  1 pct of values are returned in 75 pct cases)
Using "BEGIN" 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:                            140000write:                           50000other:                           20000total:                           210000
#—-事务数总计,每秒的事务处理量transactions:                        10000  (356.98 per sec.)deadlocks:                           0      (0.00 per sec.)read/write requests:                 190000 (6782.56 per sec.)other operations:                    20000  (713.95 per sec.)Test execution summary:total time:                          28.0130stotal number of events:              10000total time taken by event execution: 447.7731per-request statistics:min:                                  3.91msavg:                                 44.78msmax:                                207.61msapprox.  95 percentile:              76.48msThreads fairness:events (avg/stddev):           625.0000/22.96execution time (avg/stddev):   27.9858/0.01root@db2:~# sysbench --num-threads=16 --test=oltp --mysql-table-engine=innodb --mysql-host=192.168.x.x --mysql-db=rep_test --oltp-table-size=1000000 --mysql-user=root --mysql-password=123456 cleanup
sysbench 0.4.12:  multi-threaded system evaluation benchmarkNo DB drivers specified, using mysql
Dropping table 'sbtest'...
Done.

测试表信息:

mysql> desc 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   |     |         |                |
+-------+------------------+------+-----+---------+----------------+
4 rows in set (0.01 sec)mysql> show create table sbtest\G;
*************************** 1. row ***************************Table: sbtest
Create Table: CREATE TABLE `sbtest` (`id` int(10) unsigned NOT NULL AUTO_INCREMENT,`k` int(10) unsigned NOT NULL DEFAULT '0',`c` char(120) NOT NULL DEFAULT '',`pad` char(60) NOT NULL DEFAULT '',PRIMARY KEY (`id`),KEY `k` (`k`)
) ENGINE=InnoDB AUTO_INCREMENT=1000001 DEFAULT CHARSET=utf8
1 row in set (0.01 sec)ERROR:
No query specifiedmysql> select count(*) from sbtest;
+----------+
| count(*) |
+----------+
|  1000000 |
+----------+
1 row in set (0.30 sec)
mysql> desc sbtest;
ERROR 1146 (42S02): Table 'rep_test.sbtest' doesn't exist

可以用这个测试:

sysbench --num-threads=4 --test=oltp --oltp-reconnect-mode=random --mysql-table-engine=innodb --mysql-host=192.168.200.201 --mysql-db=rep_test --ol
tp-table-size=500000 --mysql-user=zjy --mysql-password=1234#

一. 安装解压后:
  1. $ cd sysbench-0.5
  2. $ ./autogen.sh
  3. $ ./configure --prefix=(选择sysbench安装在哪) (如果需要测试oltp可以加后面的选项)--with-mysql-includes=/usr/local/mysql/include(换成你自己的) --with-mysql-libs=/usr/local/mysql/lib --with-mysql (还可以支持oracle和pgsql
  4. $ make && make install
可能需要安装一下环境:
  1. $ sudo yum -y install libtool automake
源码来安装autoconf和automake

附带这两个源码包url
http://mirrors.kernel.org/gnu/autoconf/autoconf-2.65.tar.gz
http://mirrors.kernel.org/gnu/automake/automake-1.15.tar.gz

配置环境变量:
  1. $ vi ~/.bash_profile
sysbench --version 或者直接 sysbench 可以看到版本信息或者帮助信息
  1. $ source ~/.bash_profile
  2. $ sysbench --version
  3. sysbench 0.5
如果报错:sysbench: error while loading shared libraries: libmysqlclient_r.so.15: cannot open shared object file: No such file or directory则有可能是lib路径不对

  1. $ sudo vi /etc/ld.so.conf
  2. 添加 /usr/local/mysql/lib 保存退出
  3. $ sudo /sbin/ldconfig -v


二. file IO 指定--test=fileio即可。

fileio options:  --file-num=N                  number of files to create [128]        // 创建的文件数  --file-block-size=N           block size to use in all IO operations [16384]        // 块大小,比如4096为4K  --file-total-size=SIZE        total size of files to create [2G]        // 要创建文件的总大小  --file-test-mode=STRING       test mode {seqwr, seqrewr, seqrd, rndrd, rndwr, rndrw}        // 磁盘访问模式,分别为顺序写,顺序读写,顺序读,随机写,随机读写,随机读  --file-io-mode=STRING           file operations mode {sync,async,mmap} [sync]        // 文件操作模式,分别为同步,异步,映射至内存,缺省为同步  --file-extra-flags=STRING     additional flags to use on opening files {sync,dsync,direct} []        //  打开文件的附加标识  --file-fsync-freq=N           do fsync() after this number of requests (0 - don't use fsync()) [100]        // 在某个数请求之后做fsync(),缺省为100  --file-fsync-all=[on|off]     do fsync() after each write operation [off]        // 打开或关闭在每个写操作后执行fsync(),缺省为OFF  --file-fsync-end=[on|off]     do fsync() at the end of test [on]        // 打开或关闭结束test时执行fsync(),缺省为ON  --file-fsync-mode=STRING      which method to use for synchronization {fsync, fdatasync} [fsync]        // 使用什么方法同步,缺省为fsync  --file-merged-requests=N      merge at most this number of IO requests if possible (0 - don't merge) [0]        // 尽可能合并IO请求的数量,缺省为0  --file-rw-ratio=N             reads/writes ratio for combined test [1.5]        // 读写比例,默认为1.5

测试例子:
  1. $ sysbench --test=fileio --file-num=10 --file-total-size=1G --file-block-size=4096 --file-test-mode=seqwr --file-io-mode=sync prepare        // 先做文件准备 参数为prepare 创建10个文件 每个102.4MB 文件块为4K
  2. sysbench 0.5: multi-threaded system evaluation benchmark
  3. 10 files, 104857Kb each, 1023Mb total
  4. Creating files for the test...
  5. Extra file open flags: 0
  6. Creating file test_file.0
  7. Creating file test_file.1
  8. Creating file test_file.2
  9. Creating file test_file.3
  10. Creating file test_file.4
  11. Creating file test_file.5
  12. Creating file test_file.6
  13. Creating file test_file.7
  14. Creating file test_file.8
  15. Creating file test_file.9
  16. 1073766400 bytes written in 12.11 seconds (84.56 MB/sec).
  17. $ sysbench --test=fileio --file-num=10 --file-total-size=1G --file-block-size=4096 --file-test-mode=seqwr --file-io-mode=sync run    // 开始测试,参数改为run
  18. sysbench 0.5: multi-threaded system evaluation benchmark
  19. Running the test with following options:
  20. Number of threads: 1
  21. Random number generator seed is 0 and will be ignored
  22. Extra file open flags: 0
  23. 10 files, 102.4Mb each
  24. 1024Mb total file size
  25. Block size 4Kb
  26. Periodic FSYNC enabled, calling fsync() each 100 requests.
  27. Calling fsync() at the end of test, Enabled.
  28. Using synchronous I/O mode
  29. Doing sequential write (creation) test
  30. Threads started!
  31. Operations performed: 0 reads, 10000 writes, 1000 Other = 11000 Total
  32. Read 0b Written 39.062Mb Total transferred 39.062Mb (8.3495Mb/sec)
  33. 2137.47 Requests/sec executed
  34. General statistics:
  35. total time: 4.6784s
  36. total number of events: 10000
  37. total time taken by event execution: 0.0767s
  38. response time:
  39. min: 0.00ms
  40. avg: 0.01ms
  41. max: 0.08ms
  42. approx. 95 percentile: 0.01ms
  43. Threads fairness:
  44. events (avg/stddev): 10000.0000/0.00
  45. execution time (avg/stddev): 0.0767/0.00
  46. $ sysbench --test=fileio --file-num=10 --file-total-size=1G --file-block-size=4096 --file-test-mode=seqwr --file-io-mode=sync cleanup    // 参数为cleanup 清除测试文件
  47. sysbench 0.5: multi-threaded system evaluation benchmark
  48. Removing test files...


三. CPU test指定--test=cpu即可。

cpu options:  --cpu-max-prime=N      upper limit for primes generator [10000]        // 设置素数最大上限值,缺省为10000 

测试例子:
  1. $ sysbench --test=cpu --cpu-max-prime=1024 run
  2. sysbench 0.5: multi-threaded system evaluation benchmark
  3. Running the test with following options:
  4. Number of threads: 1
  5. Random number generator seed is 0 and will be ignored
  6. Primer numbers limit: 1024
  7. Threads started!
  8. General statistics:
  9. total time: 0.4622s
  10. total number of events: 10000
  11. total time taken by event execution: 0.4561s
  12. response time:
  13. min: 0.04ms
  14. avg: 0.05ms
  15. max: 0.15ms
  16. approx. 95 percentile: 0.05ms
  17. Threads fairness:
  18. events (avg/stddev): 10000.0000/0.00
  19. execution time (avg/stddev): 0.4561/0.00


四. memory test指定--test=memory即可。

memory options:  --memory-block-size=SIZE    size of memory block for test [1K]         // 内存块的大小,缺省为1K  --memory-total-size=SIZE    total size of data to transfer [100G]        // 总共需要传输的大小,缺省为100G  --memory-scope=STRING       memory access scope {global,local} [global]// 内存访问是全局还是本地,缺省为全局  --memory-hugetlb=[on|off]   allocate memory from HugeTLB pool [off]// 是否从HugeTLB中分配内存,缺省为否  --memory-oper=STRING        type of memory operations {read, write, none} [write]// 内存的操作方式,读,写,或none,缺省为写  --memory-access-mode=STRING memory access mode {seq,rnd} [seq]// 内存访问模式,顺序或随机,默认为序列

测试例子:
  1. $ sysbench --test=memory --memory-block-size=4096 --memory-total-size=50G --memory-oper=read --memory-access-mode=rnd run
  2. sysbench 0.5: multi-threaded system evaluation benchmark
  3. Running the test with following options:
  4. Number of threads: 1
  5. Random number generator seed is 0 and will be ignored
  6. Threads started!
  7. Operations performed: 13107200 (950195.57 ops/sec)
  8. 51200.00 MB transferred (3711.70 MB/sec)
  9. General statistics:
  10. total time: 13.7942s
  11. total number of events: 13107200
  12. total time taken by event execution: 5.8543s
  13. response time:
  14. min: 0.00ms
  15. avg: 0.00ms
  16. max: 0.06ms
  17. approx. 95 percentile: 0.00ms
  18. Threads fairness:
  19. events (avg/stddev): 13107200.0000/0.00
  20. execution time (avg/stddev): 5.8543/0.00


五. threads test指定--test=threads即可。

threads options:  --thread-yields=N      number of yields to do per request [1000]  --thread-locks=N       number of locks per thread [8]// 每个线程锁的数目
测试例子:
  1. [op@sAno1y sysbench]$ sysbench --test=threads run
  2. sysbench 0.5: multi-threaded system evaluation benchmark
  3. Running the test with following options:
  4. Number of threads: 1
  5. Random number generator seed is 0 and will be ignored
  6. Threads started!
  7. General statistics:
  8. total time: 3.6699s
  9. total number of events: 10000
  10. total time taken by event execution: 3.6635s
  11. response time:
  12. min: 0.35ms
  13. avg: 0.37ms
  14. max: 0.74ms
  15. approx. 95 percentile: 0.37ms
  16. Threads fairness:
  17. events (avg/stddev): 10000.0000/0.00
  18. execution time (avg/stddev): 3.6635/0.00


六. mutex test指定--test=mutex即可。

mutex options:  --mutex-num=N        total size of mutex array [4096]// 互斥体数据大小,缺省为4K  --mutex-locks=N      number of mutex locks to do per thread [50000]// 每个线程的互斥锁,缺省为50000  --mutex-loops=N      number of empty loops to do inside mutex lock [10000]// 互斥锁内空循环的数目,缺省为10000

测试例子:

  1. [op@sAno1y sysbench]$ sysbench --test=mutex --mutex-num=8192 --number-locks=102400 run
  2. sysbench 0.5: multi-threaded system evaluation benchmark
  3. Running the test with following options:
  4. Number of threads: 1
  5. Random number generator seed is 0 and will be ignored
  6. Threads started!
  7. General statistics:
  8. total time: 0.0049s
  9. total number of events: 1
  10. total time taken by event execution: 0.0048s
  11. response time:
  12. min: 4.79ms
  13. avg: 4.79ms
  14. max: 4.79ms
  15. approx. 95 percentile: 4.79ms
  16. Threads fairness:
  17. events (avg/stddev): 1.0000/0.00
  18. execution time (avg/stddev): 0.0048/0.00

七. oltp test

指定--test=oltp即可。

oltp options:General database options: --db-driver=STRING  specifies database driver to use ('help' to get list of available drivers)   --db-ps-mode=STRING prepared statements usage mode {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 []

创建测试数据:--oltp-table-size为单表创建数据的数量
  1. sysbench --test=oltp --mysql-table-engine=innodb --mysql-socket=/tmp/mysql.sock --mysql-user=root --mysql-host=localhost --mysql-password=root --mysql-db=test --oltp-table-size=50000000 prepare
开始run:其中--num-threads为并发数,--max-time为测试的时长(秒)
  1. sysbench --test=oltp --mysql-table-engine=innodb --mysql-socket=/tmp/mysql.sock --mysql-user=root --mysql-host=localhost --mysql-password=root --mysql-db=test --oltp-table-size=5000000 --num-threads=1000 --max-time=60 --max-requests=0 --report-interval=10 run
在sysbench 0.5的版本中,则可以使用一个lua脚本来创建表,并且可以指定多张表,比如:其中 oltp_tables_count为指定prepare几张表,--rand-init打开则表示随机写数:
  1. sysbench --test=/opt/app/sysbench-0.5/sysbench/tests/db/oltp.lua --mysql-table-engine=innodb --mysql-socket=/tmp/mysql.sock --mysql-user=root --mysql-host=localhost --mysql-password=root --mysql-db=test \
  2. --oltp-table-size=50000000 --oltp_tables_count=10 --rand-init=on prepare
生成的测试表的数据样例:*************************** 1. row *************************** id: 1  k: 50206885  c: 08566691963-88624912351-16662227201-46648573979-64646226163-77505759394-75470094713-41097360717-15161106334-50535565977pad: 63188288836-92351140030-06390587585-66802097351-49282961843*************************** 2. row *************************** id: 2  k: 49910688  c: 95969429576-20587925969-20202408199-67602281819-18293380360-38184587501-73192830026-41693404212-56705243222-89212376805pad: 09512147864-77936258834-40901700703-13541171421-15205431759*************************** 3. row *************************** id: 3  k: 50204693  c: 26283585383-48610978532-72166636310-67148386979-89643583984-06169170732-23477134062-17788128188-73465768032-24619558652pad: 21979564480-87492594656-60524686334-78820761788-57684966682*************************** 4. row *************************** id: 4  k: 52180295  c: 72200234338-75748118569-08939863650-01688814841-36798767826-71560494483-89421079440-11810718401-29133837777-68338627243pad: 80945118876-33522718290-51523426562-15979384524-91541356971*************************** 5. row *************************** id: 5  k: 41395699  c: 29279855805-99348203463-85191104223-39587263726-81794340135-73817557808-54578801760-64404111877-55434439976-37212880746pad: 59222897263-22759023974-22020489960-93434521232-779811525345 rows in set (0.00 sec)

测试结果说明:
  1. No DB drivers specified, using mysql
  2. Running the test with following options:
  3. Number of threads: 1
  4. Random number generator seed is 0 and will be ignored
  5. Doing OLTP test.
  6. Running mixed OLTP test
  7. Using Special distribution (12 iterations, 1 pct of values are returned in 75 pct cases)
  8. Using "BEGIN" for starting transactions
  9. Using auto_inc on the id column
  10. Maximum number of requests for OLTP test is limited to 10000
  11. Using 1 test tables
  12. Threads started!
  13. Done.
  14. OLTP test statistics:
  15. queries performed:
  16. read: 140000 -- 读总数
  17. write: 50000 -- 写总数
  18. other: 20000 -- 其他操作总数(除了dml之外的操作)
  19. total: 210000 -- 全部总数
  20. transactions: 10000 (229.62 per sec.) -- 总事务数
  21. deadlocks: 0 (0.00 per sec.) -- 死锁数
  22. read/write requests: 190000 (4362.73 per sec.) -- 读写总数
  23. other operations: 20000 (459.23 per sec.) -- 其他操作总数
  24. General statistics:
  25. total time: 43.5507s -- 总耗时
  26. total number of events: 10000 -- 总共发生的事务数
  27. total time taken by event execution: 43.4491 -- 所有事务耗时相加(不考虑并行因素)
  28. response time:
  29. min: 3.75ms -- 最小耗时
  30. avg: 4.34ms -- 平均耗时
  31. max: 30.58ms -- 最大耗时
  32. approx. 95 percentile: 4.44ms -- 去掉5%的最大最小值,剩余95%平均耗时
  33. Threads fairness:
  34. events (avg/stddev): 10000.0000/0.00
  35. execution time (avg/stddev): 43.4491/0.00

附录: (通用选项)
  1. Usage:
  2. sysbench [general-options]... --test= [test-options]... command
  3. General options:
  4. --num-threads=N number of threads to use [1]
  5. --max-requests=N limit for total number of requests [10000]
  6. --max-time=N limit for total execution time in seconds [0]
  7. --forced-shutdown=STRING amount of time to wait after --max-time before forcing shutdown [off]
  8. --thread-stack-size=SIZE size of stack per thread [64K]
  9. --tx-rate=N target transaction rate (tps) [0]
  10. --report-interval=N periodically report intermediate statistics with a specified interval in seconds. 0 disables intermediate reports [0]
  11. --report-checkpoints=[LIST,...]dump full statistics and reset all counters at specified points in time. The argument is a list of comma-separated values representing the amount of time in seconds elapsed from start of test when report checkpoint(s) must be performed. Report checkpoints are off by default. []
  12. --test=STRING test to run
  13. --debug=[on|off] print more debugging info [off]
  14. --validate=[on|off] perform validation checks where possible [off]
  15. --help=[on|off] print help and exit
  16. --version=[on|off] print version and exit [off]
  17. --rand-init=[on|off] initialize random number generator [off]
  18. --rand-type=STRING random numbers distribution {uniform,gaussian,special,pareto} [special]
  19. --rand-spec-iter=N number of iterations used for numbers generation [12]
  20. --rand-spec-pct=N percentage of values to be treated as 'special' (for special distribution) [1]
  21. --rand-spec-res=N percentage of 'special' values to use (for special distribution) [75]
  22. --rand-seed=N seed for random number generator, ignored when 0 [0]
  23. --rand-pareto-h=N parameter h for pareto distibution [0.2]
  24. Log options:
  25. --verbosity=N verbosity level {5 - debug, 0 - only critical messages} [3]
  26. --percentile=N percentile rank of query response times to count [95]
  27. Compiled-in tests:
  28. fileio - File I/O test
  29. cpu - CPU performance test
  30. memory - Memory functions speed test
  31. threads - Threads subsystem performance test
  32. mutex - Mutex performance test
  33. Commands: prepare run cleanup help version
  34. See 'sysbench --test= help' for a list of options for each test.

转载于:https://www.cnblogs.com/klb561/p/10372151.html

MySQL性能测试工具sysbench的安装和使用相关推荐

  1. Linux 性能测试工具 sysbench 的安装与简单使用

    Linux 性能测试工具 sysbench 的安装与简单使用 一 背景 sysbench是一款开源的多线程性能测试工具,可以执行CPU/内存/线程/IO/数据库等方面的性能测试. sysbench 支 ...

  2. Linux 性能测试工具 sysbench 的安装与简单使用 1

    文章目录 Linux 性能测试工具 sysbench 的安装与简单使用 一 背景 二 实验环境 2.1 操作系统 2.2 其他配置 三 安装 四 简单使用过程 4.1 查看软件版本 4.2 查看系统帮 ...

  3. MySql性能测试工具-sysbench

    转自:MySql性能测试工具-sysbench - 没那么简单的博客 虽然mysql默认的有mysqlslap这个性能测试工具,但和sysbench比较来说,还逊色不少. 下载安装包 https:// ...

  4. php mysql 性能测试工具_MySQL_Sysbench多线程性能测试工具,最近用sysbench进行了较多的性 - phpStudy...

    Sysbench多线程性能测试工具 最近用sysbench进行了较多的性能测试,也总结一下它的特点和用法和需要注意的事项.sysbench是一个多线程性能测试工具,可以进行CPU/内存/IO/数据库等 ...

  5. MySQL 常用工具sysbench/fio/tpcc等测试

    为什么要压力测试 采购新设备,评估新设备性能 开发新项目,评估数据库容量 新系统上线前,预估/模拟数据库负载 更换数据库版本,评估性能变化 关注指标  CPU %wait,%user,%sys 内存 ...

  6. 数据库测压工具Sysbench的安装和使用

    一.下载安装 > curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.rpm.sh | s ...

  7. Mysql备份工具xtrabackup 8 安装图解

    Mysql备份工具xtrabackup安装图解 声明 本文的数据来自网络,部分代码也有所参照,这里做了注释和延伸,旨在技术交流,如有冒犯之处请联系博主及时处理. 注: 当前操作系统CentOS 8.M ...

  8. Linux如何安装iperf软件,Linux 下网络性能测试工具 iperf 的安装和使用

    很久没写文章,iperf 也一直有用,感受不错就记录一下html 说明: OS :CentOS 6.4 x86_64 Server: 192.168.100.55 Client: 192.168.10 ...

  9. 【APP 测试】APP 性能测试工具:MobileRunner 安装

    一.前言 APP 性能测试,尤其是对手机性能的监控,以及自动化测试,都是一个麻烦点,尤其原生代码还区分原生与非原生,市面上大部分好用的工具均需收费,开源工具又对 Android 7.0 以上的版本和 ...

最新文章

  1. 一个1990年代的小故事
  2. WCF分布式开发常见错误(26):Authentication failed
  3. 拦截器Intercepter和过滤器Filter的比较
  4. 机器值计算机组成,计算机组成原理_数据的机器运算.ppt
  5. 深度学习优化器 optimizer 的选择
  6. [蓝桥杯][2019年第十届真题]修改数组(并查集)
  7. hotelling变换_基于Hotelling-T²的偏最小二乘(PLS)中的变量选择
  8. HttpServletBean 、 FrameworkServlet 和 DispatcherServlet 关系
  9. 编写MQTT客户端程序——python
  10. 串口485接法图_rs485通讯接口定义图详解
  11. R语言使用timeROC包计算存在竞争风险情况下的生存资料多时间AUC值、使用cox模型、并添加协变量、R语言使用timeROC包的plotAUCcurve函数可视化多时间生存资料的AUC曲线
  12. 苹果白屏一直显示苹果_苹果手机出现白屏要如何修复
  13. Interactive Path Reasoning on Graph for Conversational Recommendation阅读笔记
  14. 《富爸爸穷爸爸》精髓:穷人思维和富人思维的区别
  15. 入手评测AMD锐龙r7 6800u和酷睿i7 1260p选哪个 r76800u和i71260p对比
  16. ArcGIS字段计算器中的python函数(转发)
  17. 在x86和arm混合部署架构下排查TiKV节点内存占用极高的问题
  18. 代码测试,调试与优化小结
  19. 【图解UDS】UDS汽车诊断标准协议(ISO 14229)带你入门到精通
  20. Sql Server REPLACE函数的使用;SQL中 patindex函数的用法

热门文章

  1. AOF-Redis设计与实现
  2. shell中符号使用
  3. log4j显示hibernate sql参数的配置
  4. 如何初始化一个定长ListT
  5. Effective Java实作toString() - 就是爱Java
  6. [JVM-翻译]揭开java.lang.OutOfMemoryError面纱之一
  7. 云大使推广中的常见热门问题
  8. 网站性能优化思维导图
  9. 从PRISM开始学WPF(四)Prism-Module?
  10. Linux page allocation failure 的问题处理 - zone_reclaim_mode