感谢支持
我们一直在努力

RHEL6 Sysbench性能测试

sysbench是一款开源的多线程性能测试工具,可以执行CPU/内存/线程/IO/数据库等方面的性能测试。数据库目前支持MySQL/Oracle/PostgreSQL。本文只是简单演示一下几种测试的用法,具体的一些参数设置,需要根据不同的测试要求来进行调整。
测试环境
Ø  DELL r310 PC Server MEM:16G  RAID0:500G
Ø  RHEL6.1 X86_64
Ø  sysbench-0.4.12
编译安装





wget http://sourceforge.net/projects/sysbench/files/latest/download
# tar zxvf  sysbench-0.4.12.tar.gz
# cd sysbench-0.4.12
# ./configure \
–with-mysql-includes=/usr/local/mysql/include/ \
–with-mysql-libs=/usr/local/mysql/lib/
# make && make install

如果需要测试Oracle/PostgreSQL,则在configure时需要加上–with-oracle或者–with-pgsql参数
参数




# sysbench
测试用例:
sysbench [general-options]… –test=<test-name> [test-options]… command
通用选项:
–num-threads=N           创建测试线程的数目。默认为1.
–max-requests=N          请求的最大数目。默认为10000,0代表不限制。
–max-time=N              最大执行时间,单位是s。默认是0,不限制。
–forced-shutdown=STRING           超过max-time强制中断。默认是off。
–thread-stack-size=SIZE           每个线程的堆栈大小。默认是32K。
–init-rng=[on|off]       在测试开始时是否初始化随机数发生器。默认是off。
–test=STRING             指定测试项目名称。
–debug=[on|off]          是否显示更多的调试信息。默认是off。
–validate=[on|off]       在可能情况下执行验证检查。默认是off。
测试项目:
fileio – File I/O test
cpu – CPU performance test
memory – Memory functions speed test
threads – Threads subsystem performance test
mutex – Mutex performance test(互斥性能测试)
oltp – OLTP test (联机事务处理系统)
指令: prepare(测试前准备工作) run(正式测试) cleanup(测试后删掉测试数据) help version
See ‘sysbench –test=<name> help’ for a list of options for each test. 查看每个测试项目的更多选项列表。

 




# ./sysbench –test=fileio help
–file-num=N   创建测试文件的数量。默认是128
–file-block-size=N  测试时文件块的大小。默认是16384(16K)
–file-total-size=SIZE   测试文件的总大小。默认是2G
–file-test-mode=STRING  文件测试模式{seqwr(顺序写), seqrewr(顺序读写), seqrd(顺序读), rndrd(随机读), rndwr(随机写), rndrw(随机读写)}
–file-io-mode=STRING   文件操作模式{sync(同步),async(异步),fastmmap(快速map映射),slowmmap(慢map映射)}。默认是sync
–file-extra-flags=STRING   使用额外的标志来打开文件{sync,dsync,direct} 。默认为空
–file-fsync-freq=N   执行fsync()的频率。(0–不使用fsync())。默认是100
–file-fsync-all=[on|off] 每执行完一次写操作就执行一次fsync。默认是off
–file-fsync-end=[on|off] 在测试结束时才执行fsync。默认是on
–file-fsync-mode=STRING  使用哪种方法进行同步{fsync, fdatasync}。默认是fsync
–file-merged-requests=N   如果可以,合并最多的IO请求数(0–表示不合并)。默认是0
–file-rw-ratio=N     测试时的读写比例。默认是1.5

 




# sysbench –test=cpu help
–cpu-max-prime=N  最大质数发生器数量。默认是10000

 




# sysbench –test=memory help
–memory-block-size=SIZE  测试时内存块大小。默认是1K
–memory-total-size=SIZE    传输数据的总大小。默认是100G
–memory-scope=STRING    内存访问范围{global,local}。默认是global
–memory-hugetlb=[on|off]  从HugeTLB池内存分配。默认是off
–memory-oper=STRING     内存操作类型。{read, write, none} 默认是write
–memory-access-mode=STRING存储器存取方式{seq,rnd} 默认是seq

 




