sysbench-1.0.14使用说明

一、软件功能介绍

sysbench是基于LuaJIT开发的多线程基准测试工具,被广泛的用于数据库基准测试, 但也可以用于创建负载环境。sysbench的cpu测试是在指定时间内,循环进行素数计算 素数(也叫质数)就是从1开始的自然数中,无法被整除的数,比如2、3、5、7、11、13、17等。 编程公式:对正整数n,如果用2到根号n之间的所有整数去除,均无法整除,则n为素数。

  • sysbench可以实现如下基准测试:
  • oltp_*.lua: OLTP类的数据库基准测试;
  • fileio:文件系统的(IO)基准测试;
  • cpu: 简单的CPU基准测试;
  • memory: 内存访问基准测试;
  • threads: 基于线程的调度基准测试;
  • mutex: POSIX互斥量基准测试;

sysbench能够生成和跟踪每秒数百亿次事件。

》》》》》》》》》》安装篇》》》》》》》》》》 对MySQL5.6及以后或MySQL Cluster7.3及以后的版本用sysbench-1.0测试,之前的用sysbench-0.4.8.tar测试;

二、安装包及脚本下载

GITHub: https://github.com/akopytov/sysbench

1、安装方法1:yum安装

在页中位置的‘Installing from Binary Packages’里有各个平台安装说明。

下载并执行环境监测脚本: curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.rpm.sh | sudo bash

通过yum安装sysbench sudo yum -y install sysbench

2、安装方法2:源码安装

在页中位置的‘Building and Installing From Source’里有说明。 手动下载最新版本,不要master(主干)版本,要已发布的,本说明使用1.0版本。 具体安装步骤如下。

三、依赖包安装

安装需要的依赖包 yum -y install make automake libtool pkgconfig libaio-devel

安装对MySQL支持的包(安装这个) yum -y install mysql-devel

安装对mariadb支持的包(这里不使用) yum -y install mariadb-devel

安装对PostgreSQL支持的包(这里不使用) yum -y install postgresql-devel

四、解压源码包

unzip sysbench-1.0.14zip

五、编译安装

cd sysbench-1.0

1)执行按之前对环境监测及自动配置

./autogen.sh

2)编译前配置:

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

--prefix==>指定安装路径,默认会自动在/usr/local/下生成sysbench这个目录。

备注: 1、./configure --help 可查看帮助 2、默认支持MySQL,如果MySQL不是默认安装的,需要指定MySQL头文件(--with-mysql-includes)和库文件位置(--with-mysql-libs) 3、如果要支持PostgreSQL需要添加--with-pgsql选项 4、如果不需要对MySQL做支持,则使用--without-mysql参数; 5、如果不是对数据库做测试(当然也就没有安装什么数据库了),那么除去数据库相关的脚本功能,其他功能都可用; 6、源码文件夹中README.md为安装说明,README-Oracle.md为Oracle的支持安装说明

3)编译

make -j

4)安装

make install

六、配置环境变量

vim /etc/profile
export PATH=$PATH:/usr/local/sysbench/bin
source /etc/profile

七、验证

sysbench --help

如果出现如下错误:

[root@localhost bin]# sysbench --help
sysbench: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No such file or directory

则需要在环境变量中指定mysql的lib库位置:

vim /etc/profile
export LD_LIBRARY_PATH=/usr/local/mysql/lib
source /etc/profile

如果没有问题,到此安装完毕!!

》》》》》》》》》》使用篇》》》》》》》》》》

一、语法

sysbench [options]... [testname] [command] 

options ==>一个或多个命令行的列表,它们以'--'开头。 testname ==>它是一个可选的内部测试项名称(例如:fileio,memory,cpu等),或者是绑定了Lua脚本的名称(如:oltp_read_only), 亦或者是自定义Lua脚本名。如没有指定testname也就没有对应的命令被执行(因为testname还和用例名对应着),这时sysben将执行默认的测试。 command ==>它是一个可选的参数项,它将被转递给前面testname。它定义了测试将要执行的动作。可用的命令取决于要执行的测试项。默写测试项实现了自己的命令。

