[转帖]基准测试工具

基准,测试工具 · 浏览次数 : 0

小编点评

**TPC-C测试工具介绍** TPC-C是TPC协会制定的,用来测试典型的复杂OLTP(在线事务处理)系统的性能。目前,在学术界和业界,普遍采用TPC-C来评价OLTP应用的性能。 **TPC-C的性能度量单位** tpmC,tpm是transaction per minute的缩写,C代表TPC的C基准测试。该值越大,代表事务处理的性能越高。 **tpcc_mysql工具** tpcc_mysql是一款开源的TPC-C测试工具,该测试工具完全遵守TPC-C的标准。其官方网站为: ``` https://code.launchpad.net/~percona-dev/perconatools/tpcc-mysql ``` **tpcc_load工具** tpcc_load是一个用于根据仓库数量生成表的数据工具。其使用方法如下: ``` tpcc_loadusage ``` **tpcc_start工具** tpcc_start是一个用于根据不同选项进行tpcc测试的工具。其使用方法如下: ``` tpcc_startusage ```

正文

https://www.cnblogs.com/wade-luffy/p/6344097.html

 

 


基准测试工具可以用来对数据库或者操作系统调优后的性能进行对比。MySQL数据库本身提供了一些比较优秀的工具,这里介绍另外两款更优秀、更常用的工具:sysbench和mysql-tpcc。

sysbench

sysbench是一个模块化的、跨平台的、多线程基准测试工具,主要用于测试各种不同系统参数下的数据库负载情况。

它主要包括以下几种测试方式:

  1. CPU性能。
  2. 磁盘IO性能。
  3. 调度程序性能。
  4. 内存分配及传输速度。
  5. POSIX线程性能。
  6. 数据库OLTP基准测试。

sysbench的数据库OLTP测试支持MySQL、PostgreSQL和Oracle。目前sysbench主要用于Linux操作系统,开源社区已经将sysbench移植到Windows,并支持对Microsoft SQL Server数据库的测试。

sysbench的官网地址是:http://sysbench.sourceforge.net,可以从上述地址下载最新版本的sysbench工具,然后编译和安装。此外,有些Linux操作系统发行版本(如RED HAT),可能本身已经提供了sysbench的安装包,直接安装即可。

对于InnoDB存储引擎的数据库应用来说,我们可能更关心的是磁盘和OLTP的性能,因此主要测试fileio和oltp这两个项目。

对于磁盘的测试,sysbench提供了以下的测试选项:

sysbench --test=fileio help

各个参数的含义如下所示:

--file-num:生成测试文件的数量,默认为128。

--file-block-size:测试期间文件块的大小,如果你想磁盘针对InnoDB存储引擎进行测试,可以将其设置为16 384,即InnoDB存储引擎页的大小。默认为16 384。

--file-total-size:每个文件的大小,默认为2GB。

--file-test-mode:文件测试模式,包含seqwr(顺序写)、seqrewr(顺序读写)、seqrd(顺序读)、rndrd(随机读)、rndwr(随机写)和rndrw(随机读写)。

--file-io-mode:文件操作的模式,同步还是异步,或者选择MMAP(map映射)模式。默认为同步。

--file-extra-flags:打开文件时的选项,这是与API相关的参数。

--file-fsync-freq:执行fsync函数的频率。fsync主要是同步磁盘文件,因为可能有系统和磁盘缓冲的关系。

--file-fsync-all:每执行完一次写操作,就执行一次fsync。默认为off。

--file-fsync-end:在测试结束时执行fsync。默认为on。

--file-fsync-mode:文件同步函数的选择,同样是和API相关的参数,由于多个操作系统对于fdatasync支持的不同,因此不建议使用fdatasync。默认为fsync。

--file-rw-ratio:测试时的读写比例,默认时读写2:1。

sysbench的fileio测试需要经过prepare、run和clean三个阶段。

  1. prepare是准备阶段,生产我们需要的测试文件
  2. run是实际测试阶段
  3. cleanup是清理测试产生的文件