# sysbench –test=threads help
–thread-yields=N   每个请求产生多少个线程。默认是1000
–thread-locks=N    每个线程的锁的数量。默认是8

 




# sysbench –test=mutex help
–mutex-num=N    数组互斥的总大小。默认是4096
–mutex-locks=N    每个线程互斥锁的数量。默认是50000
–mutex-loops=N    内部互斥锁的空循环数量。默认是10000

 




# sysbench –test=oltp help
oltp options:
–oltp-test-mode=STRING    执行模式{simple,complex(advanced transactional),nontrx(non-transactional),sp}。默认是complex
–oltp-reconnect-mode=STRING 重新连接模式{session(不使用重新连接。每个线程断开只在测试结束),transaction(在每次事务结束后重新连接),query(在每个 SQL语句执行完重新连接),random(对于每个事务随机选择以上重新连接模式)}。默认是session
–oltp-sp-name=STRING   存储过程的名称。默认为空
–oltp-read-only=[on|off]  只读模式。Update,delete,insert语句不可执行。默认是off
–oltp-skip-trx=[on|off]   省略begin/commit语句。默认是off
–oltp-range-size=N      查询范围。默认是100
–oltp-point-selects=N          number of point selects [10]
–oltp-simple-ranges=N          number of simple ranges [1]
–oltp-sum-ranges=N             number of sum ranges [1]
–oltp-order-ranges=N           number of ordered ranges [1]
–oltp-distinct-ranges=N        number of distinct ranges [1]
–oltp-index-updates=N          number of index update [1]
–oltp-non-index-updates=N      number of non-index updates [1]
–oltp-nontrx-mode=STRING   查询类型对于非事务执行模式{select, update_key, update_nokey, insert, delete} [select]
–oltp-auto-inc=[on|off]      AUTO_INCREMENT是否开启。默认是on
–oltp-connect-delay=N     在多少微秒后连接数据库。默认是10000
–oltp-user-delay-min=N    每个请求最短等待时间。单位是ms。默认是0
–oltp-user-delay-max=N    每个请求最长等待时间。单位是ms。默认是0
–oltp-table-name=STRING  测试时使用到的表名。默认是sbtest
–oltp-table-size=N         测试表的记录数。默认是10000
–oltp-dist-type=STRING    分布的随机数{uniform(均匀分布),Gaussian(高斯分布),special(空间分布)}。默认是special
–oltp-dist-iter=N    产生数的迭代次数。默认是12
–oltp-dist-pct=N    值的百分比被视为’special’ (for special distribution)。默认是1
–oltp-dist-res=N    ‘special’的百分比值。默认是75
General database options:
–db-driver=STRING  指定数据库驱动程序(‘help’ to get list of available drivers)
–db-ps-mode=STRING编制报表使用模式{auto, disable} [auto]
Compiled-in database drivers:
–mysql – MySQL driver
mysql options:
–mysql-host=[LIST,…]       MySQL server host [localhost]
–mysql-port=N                MySQL server port [3306]
–mysql-socket=STRING         MySQL socket
–mysql-user=STRING           MySQL user [sbtest]
–mysql-password=STRING       MySQL password []
–mysql-db=STRING             MySQL database name [sbtest]
–mysql-table-engine=STRING   storage engine to use for the test table {myisam,innodb,bdb,heap,ndbcluster,federated} [innodb]
–mysql-engine-trx=STRING     whether storage engine used is transactional or not {yes,no,auto} [auto]
–mysql-ssl=[on|off]          use SSL connections, if available in the client library [off]
–myisam-max-rows=N           max-rows parameter for MyISAM tables [1000000]
–mysql-create-options=STRING additional options passed to CREATE TABLE []

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




# sysbench –test=cpu –cpu-max-prime=20000 run
sysbench 0.4.12:  multi-threaded system evaluation benchmark
Running the test with following options:
Number of threads: 1
Doing CPU performance benchmark
Threads started!
Done.
Maximum prime number checked in CPU test: 20000
Test execution summary:
    total time:                          27.3193s
    total number of events:              10000
    total time taken by event execution: 27.3180
    per-request statistics:
         min:                                  2.73ms
         avg:                                  2.73ms
         max:                                  3.09ms
         approx.  95 percentile:               2.73ms
 