下面是典型的测试命令及其描述: prepare: 为要执行的测试做测试前准备,如为fileio测试创建磁盘上的必要文件,为数据库基准测试填充测试数据库。 run: 执行由testname及参数指定的测试项。 cleanup: 清除之前执行测试生成的测试数据。 help: 显示由testname及参数指定的测试使用信息,其中包括了指定测试项的完整的可用命令列表。

二、通用命令行选项

sysbench --help ==>显示所以命令行的帮助信息

下表列出支持的命令选项及其描述、默认值

--threads ==>要创建的并发线程数,默认为1; --events ==>列出总的请求数限制,默认为0即不限制; --time ==>指定执行测试的时间限制,默认为10,0为不限制; --rate ==>平均事务率,指定所有线程每秒执行的事物总数,默认为0即不限制,越快越好; --thread-stack-size ==>指定每个线程栈的大小,默认32K; --report-interval ==>指定统计数据输出时间间隔,单位秒。此项产生的统计数据不是累计的,是每间隔的。默认为0,即禁止输出。 --debug ==>打印调试信息,默认off; --validate ==>在可能的情况下对测试结果进行验证,默认off; --help ==>对语法或在使用--test的测试模式下显示帮助并退出。

--forced-shutdown ==>超过max-time强制中断, 默认是off --report-checkpoints=[LIST,...]==>转储完全统计信息并在指定时间点复位所有计数器。 参数是逗号分隔值的列表,表示从必须执行报告检查点的测试开始 所经过的时间(以秒为单位)。默认情况下,报告检查点处于关闭状态 --config-file=FILENAME ==>通过文件指定测试参数配置

备注:涉及到空间大小的选项,要指定对应的单位(K\M\G)。

伪随机数发生器的选择: --rand-type ==>随机数分布方式,[uniform 均匀、gaussian 高斯(正态分布)、special 特定的、pareto 帕累托(2\8分布)],默认special --rand-spec-iter==>数字生成的迭代次数,默认12; --rand-spec-pct ==>被用于'special'处理的数据百分比(special分布),默认1; --rand-spec-res ==>'special'分布的值中被使用的百分比(special分布),默认75; --rand-seed ==>随机数生成器的种子,当为0时,当前时间被用作RNG种子。 --rand-pareto-h ==>帕累托分布的H参数,默认0.2;

日志选项: --verbosity ==>信息显示级别,0只显示致命级别信息,5显示debug信息。默认为4。 --percentile==>指定查询执行时间的百分比级别,默认95%;(95%的查询用的时间值) --histogram ==>在报表中打印响应时间直方图

数据库选项: --db-driver ==>指定使用的数据库驱动,默认mysql,使用help查看可用的驱动列表; --db-ps-mode==>prepared语句使用的模式{auto, disable},默认auto; 如设置为disable则效果就是每个线程会一直使用一个会话来执行所有SQL;否则每个线程在每次执行SQL时都重新连入MySQL。 --db-debug ==>打印数据库特有的调试信息,默认off;

mysql选项: --mysql-host ==>被测mysql服务的ip地址,默认localhost --mysql-port ==>被测mysql服务的端口,默认3306 --mysql-socket ==>被测mysql服务的socket --mysql-user ==>测试mysql服务的用户,默认sbtest --mysql-password==>测试mysql服务的密码,默认空 --mysql-db ==>被测试库名,默认sbtest --mysql-ssl ==>使用SSL连接,默认off --mysql-ssl-cipher ==>使用SSL连接的秘密 --mysql-compression==>使用压缩,默认off --mysql-debug ==>跟踪所有客户端库调用,默认off --mysql-ignore-errors==>列出要忽略的错误的编号列表,all是全部,[LIST,...] --mysql-dry-run ==>干运行,假设所有的MySQL客户端API调用都是成功的,而不用执行它们,默认off;