如我们进行16个文件、总大小2GB的fileio测试:

sysbench --test=fileio --file -num=16 --file -total -size=2G prepare

接着在相应的目录下就会产生16个文件了,因为总大小是2GB,所以每个文件的大小应该是128MB:

接着就可以基于这些文件进行测试了,下面是在16个线程下的随机读取性能:

sysbench --test=fileio --file -total -size=2G --file -test -mode=rndrd --max -time=180 --max -requests=100000000 --num -threads=16 --init -rng=on --file -num=16 --file -extra -flags=direct --file -fsync -freq=0 --file -block -size=16384 run

上述测试的最大随机读取请求是100 000 000次,如果在180秒内不能完成,测试即结束。

测试结束后可以看到如下的测试结果:

sysbench --test=fileio --file -total -size=2G --file -test -mode=rndrd --max -time=180 --max -requests=100000000 --num -threads=16 --init -rng=on --file -num=16 --file -extra -flags=direct --file -fsync -freq=0 --file -block -size=16384 run

可以看到随机读取的性能为53.81MB/sec,随机读的IOPS为3443.85。测试的硬盘是固态硬盘,因此随机读取的性能较为强劲。此外还可以看到每次请求的一些具体数据,如最大值、最小值、平均值等。

测试结束后,记得要执行clean,以确保测试所产生的文件都已删除:

sysbench --test=fileio --file -num=16 --file -total -size=2G cleanup

可能你需要测试随机读、随机写、随机读写、顺序写、顺序读等所有这些模式,并且还可能需要测试不同的线程和不同文件块下磁盘的性能表现,这时你可能需要类似如下的脚本来帮你自动完成这些测试:

复制代码
#!/bin/sh
set-u
set-x
set-e
for size in 8G 64G;do
for mode in seqrd seqrw rndrd rndwr rndrw;do
for blksize in 4096 16384;do
sysbench--test=fileio--file-num=64--file-total-size=$size prepare
for threads in 1 4 8 16 32;do
echo"======testing$blksize in$threads threads"
echo PARAMS$size$mode$threads$blksize>sysbench-size-$size-mode-$mode-threads-$threads-blksz-$blksize
for i in 1 2 3;do
sysbench--test=fileio--file-total-size=$size--file-test-mode=$mode\
--max-time=180--max-requests=100000000--num-threads=$threads--init-rng=on\
--file-num=64--file-extra-flags=direct--file-fsync-freq=0--file-block-size=$blksize run\
|tee-a sysbench-size-$size-mode-$mode-threads-$threads-blksz-$blksize 2>&1
done
done
sysbench--test=fileio--file-total-size=$size cleanup
done
done
done
复制代码

对于mysql的OLTP测试,和fileio一样,同样需要经历prepare、run和cleanup的阶段。prepare阶段会根据选项产生一张指定行数的表,默认表在sbtest架构下,表名为sbtest(sysbench默认生成表的存储引擎为InnoDB),如创建一张有8000万条记录的表:

sysbench --test=oltp --oltp -table -size=80000000 --db -driver=mysql --mysql-socket=/tmp/mysql.sock --mysql-user=root prepare

接着就可以根据产生的表进行oltp的测试:

sysbench --test=oltp --oltp -table -size=80000000 --oltp -read -only=off --init -rng=on --num -threads=16 --max -requests=0 --oltp -dist -type=uniform --max -time=3600 --mysql -user=root --mysql -socket=/tmp/mysql.sock --db -driver=mysql run>res

我们将测试结果放入了文件res中。

结果中罗列出了测试时很多操作的详细信息,transactions代表了测试结果的评判标准,即TPS,上述测试的结果是119.9tps。你可以对数据库进行调优后再运行sysbench的oltp测试,看看tps是否有所提高。注意,sysbench的测试只是基准测试,并不代表实际企业环境下的性能指标。

