首页 技术 正文
技术 2022年11月19日
0 收藏 615 点赞 2,259 浏览 28211 个字

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版本太低,需要替换。

选项说明(通用):

MySQL性能测试工具sysbench的安装和使用

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 #IO
cpu - CPU performance test #CPU
memory - 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. #查看每个测试项目的更多选项列表

MySQL性能测试工具sysbench的安装和使用

更多选项:
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

MySQL性能测试工具sysbench的安装和使用

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

MySQL性能测试工具sysbench的安装和使用

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

MySQL性能测试工具sysbench的安装和使用

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

MySQL性能测试工具sysbench的安装和使用

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

MySQL性能测试工具sysbench的安装和使用

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

MySQL性能测试工具sysbench的安装和使用

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 []

MySQL性能测试工具sysbench的安装和使用

测试: 
1)测试CPU: sysbench –test=cpu –cpu-max-prime=2000 run

MySQL性能测试工具sysbench的安装和使用

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.7155s
total number of events: 10000
total time taken by event execution: 3.7041
per-request statistics:
min: 0.36ms
avg: 0.37ms
max: 2.53ms
approx. 95 percentile: 0.37msThreads fairness:
events (avg/stddev): 10000.0000/0.00
execution time (avg/stddev): 3.7041/0.00

MySQL性能测试工具sysbench的安装和使用

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

MySQL性能测试工具sysbench的安装和使用

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.0644s
total number of events: 10000
total time taken by event execution: 501.3952
per-request statistics:
min: 0.05ms
avg: 50.14ms
max: 587.05ms
approx. 95 percentile: 190.28msThreads fairness:
events (avg/stddev): 20.0000/4.72
execution time (avg/stddev): 1.0028/0.01

MySQL性能测试工具sysbench的安装和使用

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

MySQL性能测试工具sysbench的安装和使用

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.4534s
total number of events: 10007
total time taken by event execution: 111.5569
per-request statistics:
min: 0.01ms
avg: 11.15ms
max: 496.18ms
approx. 95 percentile: 53.05msThreads fairness:
events (avg/stddev): 500.3500/37.50
execution 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...

MySQL性能测试工具sysbench的安装和使用

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

MySQL性能测试工具sysbench的安装和使用

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

MySQL性能测试工具sysbench的安装和使用

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

MySQL性能测试工具sysbench的安装和使用

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

MySQL性能测试工具sysbench的安装和使用

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

MySQL性能测试工具sysbench的安装和使用

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: 140000
write: 50000
other: 20000
total: 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.0130s
total number of events: 10000
total time taken by event execution: 447.7731
per-request statistics:
min: 3.91ms
avg: 44.78ms
max: 207.61ms
approx. 95 percentile: 76.48msThreads fairness:
events (avg/stddev): 625.0000/22.96
execution 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性能测试工具sysbench的安装和使用

测试表信息:

MySQL性能测试工具sysbench的安装和使用

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

MySQL性能测试工具sysbench的安装和使用

可以用这个测试:

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 drivermysql 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-50535565977
pad: 63188288836-92351140030-06390587585-66802097351-49282961843
*************************** 2. row ***************************
 id: 2
  k: 49910688
  c: 95969429576-20587925969-20202408199-67602281819-18293380360-38184587501-73192830026-41693404212-56705243222-89212376805
pad: 09512147864-77936258834-40901700703-13541171421-15205431759
*************************** 3. row ***************************
 id: 3
  k: 50204693
  c: 26283585383-48610978532-72166636310-67148386979-89643583984-06169170732-23477134062-17788128188-73465768032-24619558652
pad: 21979564480-87492594656-60524686334-78820761788-57684966682
*************************** 4. row ***************************
 id: 4
  k: 52180295
  c: 72200234338-75748118569-08939863650-01688814841-36798767826-71560494483-89421079440-11810718401-29133837777-68338627243
pad: 80945118876-33522718290-51523426562-15979384524-91541356971
*************************** 5. row ***************************
 id: 5
  k: 41395699
  c: 29279855805-99348203463-85191104223-39587263726-81794340135-73817557808-54578801760-64404111877-55434439976-37212880746
pad: 59222897263-22759023974-22020489960-93434521232-77981152534
5 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.
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,918
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,444
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,255
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,069
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,701
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,741