已编译的内部测试(用例): fileio ==>文件I/O测试 cpu ==>CPU性能测试 memory ==>内存功能速率测试 threads==>线程子系统性能测试 mutex ==>互斥量性能测试

备注:使用sysbench <testname> help查看每个用例的帮助信息。

三、执行OLTP测试

特别说明: 1)在安装完成后生成的(--prefix指定的目录)/share/sysbench/目录下有许多OLTP相关的测试脚本可供选择,脚本名就是testname。 2)构建测试数据相关参数可以使用sysbench <testname> help来查看,或者修改安装完成后生成的 share/sysbench/oltp_common.lua文件。

1、创建测试数据库:

create database sbtest;

2、创建测试用户

create user dbtest@'%' identified by '123456';
grant all privileges on sbtest.* to dbtest@'%';
flush privileges;

3、查看帮助信息:

sysbench oltp_write_only help	==>所有oltp测试脚本的帮助信息都一样。

sysbench 1.0.14 (using bundled LuaJIT 2.1.0-beta2)
oltp_write_only options:
  --auto_inc[=on|off]			==>使用 AUTO_INCREMENT列作为主键(MySQL),其他DBMS使用相应得自增列做主键;当禁用时,使用客户端生成ID做主键,默认[on]。
  --create_secondary[=on|off]	==>创建辅助所以,默认[on]
  --delete_inserts=N			==>每个事务包含的DELETE/INSERT操作得数量,默认[1]
  --distinct_ranges=N			==>每个事务包含的SELECT DISTINCT查询的数量,默认[1]
  --index_updates=N				==>每个事务包含的有索引的UPDATE的数量,默认[1]
  --mysql_storage_engine=STRING	==>MySQL存储引擎,默认[innodb]
  --non_index_updates=N			==>每个事务包含的无索引的UPDATE的数量,默认[1]
  --order_ranges=N				==>每个事务包含的SELECT ORDER BY查询的数量,默认[1]
  --pgsql_variant=STRING		==>使用PostgreSQL驱动程序运行时使用此PostgreSQL变种。目前唯一支持的变体是'redshift'。启用后,将自动禁用create_secondary,并将delete_inserts设置为0。
  --point_selects=N				==>每个事务包含的等值查询的数量,默认[10]
  --range_selects[=on|off]		==>启用/停用 范围查询,默认[on]
  --range_size=N				==>范围查询时,指定的范围大小,默认[100]
  --secondary[=on|off]			==>使用辅助索引代替主键,默认[off]
  --simple_ranges=N				==>每个事务包含的简单范围查询的数量,默认[1]
  --skip_trx[=on|off]			==>在AUTOCOMMIT模式下,不显示开启事务而且执行所有查询,默认[off]
  --sum_ranges=N				==>每个事务包含的SELECT SUM()的数量,默认[1]
  --table_size=N				==>每个表包含的行数,默认[10000]
  --tables=N					==>表的数量,默认[1]

4、测试建议:

下面是使用sysbench的一些建议: 1)、在开始测试之前,应该首先明确:应采用针对整个系统的基准测试,还是针对MySQL的基准测试,还是二者都需要。 2)、如果需要针对MySQL的基准测试,那么还需要明确精度方面的要求:是否需要使用生产环境的真实数据,还是使用工具生成也可以; 前者实施起来更加繁琐。如果要使用真实数据,尽量使用全部数据,而不是部分数据。 3)、基准测试要进行多次才有意义。 4)、测试时需要注意主从同步的状态。 5)、测试必须模拟多线程的情况,单线程情况不但无法模拟真实的效率,也无法模拟阻塞甚至死锁情况。 6)、每轮测试完成后,都重启mysqld实例,并且用下面的方法删除系统cache,释放swap(如果用到了swap的话),甚至可以重启整个OS。

# sync  -- 将脏数据刷新到磁盘
# echo 3 > /proc/sys/vm/drop_caches  -- 清除OS Cache
# swapoff -a && swapon -a     -- 清除OS swap缓存