mysql-tpcc

TPC(Transaction Processing Performance Council,事务处理性能协会)是一个评价大型数据库系统软硬件性能的非盈利组织。TPC-C是TPC协会制定的,用来测试典型的复杂OLTP(在线事务处理)系统的性能。目前,在学术界和业界,普遍采用TPC-C来评价OLTP应用的性能。

TPC-C用3NF(第三范式)虚拟实现了一家仓库销售供应商公司,拥有一批分布在不同地方的仓库和地区分公司。当公司业务扩大时,将建立新的仓库和地区分公司。通常每个仓库供货覆盖10家地区分公司,每个地区分公司服务3000名客户。该公司共有100 000种商品,分别储存在各个仓库中。该系统包含了库存管理、销售、分发产品、付款、订单查询等一系列操作,一共包含了9个基本关系,基本关系图如下图所示。

TPC-C的性能度量单位是tpmC,tpm是transaction per minute的缩写,C代表TPC的C基准测试。该值越大,代表事务处理的性能越高。

tpcc-mysql是开源的TPC-C测试工具,该测试工具完全遵守TPC-C的标准。其官方网站为:https://code.launchpad.net/~percona-dev/perconatools/tpcc-mysql。之前tpcc-mysql主要工作在Linux操作系统上,我已经将其移植到了Windows平台,可以在http://code.google.com/p/david-mysql-tools/downloads/list下载到windows版本的tpcc-mysql。

tpcc-mysql由以下两个工具组成:

tpcc_load:根据仓库数量,生成9张表中的数据。

tpcc_start:根据不同选项进行tpcc测试。

tpcc_load命令的使用方法如下所示:tpcc_load

usage:

tpcc_load[server][DB][user][pass][warehouse]

OR

tpcc_load[server][DB][user][pass][warehouse][part][min_wh][max_wh]*[part]:1=ITEMS 2=WAREHOUSE 3=CUSTOMER 4=ORDERS

上述各参数解析如下:

server:导入的MySQL服务器IP。

DB:导入的数据库。

user:mysql的用户名。

pass:mysql的密码。

warehouse:要生产的仓库数量。

如果用tpcc_load工具创建100个仓库的数据库tpcc,可以这样:

mysql tpcc<create_table.sql

mysql tpcc<add_fkey_idx.sql

tpcc_load 127.0.0.1 tpcc2 root xxxxxx 100

tpcc_start命令的使用方法如下所示:tpcc_start

usage:tpcc_start[server][DB][user][pass][warehouse][connection][rampup][measure]

相关参数的作用如下:

connection:测试时的线程数量。

rampup:热身时间,单位为秒,这段时间的操作不计入统计信息。

measure:测试时间,单位为秒。

如我们使用tpcc_start进行16个线程的测试,热身时间为10分钟、测试时间为20分钟,如下代码所示。

tpcc_start 127.0.0.1 tpcc root xxxxxx 100 16 600 1200

在测试的时候,你也许会在终端上看到如下输出:

RAMP-UP TIME.(1 sec.)

MEASURING START.

10,624(0):0.4,624(0):0.2,62(0):0.2,63(0):0.6,62(0):0.8

20,990(0):0.2,988(0):0.2,98(0):0.2,99(0):0.4,98(0):0.6

30,1435(0):0.2,1436(0):0.2,144(0):0.2,143(0):0.2,144(0):0.4

这些信息是每10秒tpcc测试的结果数据,tpcc测试一共测试5个模块,分别是New Order、Payment、Order-Status、Delivery、Stock-Level。

第一个值即为New Order,这也是TPCC测试结果的一个重要考量标准New Order Per 10 Second(每十秒订单处理能力),可以将测试时所有的数据组成一张折线图或散点图,观察InnoDB存储引擎每10秒的性能表现。而tpcc_load最后结束时产生的tpmC,也是通过New Order Per 10 Second来进行的:首先求出New Order Per 10 Second的平均值,然后乘以6,得到的就是最终的tpmC。