Threads fairness:
    events (avg/stddev):           10000.0000/0.00
    execution time (avg/stddev):   27.3180/0.00 

 
2、线程数测试
thread-locks小于线程数除以2,lock越少,处理时间越长




# sysbench –test=threads –num-threads=512 –thread-yields=100 –thread-locks=2 run
sysbench 0.4.12:  multi-threaded system evaluation benchmark
 
Running the test with following options:
Number of threads: 512
Doing thread subsystem performance test
Thread yields per test: 100 Locks used: 2
Threads started!
Done.
Test execution summary:
    total time:                          0.2999s
    total number of events:              10000
    total time taken by event execution: 143.0588
    per-request statistics:
         min:                                  0.03ms
         avg:                                 14.31ms
         max:                                290.74ms
         approx.  95 percentile:              86.57ms
 
Threads fairness:
    events (avg/stddev):           19.5312/15.16
    execution time (avg/stddev):   0.2794/0.01

 
3、磁盘IO性能测试
文件的大小:测试文件的大小应该大于内存,如果测试数据过小,内存缓存文件数据,则不能表示为一种i/o密集型的工作负载;
测试模式:
rndrw:合并的随机读写
rndwr:随机写入
rndrd:随机读取
seqrewr:顺序重写
seqwr:顺序写
 
生成测试文件à
首先生成需要的测试文件,文件总大小18G(DELL 服务器内存为16G),16个并发线程,随机读写模式。执行完后会在当前目录下生成一堆小文件:




# sysbench –test=fileio –num-threads=16 –file-total-size=18G –file-test-mode=rndrw prepare
sysbench 0.4.12:  multi-threaded system evaluation benchmark
 
128 files, 147456Kb each, 18432Mb total
Creating files for the test…

 
开始测试à




# sysbench –test=fileio –num-threads=16 –file-total-size=18G –file-test-mode=rndrw run
sysbench 0.4.12:  multi-threaded system evaluation benchmark
 
Running the test with following options:
Number of threads: 16
 
Extra file open flags: 0
128 files, 144Mb each
18Gb 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:  5999 Read, 4001 Write, 12800 Other = 22800 Total
Read 93.734Mb  Written 62.516Mb  Total transferred 156.25Mb  (3.0139Mb/sec)
  192.89 Requests/sec executed
 
Test execution summary:
    total time:                          51.8439s
    total number of events:              10000
    total time taken by event execution: 42.6517
    per-request statistics:
         min:                                  0.00ms
         avg:                                  4.27ms
         max:                               1194.64ms
         approx.  95 percentile:              18.29ms
 
Threads fairness:
    events (avg/stddev):           625.0000/94.90
    execution time (avg/stddev):   2.6657/0.45

i/o子系统调整的主要信息:每秒的请求数量和总体的吞吐量:每秒192.89 个请求,每秒3.0139Mb传输量。
 
清理现场à




# sysbench –test=fileio –num-threads=16–file-total-size=18G –file-test-mode=rndrw cleanup
sysbench 0.4.12:  multi-threaded system evaluation benchmark
Removing test files…

 
4、内存测试
下面的参数指定了本次测试整个过程是在内存中传输 4G 的数据量,每个block大小为8K。




# sysbench –test=memory –num-threads=64 –memory-block-size=8192 –memory-total-size=4G run
sysbench 0.4.12:  multi-threaded system evaluation benchmark
Running the test with following options:
Number of threads: 64
Doing memory operations speed test
Memory block size: 8K
Memory transfer size: 4096M
 
Memory operations type: write
Memory scope type: global
Threads started!
Done.
 
Operations performed: 524288 (942532.69 ops/sec)
 
4096.00 MB transferred (7363.54 MB/sec)
Test execution summary:
    total time:                          0.5563s
    total number of events:              524288
    total time taken by event execution: 21.2037
    per-request statistics:
         min:                                  0.00ms
         avg:                                  0.04ms
         max:                                478.24ms
         approx.  95 percentile:               0.00ms
 
Threads fairness:
    events (avg/stddev):           8192.0000/6258.63
    execution time (avg/stddev):   0.3313/0.06

 5、Mutex测试