5、OLTP测试数据准备

5个表,每个表500W数据

sysbench oltp_common --mysql_storage_engine=innodb --db-driver=mysql --mysql-host=10.0.212.0 --mysql-port=3306 \
--mysql-user=dbtest --mysql-password=123456 --mysql-db=sbtest --threads=8 --table_size=5000000 --tables=5  prepare

6、OLTP测试

1)oltp_write_only ==>只写测试 测试5个innodb表每个500W 8线程300s的并发写入

sysbench oltp_write_only --mysql_storage_engine=innodb --db-driver=mysql --mysql-host=10.0.212.0 --mysql-port=3306 \
--mysql-user=dbtest --mysql-password=123456 --mysql-db=sbtest --threads=8 --table_size=5000000 --tables=5 \
--time=300 --histogram --report-interval=10 --db-ps-mode=disable run

备注:如果使用了--db-ps-mode=disable则不会执行prepare语句。

2)其他OLTP测试用例: 备注: 1>测试时只需更换开头的测试用例名称即可; 2>由于MGR在对大事务支持和事务冲突检测上的限制和不足,导致对MGR直接并行压测是不可能的。Oracle官方的Multi-Primary Mode测试是在每个结点上, 对不同的测试库进行压测,即这样可以避免了工具无法并行压测的问题,同时,这样也减少了冲突的可能性。切记,Multi-Primary Mode一定要避免热点数据冲突的场景。

例如MGR集群中有3个节点,分别为A、B、C;那么,压测时需要建立至少3个库;这样每个sysbench压测都使用1个线程来测试一个库,并且同时启动多个sysbench来测试。 可以这样测试: A节点:

sysbench oltp_write_only ... --mysql-user=dbtest1 ...

B节点:

sysbench oltp_write_only ... --mysql-user=dbtest2 ...

C节点:

sysbench oltp_write_only ... --mysql-user=dbtest3 ...

不过对Multi-Primary Mode压测并不会有一个很好的结果,因为热点太过集中,会导致提交失败很多,或许反而会导致了性能的下降。

oltp_read_only ==>只读测试 oltp_read_write ==>读写测试

oltp_insert ==>简单插入测试 bulk_insert ==>批量插入测试

oltp_delete ==>delete删除测试

oltp_update_index ==>带索引的更新测试 oltp_update_non_index ==>不带索引的更新测试

oltp_point_select ==>等值查询测试 select_random_points ==>随机等值查询测试 select_random_ranges ==>随机范围查询测试

7、清除测试数据:

sysbench oltp_common --mysql_storage_engine=innodb --db-driver=mysql --mysql-host=10.0.212.0 --mysql-port=3306 \
--mysql-user=dbtest --mysql-password=123456 --mysql-db=sbtest --threads=8 --table_size=5000000 --tables=5 cleanup

8、测试报告关注:

TPS:每秒处理事务数,如:淘宝11.11 几十万TPS,小公司500以下 QPS:每秒处理请求数,增删改查请求; 游戏领域:1张2000W的表,500个线程并发,最大请求数量2000W的读写混合测试,要avg<10ms!!

#报告内容如下:
sysbench 1.0.14 (using bundled LuaJIT 2.1.0-beta2)

Running the test with following options:
Number of threads: 8
Report intermediate results every 10 second(s)
Initializing random number generator from current time


Initializing worker threads...

Threads started!  -- 线程启动