与[转帖]基准测试工具相似的内容:

[转帖]基准测试工具

https://www.cnblogs.com/wade-luffy/p/6344097.html 目录 sysbench mysql-tpcc 基准测试工具可以用来对数据库或者操作系统调优后的性能进行对比。MySQL数据库本身提供了一些比较优秀的工具,这里介绍另外两款更优秀、更常用的工具:sysb

[转帖]NTTTCP 网络性能工具使用方法

在两个实例上安装 NTttcp 网络基准测试工具 连接到两个 Windows 实例中的每个实例,然后按照下列步骤操作: 从 Microsoft TechNet 网站下载 NTttcp 。 将该文件的内容解压到一个文件夹。 使用管理员权限打开命令提示符窗口,然后将目录切换到解压 NTttcp 网络基准

[转帖]sysbench安装

https://www.jianshu.com/p/1948beb6699e sysbench是一个多线程的基准测试工具,一般用来评估不同系统参数下的数据库负载情况如果你的环境上如下依赖包都没装上,需要先安装如下这些依赖包,使用yum install更便利 image.png 如果使用源码安装(在网

[转帖]sysbench安装

https://www.jianshu.com/p/1948beb6699e sysbench是一个多线程的基准测试工具,一般用来评估不同系统参数下的数据库负载情况如果你的环境上如下依赖包都没装上,需要先安装如下这些依赖包,使用yum install更便利 image.png 如果使用源码安装(在网

[转帖]Unixbench的使用(综合性能测试、2D测试)和问题解决(跑不出多线程分数,调不出窗口,报错等)

一、Unixbench简介 Unixbench一个基于系统的基准测试工具,不单纯是CPU 内存 或者磁盘测试工具。测试结果不仅仅取决于硬件,也取决于系统、开发库、甚至是编译器。Unixbench是一个老牌的性能测试工具,下载主要是针对Unixbench进行综合性能以及使用Unixbench进行2D性

[转帖]​Linux开源存储漫谈(2)IO性能测试利器fio

fio(Flexible I/O Tester)正是非常常用的文件系统和磁盘 I/O 性能基准测试工具。提供了大量的可定制化选项,可以用来测试,裸盘、一个单独的分区或者文件系统在各种场景下的 I/O 性能,包括了不同块大小、不同 I/O 引擎以及是否使用缓存等场景。 ubuntu安装fio非常简单

[转帖]MioIO读/写性能测试

https://www.jianshu.com/p/a0a84f91b16f image.png COSBench是Intel团队基于java开发,是一个测试云对象存储系统的分布式基准测试工具,全称是Cloud Object Storage Benchmark;由Driver和Controller两

[转帖]SPEC测试arm服务器性能,SPECJVM2008测试处理器性能_服务器评测与技术-中关村在线...

首先,我们使用SPECJVM2008测试最新至强E5处理器的虚拟化性能。 SPECJVM2008是一种通用的多线程Java基准测试工具,它能够反映JRE(Java Runtime Environment)运行Java的环境集合(包含JVM标准实现及Java核心类库)性能表现。该套测试工具主要体现物理

[转帖]Linux性能调优工具-9张图-包你用到爽!抓紧收藏吧

这里包含Linux 性能资料的工具图。这些使用大字体可以用作海报幻灯片。也可以将它们打印出来贴在办公室墙上。它们展示了:Linux 可观察性工具、 Linux 静态性能分析工具、 Linux 基准测试工具、 Linux 调优工具和Linux sar。 性能观察工具: 静态性能工具 性能压测工具: 性

[转帖]pgbench(postgresql压力测试工具)

pgbench 名称 pgbench -- 在PostgreSQL中执行基准线测试 大纲 pgbench -i [option...] [dbname] pgbench [option...] [dbname] 描述 pgbench是一个用于在PostgreSQL数据库中运行基准测试的简单程序。pg