感谢支持
我们一直在努力

SysBench – 一种系统性能Benchmark

SysBench是一款开源的、跨平台的、模块化的、多线程的性能测试工具,通过高负载地运行在数据库上,可以执行CPU/内存/线程/IO/数据库等方面的性能测试。用于评估操作系统的性能参数。

相关阅读:

SysBench介绍与使用 http://www.linuxidc.com/Linux/2012-11/75054.htm

SysBench 0.4.12安装以及测试 http://www.linuxidc.com/Linux/2011-03/32843.htm

RHEL6 SysBench性能测试 http://www.linuxidc.com/Linux/2012-05/61067.htm

MySQL压力测试工具SysBench 0.4.12的安装 http://www.linuxidc.com/Linux/2011-05/35411.htm

 1          sysbench简介
Sysbench使得我们无需采用真正的复杂的数据库benchmark而获取系统的性能概况。

目前主要支持的数据库有mysql、Oracle、postgresql。

可评估的系统性能参数有:

1.      Cpu性能

2.      内存分配与传输速度测试

3.      互斥体测试

4.      文件I/O性能

5.      线程调度性能

6.      数据库服务性能(OLTP基准)

本来sysbench主要是为mysql编写的benchmark。但是现在SysBench将进一步扩展,以支持更多的数据库backends,distributed benchmarks和第三方插件模块。

sysbench按照指定的数量开启线程,每个线程与mysql建立一个连接,每个线程不停地进行事务操作,打开事务,然后进行一些查询、更新、插入操作,提交事务,再开始新的事务;所有的sql只访问一个表-sbtest,是由sysbench的prepare命令建好的。其中的记录数,也是在prepare时指定好并创建的。测试结束,会有一个统计结果,包括例如每秒事务数、平均响应时间等等;

 

2          sysbench下载与安装
1.下载

下载地址:http://sourceforge.net/projects/sysbench/

获得sysbench-0.4.8.tar.gz源码。sysbench-0.4.8.tar.gz编译未通过。

2.安装

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

[root@RedHat sysbench-0.4.8]# ./configure –without-mysql

[root@RedHat sysbench-0.4.8]# make

[root@RedHat sysbench-0.4.8]# make install
 

 

如果需要测试mysql,则需要配置参数选项:

./configure

–with-mysql-includes=/opt/mysql/include/mysql 表示mysql头文件目录

 –with-mysql-libs=/opt/mysql/lib/mysql表示mysql模块目录

如股票缺少libtool请至ftp://ftp.gnu.org/gnu/libtool/下载

 

3          性能测试与结果分析
请查看sysbench帮助

[root@RedHat sysbench-0.4.8]# sysbench

Missing required command argument.

Usage:

  sysbench [general-options]… –test=<test-name> [test-options]… command

 

General options:

  –num-threads=N            number of threads to use [1]

  –max-requests=N          limit for total number of requests [10000]

  –max-time=N              limit for total execution time in seconds [0]

  –thread-stack-size=SIZE  size of stack per thread [32K]

  –init-rng=[on|off]        initialize random number generator [off]

  –test=STRING              test to run

  –debug=[on|off]          print more debugging info [off]

  –validate=[on|off]        perform validation checks where possible [off]

  –help=[on|off]            print help and exit

 

Compiled-in tests:

  fileio – File I/O test

  cpu – CPU performance test

  memory – Memory functions speed test

  threads – Threads subsystem performance test

  mutex – Mutex performance test

  oltp – OLTP test

 

Commands: prepare run cleanup help

 

See ‘sysbench –test=<name> help’ for a list of options for each test.

 

[root@RedHat sysbench-0.4.8]#
 

其中通用参数

参数名

参数描述

–num-threads=N

测试时使用的线程数,默认为1

–max-requests=N

请求数最大现在,默认10000

-max-time=N

执行时间最大限制,默认为0

–thread-stack-size=SIZE

每个线程的stack大小,默认是32K

–init-rng=[on|off]

是否初始化随机数生成器

–test=STRING

运行的测试

–debug=[on|off]

是否打印更多的debug信息

–validate=[on|off]

是否执行有效性检查

–help=[on|off]

打印帮助并退出

其中–test=STRING中的STRING可选项有:

STRING

描述

fileio

文件IO测试

cpu

CPU性能测试

memory