-- 每10秒钟报告一次测试结果,tps、qps、每10秒内读、每10秒内写、其他操作、99%以上的响应时长统计
[ 10s ] thds: 8 tps: 1268.61 qps: 7615.07 (r/w/o: 0.00/5076.64/2538.42) lat (ms,95%): 9.73 err/s: 0.40 reconn/s: 0.00
[ 20s ] thds: 8 tps: 1316.89 qps: 7902.83 (r/w/o: 0.00/5268.86/2633.98) lat (ms,95%): 9.22 err/s: 0.20 reconn/s: 0.00
[ 30s ] thds: 8 tps: 1376.95 qps: 8262.82 (r/w/o: 0.00/5508.51/2754.31) lat (ms,95%): 8.90 err/s: 0.40 reconn/s: 0.00
[ 40s ] thds: 8 tps: 1374.08 qps: 8244.95 (r/w/o: 0.00/5496.40/2748.55) lat (ms,95%): 9.06 err/s: 0.40 reconn/s: 0.00
[ 50s ] thds: 8 tps: 1328.17 qps: 7970.01 (r/w/o: 0.00/5313.37/2656.64) lat (ms,95%): 9.39 err/s: 0.30 reconn/s: 0.00
[ 60s ] thds: 8 tps: 1386.86 qps: 8319.77 (r/w/o: 0.00/5546.24/2773.52) lat (ms,95%): 8.90 err/s: 0.20 reconn/s: 0.00
[ 70s ] thds: 8 tps: 1369.29 qps: 8216.06 (r/w/o: 0.00/5477.38/2738.69) lat (ms,95%): 9.06 err/s: 0.00 reconn/s: 0.00
[ 80s ] thds: 8 tps: 1370.33 qps: 8223.50 (r/w/o: 0.00/5482.54/2740.97) lat (ms,95%): 8.90 err/s: 0.00 reconn/s: 0.00
[ 90s ] thds: 8 tps: 1354.04 qps: 8124.53 (r/w/o: 0.00/5416.16/2708.38) lat (ms,95%): 9.06 err/s: 0.30 reconn/s: 0.00
[ 100s ] thds: 8 tps: 1348.60 qps: 8091.17 (r/w/o: 0.00/5394.18/2696.99) lat (ms,95%): 9.06 err/s: 0.00 reconn/s: 0.00
[ 110s ] thds: 8 tps: 1328.88 qps: 7973.77 (r/w/o: 0.00/5315.71/2658.06) lat (ms,95%): 9.39 err/s: 0.10 reconn/s: 0.00
[ 120s ] thds: 8 tps: 1340.61 qps: 8044.37 (r/w/o: 0.00/5362.94/2681.42) lat (ms,95%): 9.06 err/s: 0.30 reconn/s: 0.00