测试mutex




# sysbench –test=mutex –num-threads=1500 –max-requests=2000 –mutex-num=10240 –mutex-locks=100000 –mutex-loops=15000 run
sysbench 0.4.12:  multi-threaded system evaluation benchmark
Running the test with following options:
Number of threads: 1500
Doing mutex performance test
Threads started!
Done.
Test execution summary:
    total time:                          26.3937s
    total number of events:              1500
    total time taken by event execution: 37270.9321
    per-request statistics:
         min:                              19545.19ms
         avg:                              24847.29ms
         max:                              26349.79ms
         approx.  95 percentile:           26145.33ms
 
Threads fairness:
events (avg/stddev):           1.0000/0.00
execution time (avg/stddev):   24.8473/1.27

 
6、MySQL数据库测试
首先需要创建默认的sbtest数据库,或者使用–mysql-db指定一个已经存在的数据库
生成测试数据,引擎为myisam,表大小为1000000条记录




# sysbench –test=oltp –mysql-table-engine=myisam –oltp-table-size=1000000 –mysql-user=root –mysql-socket=/var/run/mysqld/mysql5.socket prepare
sysbench 0.4.12:  multi-threaded system evaluation benchmark
 
No DB drivers specified, using mysql
Creating table ‘sbtest’…
Creating 1000000 records in table ‘sbtest’…
 
# mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 14087
Server version: 5.5.20-ndb-7.2.5-log Source distribution
 
Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license
 
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.
 
mysql> desc sbtest.sbtest;
+——-+——————+——+—–+———+—————-+
| Field | Type             | Null | Key | Default | Extra          |
+——-+——————+——+—–+———+—————-+
| id    | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| k     | int(10) unsigned | NO   | MUL | 0       |                |
| c     | char(120)        | NO   |     |         |                |
| pad   | char(60)         | NO   |     |         |                |
+——-+——————+——+—–+———+—————-+
4 rows in set (0.00 sec)
mysql>

 
执行测试à




# sysbench –test=oltp –mysql-table-engine=myisam –oltp-table-size=1000000 –mysql-user=root –mysql-socket=/var/run/mysqld/mysql5.socket runsysbench
sysbench 0.4.12:  multi-threaded system evaluation benchmark
 
No DB drivers specified, using mysql
Running the test with following options:
Number of threads: 1
 
Doing OLTP test.
Running mixed OLTP test
Using Special distribution (12 iterations,  1 pct of values are returned in 75 pct cases)
Using “LOCK TABLES WRITE” for starting transactions
Using auto_inc on the id column
Maximum number of requests for OLTP test is limited to 10000
Threads started!
Done.
 
OLTP test statistics:
    queries performed:
        read:                            140000
        write:                           50000
        other:                           20000
        total:                           210000
    transactions:                        10000  (534.56 per sec.)
    deadlocks:                           0      (0.00 per sec.)
    read/write requests:                 190000 (10156.56 per sec.)
    other operations:                    20000  (1069.11 per sec.)
—-事务数总计,每秒的事务处理量
Test execution summary:
    total time:                          18.7071s
    total number of events:              10000
    total time taken by event execution: 18.6649
    per-request statistics:
         min:                                  1.68ms
         avg:                                  1.87ms
         max:                                  2.64ms
         approx.  95 percentile:               1.95ms
每个请求的统计信息
Threads fairness:线程权重信息,工作负荷如何被均匀分配
    events (avg/stddev):           10000.0000/0.00
    execution time (avg/stddev):   18.6649/0.00

 
清理现场à




# sysbench –test=oltp –mysql-table-engine=myisam –oltp-table-size=1000000 –mysql-user=root –mysql-socket=/var/run/mysqld/mysql5.socket cleanup
sysbench 0.4.12:  multi-threaded system evaluation benchmark
 
No DB drivers specified, using mysql
Dropping table ‘sbtest’…
Done.

赞(0) 打赏
转载请注明出处:服务器评测 » RHEL6 Sysbench性能测试
分享到: 更多 (0)

听说打赏我的人,都进福布斯排行榜啦!

支付宝扫一扫打赏

微信扫一扫打赏