内存分配与传输速度测试

threads

线程子系统性能测试

mutex

互斥体性能测试

oltp

数据库OLTP测试

1. 文件IO测试

[root@RedHat test]# sysbench –test=fileio help

sysbench v0.4.8:  multi-threaded system evaluation benchmark

fileio options:

  –file-num=N                  number of files to create [128]

  –file-block-size=N          block size to use in all IO operations [16384]

  –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,fastmmap,slowmmap} [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]

  –file-fsync-all=[on|off]    do fsync() after each write operation [off]

  –file-fsync-end=[on|off]    do fsync() at the end of test [on]

  –file-fsync-mode=STRING which method to use for synchronization {fsync, fdatasync} [fsync]

  –file-merged-requests=N merge at most this number of IO requests if poss ible (0- don’t merge) [0]

  –file-rw-ratio=N            reads/writes ratio for combined test [1.5]

 [root@RedHat test]#

参数选项说明:

参数名

描述

–file-num=N

创建的文件数目,默认为128

–file-block-size=N

所有IO操作中的block大小,默认是16384

–file-total-size=SIZE

创建的文件的总大小,默认为2G

–file-test-mode=STRING

测试的访问模式,可选一下6个参数:seqwr(顺序写)/seqrewr(顺序读写)/seqrd(顺序读)/ rndwr(随机写)/rndrw(随机读写)/rndrd(随机读)

–file-io-mode=STRING

文件操作模式,有以下四种选择:sync,async,fastmmap,slowmmap默认为sync

–file-extra-flags=STRING

打开文件是的标识,有以下选择:sync,dsync,direct

–file-fsync-freq=N

N个请求之后执行fsync(),默认值为100,0表示不执行fsync()

–file-fsync-all=[on|off]

是否每一次写操作之后均执行fsync()

–file-fsync-end=[on|off]

在测试结束时执行fsync(),默认开启

–file-fsync-mode=STRING

同步使用什么方法:fsync, fdatasync,默认为fsync

–file-merged-requests=N

尽可能的合并N个请求,0表示不合并,默认为0

–file-rw-ratio=N

读写比例默认为1.51

测试案例:

创建2个进程,创建的文件总大小为3G,文件读写模式为随机读。

可以获取读写速度~

[root@RedHat test]# sysbench –test=fileio –num-threads=2 –file-total-size=512M –file-test-mode=rndrw prepare (准备测试文件)

sysbench v0.4.8: multi-threaded system evaluation benchmark

 

128 files, 4096Kb each, 512Mb total

Creating files for the test…

[root@RedHat test]# sysbench –test=fileio –num-threads=2 –file-total-size=512M –file-test-mode=rndrw run (运行测试)

sysbench v0.4.8: multi-threaded system evaluation benchmark

 

Running the test with following options:

Number of threads: 2

 

Extra file open flags: 0

128 files, 4Mb each

512Mb 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: 6000 Read, 4000 Write, 12800 Other = 22800 Total

Read 93.75Mb Written 62.5Mb Total transferred 156.25Mb (3.2979Mb/sec)

211.07 Requests/sec executed

 

Test execution summary:

total time: 47.3783s

total number of events: 10000

total time taken by event execution: 36.6912

per-request statistics:

min: 0.0000s

avg: 0.0037s

max: 0.2687s

approx. 95 percentile: 0.0230s

 

Threads fairness:

events (avg/stddev): 5000.0000/180.00

execution time (avg/stddev): 18.3456/0.19

 

[root@RedHat test]# sysbench –test=fileio –num-threads=2 –file-total-size=512M –file-test-mode=rndrw cleanup (清除测试文件)

sysbench v0.4.8: multi-threaded system evaluation benchmark

 

Removing test files…

[root@RedHat test]#

2. CPU性能测试

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

[root@RedHat ~]# sysbench –test=cpu help

sysbench v0.4.8: multi-threaded system evaluation benchmark

 

cpu options:

–cpu-max-prime=N upper limit for primes generator [10000]

 

[root@RedHat ~]#

参数解析

参数名

描述

–cpu-max-prime=N

素数的最大限制,默认为10000

测试案例

[root@RedHat ~]# sysbench –test=cpu –cpu-max-prime=20000 run

sysbench v0.4.8: 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: 124.1761s

total number of events: 10000

total time taken by event execution: 123.3658