--响应时间、次数柱状图
Latency histogram (values are in milliseconds)
    value  ------------- distribution ------------- count    
    1.891 |                                           1      
    1.925 |                                           2      
    1.960 |                                           4      
    1.996 |                                           4      
    2.032 |                                           5      
    2.069 |                                           14     
    2.106 |                                           24     
    2.145 |                                           19     
    2.184 |                                           26     
    2.223 |                                           25     
    2.264 |*                                          50     
    2.305 |*                                          62     
    2.347 |*                                          83     
    2.389 |*                                          90     
    2.433 |*                                          122    
    2.477 |*                                          145    
    2.522 |**                                         172    
    2.568 |**                                         200    
    2.615 |**                                         237    
    2.662 |***                                        308    
    2.710 |****                                       361    
    2.760 |****                                       412    
    2.810 |****                                       416    
    2.861 |*****                                      489    
    2.913 |******                                     584    
    2.966 |******                                     634    
    3.020 |********                                   741    
    3.075 |********                                   805    
    3.130 |*********                                  899    
    3.187 |**********                                 955    
    3.245 |***********                                1096   
    3.304 |*************                              1262   
    3.364 |*************                              1304   
    3.425 |***************                            1487   
    3.488 |****************                           1612   
    3.551 |******************                         1757   
    3.615 |*******************                        1845   
    3.681 |********************                       1981   
    3.748 |*********************                      2103   
    3.816 |***********************                    2275   
    3.885 |*************************                  2439   
    3.956 |**************************                 2540   
    4.028 |****************************               2738   
    4.101 |****************************               2794   
    4.176 |******************************             2949   
    4.252 |********************************           3141   
    4.329 |*********************************          3280   
    4.407 |**********************************         3369   
    4.487 |***********************************        3425   
    4.569 |************************************       3511   
    4.652 |*************************************      3613   
    4.737 |*************************************      3641   
    4.823 |************************************       3591   
    4.910 |****************************************   3932   
    4.999 |**************************************     3786   
    5.090 |***************************************    3838   
    5.183 |****************************************   3951   
    5.277 |***************************************    3850   
    5.373 |****************************************   3915   
    5.470 |*************************************      3666   
    5.570 |*************************************      3702   
    5.671 |*************************************      3607   
    5.774 |************************************       3583   
    5.879 |***********************************        3453   
    5.986 |***********************************        3467   
    6.095 |**********************************         3388   
    6.205 |*******************************            3082   
    6.318 |******************************             2978   
    6.433 |******************************             2973   
    6.550 |****************************               2803   
    6.669 |***************************                2650   
    6.790 |*************************                  2498   
    6.913 |***********************                    2287   
    7.039 |**********************                     2210   
    7.167 |********************                       1973   
    7.297 |********************                       1974   
    7.430 |******************                         1767   
    7.565 |*****************                          1683   
    7.702 |****************                           1557   
    7.842 |**************                             1383   
    7.985 |**************                             1373   
    8.130 |************                               1193   
    8.277 |************                               1173   
    8.428 |**********                                 969    
    8.581 |*********                                  932    
    8.737 |*********                                  862    
    8.895 |********                                   779    
    9.057 |*******                                    735    
    9.222 |*******                                    646    
    9.389 |******                                     606    
    9.560 |*****                                      506    
    9.734 |*****                                      471    
    9.910 |*****                                      448    
  10.090 |****                                       377     
  10.274 |****                                       355     
  10.460 |***                                        322     
  10.651 |***                                        304     
  10.844 |***                                        247     
  11.041 |**                                         203     
  11.242 |**                                         194     
  11.446 |**                                         167     
  11.654 |*                                          142     
  11.866 |**                                         149     
  12.081 |*                                          119     
  12.301 |*                                          126     
  12.524 |*                                          94      
  12.752 |*                                          88      
  12.984 |*                                          114     
  13.219 |*                                          83      
  13.460 |*                                          74      
  13.704 |*                                          72      
  13.953 |*                                          52      
  14.207 |*                                          58      
  14.465 |                                           49      
  14.728 |*                                          53      
  14.995 |                                           47      
  15.268 |                                           48      
  15.545 |                                           32      
  15.828 |                                           37      
  16.115 |                                           36      
  16.408 |                                           46      
  16.706 |                                           35      
  17.010 |                                           33      
  17.319 |                                           37      
  17.633 |                                           43      
  17.954 |                                           47      
  18.280 |                                           34      
  18.612 |                                           36      
  18.950 |                                           34      
  19.295 |                                           29      
  19.645 |                                           17      
  20.002 |                                           30      
  20.366 |                                           23      
  20.736 |                                           25      
  21.112 |                                           26      
  21.496 |                                           21      
  21.886 |                                           21      
  22.284 |                                           11      
  22.689 |                                           24      
  23.101 |                                           21      
  23.521 |                                           20      
  23.948 |                                           6       
  24.384 |                                           14      
  24.827 |                                           16      
  25.278 |                                           17      
  25.737 |                                           14      
  26.205 |                                           16      
  26.681 |                                           16      
  27.165 |                                           17      
  27.659 |                                           13      
  28.162 |                                           10      
  28.673 |                                           12      
  29.194 |                                           8       
  29.725 |                                           8       
  30.265 |                                           8       
  30.815 |                                           9       
  31.375 |                                           7       
  31.945 |                                           7       
  32.525 |                                           4       
  33.116 |                                           2       
  33.718 |                                           8       
  34.330 |                                           5       
  34.954 |                                           5       
  35.589 |                                           7       
  36.236 |                                           4       
  36.894 |                                           3       
  37.565 |                                           4       
  38.247 |                                           4       
  38.942 |                                           6       
  39.650 |                                           2       
  40.370 |                                           2       
  41.104 |                                           2       
  41.851 |                                           3       
  42.611 |                                           2       
  43.385 |                                           1       
  44.173 |                                           2       
  44.976 |                                           4       
  45.793 |                                           1       
  46.625 |                                           2       
  47.472 |                                           1       
  51.018 |                                           6       
  51.945 |                                           4       
  52.889 |                                           7       
  53.850 |                                           12      
  54.828 |                                           12      
  55.824 |                                           22      
  56.839 |                                           25      
  57.871 |                                           26      
  58.923 |                                           46      
  59.993 |*                                          54      
  61.083 |                                           40      
  62.193 |*                                          54      
  63.323 |*                                          55      
  64.474 |                                           47      
  65.645 |                                           46      
  66.838 |                                           31      
  68.053 |                                           37      
  69.289 |                                           32      
  70.548 |                                           18      
  71.830 |                                           16      
  73.135 |                                           18      
  74.464 |                                           17      
  75.817 |                                           27      
  77.194 |                                           11      
  78.597 |                                           8       
  80.025 |                                           9       
  81.479 |                                           8       
  82.959 |                                           6       
  84.467 |                                           5       
  86.002 |                                           5       
  87.564 |                                           5       
  89.155 |                                           5       
  90.775 |                                           7       
  92.424 |                                           1       
  95.814 |                                           3       
  97.555 |                                           1       
  99.327 |                                           3       
102.969 |                                           4        
104.840 |                                           3        
106.745 |                                           7        
108.685 |                                           1        
110.659 |                                           3        
112.670 |                                           3        
114.717 |                                           2        
116.802 |                                           10       
118.924 |                                           6        
121.085 |                                           16       
123.285 |                                           3        
125.525 |                                           4        
130.128 |                                           3        
132.492 |                                           5        
134.899 |                                           2        
137.350 |                                           1        
139.846 |                                           3        
142.387 |                                           1        
144.974 |                                           4        
147.608 |                                           4        
150.290 |                                           3        
204.114 |                                           5        
207.823 |                                           3               
 
SQL statistics:  --SQL统计
    queries performed:
        read:                            0       -- 读总数
        write:                           646611  -- 写总数
        other:                           323312  -- 其他操作总数(SELECT、INSERT、UPDATE、DELETE之外的操作,例如COMMIT等)
        total:                           969923  -- 全部总数
    transactions:                        161643 (1346.83 per sec.)  -- 总事务数(每秒事务数)TPS
    queries:                             969923 (8081.51 per sec.)  -- 总请求数(每秒请求数)QPS
    ignored errors:                      26     (0.22 per sec.)     -- 忽略的总错误数(每秒忽略的错误数)
    reconnects:                          0      (0.00 per sec.)     -- 重连总数(每秒重连数)

General statistics: --一般统计
    total time:                          120.0165s  -- 总耗时
    total number of events:              161643     -- 共发生多少事务数

Latency (ms):   -- 响应时间
         min:                                    1.90  -- 最小耗时
         avg:                                    5.94  -- 平均耗时
         max:                                  208.35  -- 最长耗时
         95th percentile:                        9.06  -- 95%的测试平均耗时
         sum:                               959723.32  -- 总耗时

Threads fairness:  -- 线程的稳定性
    events (avg/stddev):           20205.3750/37.94  -- 事件(平均值/偏差)
    execution time (avg/stddev):   119.9654/0.01     -- 执行时间(平均值/偏差)

四、CPU测试:

sysbench采用寻找最大素数的方式来测试CPU的性能

1、查看帮助信息

sysbench cpu help

2、默认测试

默认参数,素数上限10000,时间10秒,单线程

sysbench cpu run

3、指定参数测试

sysbench cpu --cpu-max-prime=10000 --threads=8 run

4、常用参数

--cpu-max-prime: 素数生成数量的上限 -若设置为3,则表示2、3、5(这样要计算1-5共5次) -若设置为10,则表示2、3、5、7、11、13、17、19、23、29(这样要计算1-29共29次) -默认值为10000