per-request statistics:

min: 0.0051s

avg: 0.0123s

max: 0.1908s

approx. 95 percentile: 0.0171s

 

Threads fairness:

events (avg/stddev): 10000.0000/0.00

execution time (avg/stddev): 123.3658/0.00

[root@RedHat ~]#

 

3.内存性能测试

 

[root@RedHat ~]# sysbench –test=memory help

sysbench v0.4.8: multi-threaded system evaluation benchmark

 

memory options:

–memory-block-size=SIZE size of memory block for test [1K]

–memory-total-size=SIZE total size of data to transfer [100G]

–memory-scope=STRING memory access scope {global,local} [global]

–memory-hugetlb=[on|off] allocate memory from HugeTLB pool [off]

–memory-oper=STRING type of memory operations {read, write, none} [write]

–memory-access-mode=STRING memory access mode {seq,rnd} [seq]

 

[root@RedHat ~]#

 

参数名

描述

–memory-block-size=SIZE

内存块大小,默认为1K

–memory-total-size=SIZE

传输的数据量,默认为100G

–memory-scope=STRING

内存访问是局部local还是全局global,默认为global

–memory-hugetlb=[on|off]

hugetlb中分配内存

–memory-oper=STRING

内存操作类型read, write, none,默认为写

–memory-access-mode=STRING

内存访问模式seq,rnd,默认为seq

 

[root@RedHat test]# sysbench –test=memory –memory-block-size=4k –memory-total-size=64M run

 

 

4.线程性能测试

 

[root@RedHat ~]# sysbench –test=threads help

sysbench v0.4.8: multi-threaded system evaluation benchmark

 

threads options:

–thread-yields=N number of yields to do per request [1000]

–thread-locks=N number of locks per thread [8]

 

[root@RedHat ~]#

 

参数名

描述

–thread-yields=N

内存块大小,默认为1K

–thread-locks=N

传输的数据量,默认为100G

测试案例

[root@RedHat test]# sysbench –test=threads –num-threads=64 –thread-yields=100 –thread-locks=2 run

sysbench v0.4.8: multi-threaded system evaluation benchmark

 

Running the test with following options:

Number of threads: 64

 

Doing thread subsystem performance test

Thread yields per test: 100 Locks used: 2

Threads started!

Done.

 

Test execution summary:

total time: 24.8159s

total number of events: 10000

total time taken by event execution: 1575.5529

per-request statistics:

min: 0.0002s

avg: 0.1576s

max: 2.0173s

approx. 95 percentile: 0.5627s

 

Threads fairness:

events (avg/stddev): 156.2500/12.62

execution time (avg/stddev): 24.6180/0.08

 

[root@RedHat test]#

 

5互斥体性能测试

 

[root@RedHat ~]# sysbench –test=mutex help

sysbench v0.4.8: multi-threaded system evaluation benchmark

 

mutex options:

–mutex-num=N total size of mutex array [4096]

–mutex-locks=N number of mutex locks to do per thread [50000]

–mutex-loops=N number of empty loops to do inside mutex lock [10000]

 

[root@RedHat ~]#

 

参数名

描述

–mutex-num=N

互斥体数据大小,默认为4096

–mutex-locks=N

每个线程上互斥锁的数目,默认为50000

–mutex-loops=N

互斥锁内空循环的数目,默认为10000

 

测试案例

[root@RedHat test]# sysbench –test=mutex –num-threads=16 –mutex-num=1024 –mutex-locks=10000 –mutex-loops=5000 run

sysbench v0.4.8: multi-threaded system evaluation benchmark

 

Running the test with following options:

Number of threads: 16

 

Doing mutex performance test

Threads started!

Done.

 

Test execution summary:

total time: 0.0482s

total number of events: 16

total time taken by event execution: 0.2271

per-request statistics:

min: 0.0015s

avg: 0.0142s

max: 0.0312s

approx. 95 percentile: 0.0126s

 

Threads fairness:

events (avg/stddev): 1.0000/0.00

execution time (avg/stddev): 0.0142/0.01

[root@RedHat test]#

 

6 OLTP测试

不做分析了

赞(0) 打赏
转载请注明出处:服务器评测 » SysBench – 一种系统性能Benchmark
分享到: 更多 (0)

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

支付宝扫一扫打赏

微信扫一扫打赏