--threads: 线程数 -若设置为,则 sysbench 仅启动个线程进行素数的计算 -若设置为 2 ,则 sysbench 会启动 2 个线程,同时分别进行素数的计算 -默认值为

--time: 运行时长,单位秒 -若设置为5,则sysbench会在5秒内循环往复进行素数计算,从输出结果可以看到在5秒内完成了几次, 比如配合--cpu-max-prime=3,则表示第一轮算得3个素数,如果时间还有剩就再进行一轮素数计算,直到时间耗尽。 每完成一轮就叫一个event -默认值为10 -相同时间,比较的是谁完成的event多

--events: event上限次数 -若设置为100,则表示当完成100次event后,即使时间还有剩,也停止运行 -默认值为0,则表示不限event次数 -相同event次数,比较的是谁用时更少

5、案例结果分析

素数上限2万,时间10秒,2个线程

sysbench cpu --cpu-max-prime=20000 --threads=2 run

结果分析

sysbench 1.0.9 (using system LuaJIT 2.0.4) 

Running the test with following options : 
Number of threads : 2 // 指定线程数为2 
Initializing random number generator from current time 
Prime numbers limit : 20000 // 每个线程产生的素数上限均为2万个 
Initializing worker threads ... 

Threads started !

CPU speed :
	events per second : 650.74 // 所有线程每秒完成了650.74次event
	
General statistics :
	total time : 10.0017s // 共耗时10秒
	total number of events : 6510 // 10秒内所有线程一共完成了6510次event
	
Latency (ms ):
	min : 3.03 // 完成1次event的最少耗时3.03秒
	avg : 3.07 // 所有event的平均耗时3.07毫秒
	max : 3.27 // 完成1次event的最多耗时3.27毫秒
	95th percentile : 3.13 // 95%次event在3.13秒毫秒内完成
	sum : 19999.91 // 每个线程耗时10秒,2个线程叠加耗时就是20秒
	
Threads fairness :
	events (avg / stddev ): 3255.0000 / 44.00 // 平均每个线程完成3255次event,标准差为44
	execution time (avg / stddev ): 10.0000 / 0.00 // 每个线程平均耗时10秒,标准差为0

备注: event: 完成了几轮的素数计算 stddev(标准差): 在相同时间内,多个线程分别完成的素数计算次数是否稳定,如果数值越低,则表示多个线程的结果越接近(即越稳定)。该参数对于单线程无意义。

6、结果分析

如果有2台服务器进行CPU性能对比,当素数上限和线程数一致时: 相同时间,比较event 相同event,比较时间 时间和event都相同,比较stddev(标准差)

五、文件系统测试

可以对比不同raid卡raid模式、不同文件系统、不同系统分区格式、不同IO下磁盘的性能; 由于其模拟了innodb的IO特点,所以更能表现出innodb的性能特点。要注意,测试时保证 测试的数据文件要大于内存,不然测试的都是缓存了。

1、查看帮助信息

sysbench fileio help

2、数据准备

sysbench fileio --file-total-size=1G prepare

3、执行测试

sysbench fileio --file-total-size=1G --file-test-mode=rndrw --report-interval=1 --threads=8 run

--file-test-mode=rndrw ==>混合随机读写模式,更贴近数据库实际情况。 --num-threads ==>并发进程数 --report-interval ==>输出统计信息时间间隔

4、清除测试文件

sysbench fileio cleanup

六、内存测试

1、查看帮助信息

sysbench memory help

2、执行测试

sysbench memory --memory-block-size=16K --memory-total-size=2G --threads=8 run

七、线程测试

1、查看帮助信息

sysbench threads help

2、执行测试

sysbench threads --thread-yields=1000 --thread-locks=10 --threads=8 run

八、互斥量测试

1、查看帮助信息

sysbench mutex help

2、执行测试

sysbench mutex --mutex-num=4096  --mutex-locks=50000 --mutex-loops=10000 --threads=8 run

完毕!