SSD与HDD性能对比测试

准备工作

操作系统:CentOS6.4 64位

D          B:MySQL5.6.22 64位

硬        盘:SSD(Shannon Direct-IO 1.6TB)、HDD

测试工具:sysbench0.5

监控工具:zabix

一、安装sysbench 0.5

sysbench 0.5相比0.4版本的主要变化是,oltp测试结合了lua脚本,不需要修改源码,通过自定义lua脚本就可以实现不同业务类型的测试。同时0.5相比0.4需要消耗更多的cpu资源。

下载sysbench源码包

原来官网  http://sysbench.sourceforge.net 已停用,目前sysbench代码托管在launchpad上https://launchpad.net/sysbench

更新和安装依赖包

yum -y install gcc
yum -y install libtool

安装bzr客户端

yum -y install bzr

在线获取0.5的版本,#下载到当前目录,文件名为: sysbench_0.5

bzr branch lp:sysbench_0.5
cd sysbench_0.5/

运行命令:./autogen.sh,对环境进行清理

./autogen.sh

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

# with-mysql-includes 指定MySQL安装目录

# with-mysql-libs  指定MySQL lib所在目录

make && make install

如果遇到以下错误

../libtool: line 841: X--tag=CC: command not found
../libtool: line 874: libtool: ignoring unknown tag : command not found
../libtool: line 841: X--mode=link: command not found
../libtool: line 1007: *** Warning: inferring the mode of operation is deprecated.: command not found
../libtool: line 1008: *** Future versions of Libtool will require --mode=MODE be specified.: command not found
../libtool: line 2234: X-g: command not found
../libtool: line 2234: X-O2: command not found
../libtool: line 1954: X-L/usr/local/mysqla/lib/: No such file or directory
../libtool: line 2403: Xsysbench: command not found
../libtool: line 2408: X: command not found
../libtool: line 2415: Xsysbench: command not found
../libtool: line 2550: X-lmysqlclient_r: command not found
../libtool: line 2550: X-lrt: command not found
../libtool: line 2550: X-lm: command not found
../libtool: line 2632: X-L/home/sysopt/src/sysbench-0.4.12/sysbench: No such file or directory
../libtool: line 2550: X-lmysqlclient_r: command not found
../libtool: line 2550: X-lrt: command not found
../libtool: line 2550: X-lm: command not found
../libtool: line 2632: X-L/home/sysopt/src/sysbench-0.4.12/sysbench: No such file or directory
../libtool: line 2550: X-lmysqlclient_r: command not found
../libtool: line 2550: X-lrt: command not found
../libtool: line 2550: X-lm: command not found

可能原因:

1、没装依赖包libtool

2、安装的版本不对(libtool版本过旧)

3、其它原因

解决方法:

1、安装依赖包libtool

2、libtoo更新到新版本

3、用autoreconf代替autogen.sh,方法如下:

autoreconf -i
configure
make
make install

安装成功后可通过help命令查看sysbench帮助

[[email protected] src]# sysbench --help
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]#请求数,默认为10000
  --max-time=N                limit for total execution time in seconds [0]#执行时间,默认为0表示表示不限制
  --forced-shutdown=STRING    amount of time to wait after --max-time before forcing shutdown [off]
  --thread-stack-size=SIZE    size of stack per thread [64K]
  --tx-rate=N                 target transaction rate (tps) [0]
  --report-interval=N         periodically report intermediate statistics with a specified interval in seconds. 0 disables intermediate reports [0]#0.5的新增参数(默认值0,表示禁用该功能)在指定的时间间隔报告测试信息,<span style="font-size:12px;">不用等到运行结束时再得到反馈</span>
  --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. []
  --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
  --version=[on|off]          print version and exit [off]
  --rand-init=[on|off]        initialize random number generator [off]#初始化时生成随机的数据,默认关闭
  --rand-type=STRING          random numbers distribution {uniform,gaussian,special,pareto} [special]
  --rand-spec-iter=N          number of iterations used for numbers generation [12]
  --rand-spec-pct=N           percentage of values to be treated as 'special' (for special distribution) [1]
  --rand-spec-res=N           percentage of 'special' values to use (for special distribution) [75]
  --rand-seed=N               seed for random number generator, ignored when 0 [0]
  --rand-pareto-h=N           parameter h for pareto distibution [0.2]

Log options:
  --verbosity=N      verbosity level {5 - debug, 0 - only critical messages} [3]

  --percentile=N      percentile rank of query response times to count [95]

Compiled-in tests:测试项目
  fileio - File I/O test   #磁盘IO测试
  cpu - CPU performance test  #CPU运算性能
  memory - Memory functions speed test #内存分配及传输速度
  threads - Threads subsystem performance test #POSIX线程性能
  mutex - Mutex performance test #互斥性能测试

Commands: prepare run cleanup help version

See 'sysbench --test=<name> help' for a list of options for each test.

二、测试

1.MySQL测试

数据准备

[[email protected] sysbench_0.5]# sysbench --mysql-db=sbtest --num-threads=24 --mysql-engine-trx=yes --mysql-table-engine=innodb --rand-type=special --mysql-host=localhost --mysql-port=3307 --mysql-user=root --mysql-password= --mysql-socket=/data1/lib/mysql/mysql.sock
--test=sysbench/tests/db/oltp.lua --oltp_tables_count=50 --oltp-table-size=10000000 --rand-init=on prepare

参数说明:

--mysql-db:指定在哪个数据库创建测试表,默认为sbtest库,需要提前创建好

--num-threads:使用多线程创建多表,节省准备时间

--mysql-engine-trx=yes 支持事务

--mysql-table-engine:指定存储引擎,如myisam,innodb,heap,ndbcluster,bdb,maria,falcon,pbxt 默认InnoDB

--test=tests/db/oltp.lua 表示调用 tests/db/oltp.lua 脚本进行 oltp 模式测试

--oltp_tables_count=10 表示会生成 10 个测试表

--oltp-table-size=1000000 表示每个测试表填充数据量为 1000000

--db-driver:指定驱动,默认为Mysql

--rand-init=on 表示每个测试表都是用随机数据来填充的

#使用1000个线程开始测试,读写模式。

模拟 对50个表并发OLTP测试,每个表1000万行记录,持续压测时间为 1小时

[[email protected] sysbench_0.5]# sysbench --mysql-engine-trx=yes --mysql-table-engine=innodb --mysql-host=localhost --mysql-port=3307 --mysql-user=root --mysql-password= --mysql-socket=/data1/lib/mysql/mysql.sock --test=sysbench/tests/db/oltp.lua --oltp_tables_count=50
--oltp-table-size=100000000 --num-threads=1000 --oltp-read-only=off --report-interval=10 --rand-type=uniform --max-time=3600 --max-requests=0 --percentile=95 run >>/data1/sysbench-rw.txt

参数说明

--oltp-read-only=off 表示不要进行只读测试,也就是会采用读写混合模式测试

--report-interval=10 表示每10秒输出一次测试进度报告

--rand-type=uniform:数据分布模式,special表示存在热点数据,uniform表示非热点数据模式: uniform(固定),gaussian(高斯),special(特定的),pareto(帕累托)

--max-time=3600 表示最大执行时长为 3600秒

--max-requests=0 表示总请求数为 0,因为上面已经定义了总执行时长,所以总请求数可以设定为 0;也可以只设定总请求数,不设定最大执行时长

--percentile=95 表示设定采样比例,默认是 95%,即丢弃5%的长请求,在剩余的95%里取最大值

可选参数:

--oltp-point-selects:在一个事务里面Point select的数量,默认为10

--oltp-range-size:range查询的范围大小,默认100,应该小于oltp-table-size

--oltp-simple-ranges:在一个事务里面简单range查询的数量,默认1

--oltp-sum-ranges:在一个事务里面SUM range查询的数量,默认1

--oltp-order-ranges:在一个事务里面ORDER range查询的数量,默认1

--oltp-distinct-ranges:在一个事务里面DISTINCT range查询的数量,默认1

注意:我这里将测试中输出信息存放到一个文本文件里,便于用监控展示成图标形式,这样更直观

监控结果:

SSD-IO

HDD-IO

SSD-TPS

HDD-TPS

SSD-writes

HDD-Writes

SSD-reads

HDD-Reads

SSD-Response-time

HDD-Response_time

SSD-errors

HDD-Errors

结论:(监控参数相同的情况下--oltp_tables_count=50 --oltp-table-size=100000000 --num-threads=1000 --oltp-read-only=off --rand-type=uniform )

TPS:MySQL在SSD上运行是在HDD上运行的5.63倍

writes:MySQL在SSD上运行是在HDD上运行的5.58倍

reads:MySQL在SSD上运行是在HDD上运行的5.55倍

Response_time:MySQL在SSD上运行比在HDD上运行响应时间快44.45倍

Errors:MySQL在SSD上运行是在HDD上运行错误率低83.5倍

IO测试(这里就不再上图了)

数据准备(创建70G文件)注意:文件大小需要大于内存大小

sysbench --test=fileio --file-total-size=70G --file-test-mode=rndrw --init-rng=on --max-time=300 --max-requests=0 prepare

测试阶段

sysbench --test=fileio --file-total-size=70G --file-test-mode=rndrw --init-rng=on --max-time=300 --max-requests=0 run

清楚测试数据

sysbench --test=fileio --file-total-size=70G --file-test-mode=rndrw --init-rng=on --max-time=300 --max-requests=0 clean

随机读写混合

SSD

Operations performed:  1789098 reads, 1192732 writes, 3816704 Other= 6798534 Total

Read 27.299Gb  Written 18.2Gb  Total transferred 45.499Gb  (155.3Mb/sec)

9939.43 Requests/sec executed

General statistics:

total time:                         300.0001s

total number of events:             2981830

total time taken by event execution: 214.9376s

response time:

min:                                 0.00ms

avg:                                 0.07ms

max:                                 7.26ms

approx.  95 percentile:               0.23ms

Threads fairness:

events (avg/stddev):          2981830.0000/0.00

execution time (avg/stddev):  214.9376/0.00

HDD

Operations performed:  85851 reads, 57234 writes, 183040 Other =326125 Total

Read 1.31Gb Written 894.28Mb  Totaltransferred 2.1833Gb  (7.4523Mb/sec)

476.95 Requests/sec executed

General statistics:

total time:                          300.0024s

total number of events:             143085

total time taken by event execution: 291.8164s

response time:

min:                                 0.01ms

avg:                                 2.04ms

max:                               170.33ms

approx.  95 percentile:               5.22ms

Threads fairness:

events (avg/stddev):          143085.0000/0.00

execution time (avg/stddev):  291.8164/0.00

随机写

SSD

Operations performed:  0 reads, 10441500 writes, 13365074 Other =23806574 Total

Read 0b Written 159.32Gb  Totaltransferred 159.32Gb  (271.91Mb/sec)

17402.24 Requests/sec executed

General statistics:

total time:                         600.0090s

total number of events:             10441500

total time taken by event execution: 168.8168s

response time:

min:                                 0.00ms

avg:                                 0.02ms

max:                                  0.71ms

approx.  95 percentile:               0.02ms

Threads fairness:

events (avg/stddev):          10441500.0000/0.00

execution time(avg/stddev):   168.8168/0.00

HDD

Operationsperformed:  0 reads, 427200 writes,546689 Other = 973889 Total

Read 0b  Written 6.5186Gb  Total transferred 6.5186Gb  (11.125Mb/sec)

712.00 Requests/sec executed

Generalstatistics:

total time:                          600.0002s

total number of events:              427200

total time taken by event execution:10.5053s

response time:

min:                                  0.01ms

avg:                                  0.02ms

max:                                 29.30ms

approx.  95 percentile:               0.03ms

Threadsfairness:

events (avg/stddev):           427200.0000/0.00

execution time (avg/stddev):   10.5053/0.00

随机读

SSD

Operationsperformed:  3898994 reads, 0 writes, 0Other = 3898994 Total

Read59.494Gb  Written 0b  Total transferred 59.494Gb  (203.07Mb/sec)

12996.64Requests/sec executed

Generalstatistics:

total time:                          300.0001s

total number of events:              3898994

total time taken by event execution:294.7603s

response time:

min:                                  0.00ms

avg:                                  0.08ms

max:                                 30.09ms

approx.  95 percentile:               0.24ms

Threadsfairness:

events (avg/stddev):           3898994.0000/0.00

execution time (avg/stddev):   294.7603/0.00

HDD

Operationsperformed:  131643 reads, 0 writes, 0Other = 131643 Total

Read2.0087Gb  Written 0b  Total transferred 2.0087Gb  (6.8564Mb/sec)

438.81 Requests/sec executed

Generalstatistics:

total time:                          300.0014s

total number of events:              131643

total time taken by event execution:299.7703s

response time:

min:                                  0.00ms

avg:                                  2.28ms

max:                                121.94ms

approx.  95 percentile:               5.34ms

Threadsfairness:

events (avg/stddev):           131643.0000/0.00

execution time (avg/stddev):   299.7703/0.00

结论:

SSD随机读写IO处理能力是HDD随机读写IO处理能力的20倍

时间: 2024-10-18 17:00:38

SSD与HDD性能对比测试的相关文章

文件系统在NVMe SSD上的性能表现分析

文件系统是访问存储的一种常用方式,目前常用的文件系统都是针对磁盘的特性进行设计的.例如,为了解决磁盘随机小数据访问的问题,在文件系统层面引入了Page cache机制,利用内存缓存对这种访问进行加速.大多数业务都会存在数据局部性,因此,通过这种Page cache机制可以很好的提升文件系统的性能.另外,文件系统的数据布局也会考虑磁盘的特性,元数据聚合存放在一起,这样可以高效的实现元数据的存放,避免磁盘抖动.如下图描述,包括文件系统在内的存储软件栈在各个层次都会对磁盘抖动问题进行优化. 在NVMe

(转)HubbleDotNet 和 Lucene.net 性能对比测试

HubbleDotNet 从 2009 年11月份发布第一个版本以来, 只对 0.7 版本做过一次性能对比测试,原因是近一年来,HubbleDotNet一直在做性能优化,截至2010年9月,性能已经优化的差不多了,索引和查询的性能比 0.7 版本时提高了很多倍.这两天重新对HubbleDotNet 与 Lucene.Net 做了性能对比测试.下面就公布一下我的测试数据. 测试版本 HubbleDotNet 0.9.7.0 Lucene.Net 2.9.2.1 盘古分词 2.3.1.0 测试环境

SSD和HDD的区别

SSD与HDD最大的不同是:它没有马达.盘片.磁头摇臂这些HDD必需的机械部件,这是由两种硬盘不同的工作原理所决定的.SSD相比HDD来说节省了机械部件运动的时间,并且SSD所使用的主要存储元件NAND闪存是一种电子元件,因此它的数据传输速度要比HDD快得多. 另外,根据测试,HDD的数据操作时间约95%是花在机械部件运动上,具体可以看几个基本的量级: HDD的数据操作时间主要是由下面这些组成的:1,外部接口传输时间,即从磁盘缓冲到接口传送的时间,量级是110微秒.2,内部接口传送时间,即从磁盘

PostgreSQL介绍及PCIe SSD对其性能的提升效果分析

在关系数据库领域,PostgreSQL是一款非常受欢迎的开源数据库软件.自1996年发布至今,已经积累了近20年的实践经验,不论是PostgreSQL本身还是社区生态都已经非常成熟.不仅是中小企业,很多大型的行业客户也会使用PostgreSQL搭建自己的数据库系统.这篇文章主要对PostgreSQL做一个介绍,并比较了在PCIe SSD(本文使用Memblaze的PBlaze4 PCIe SSD)和硬件RAID聚合的SAS磁盘两种环境下,PostgreSQL数据库的联机事务处理(OLTP)的性能

狗血探索篇,如何发挥出SSD应有的性能

AS_SSD_Benchmark测评大体过程 仅4k对齐,未开启AHIC模式......... 这个200分数当场吓尿.开机1分27s,尼玛,老年机,不能这么吧,博主愤怒了,博主要鲁了!!!博主要给改变这个蛋碎的结果.于是开启了老年机改装之旅.什么是老年机呢?博主大笔一挥,10年之前的笔记本就是了,包括10年.为什么?sata3.0一般在10年之后开启大规模生成,之前一般是sata2.0.他们最大传输为前者600 M/s 后者300 M/s. 本以为自己是"老年机",尼玛,谁知道是老年

机械硬盘与SSD固态硬盘性能的深度

从7200转硬盘升级到10000转的迅猛龙,那叫量变.从10000转的迅猛龙升级到SSD,这个叫质变.2者的差距是有些地方相当大,而有些却很接近,主要是难比较. 经常听到有人说:我买2个黑盘组RAID 0,传输率也有接近250MB/s了,这个速度和Intel X25-M不相上下了,写入还高,容量又大,性价比明显好.一开始还试着会去纠正下他这个错误的观念,后来麻木了.有时候并不是他不懂,可能他是个商家,或者是刚买了黑盘的用户,又或者只是想"炒作"下,世界之大,啥人都会有么. 废话不多说了

MongoDB V3 &amp; V2 版本锁性能对比测试及锁的基本概况

1.mongo锁概况: 各版本锁的特性: 当前版本 生产版本最高是 2.6.7[Production Release (2.6.7)] 开发版本是 3.0.0-rc7[Development Releases (unstable)3.0.0] Version < 2.2 : 只支持进程级锁,一个Mongod实例一个锁. 2.8 >Version >= 2.2 : 支持库级锁,一个db一把锁. 目前3.0.0 支持 collection 级别的锁. ps:Mysql的innoDB和Orac

HAWQ与Hive查询性能对比测试

一.实验目的 本实验通过模拟一个典型的应用场景和实际数据量,测试并对比HAWQ内部表.外部表与Hive的查询性能. 二.硬件环境 1. 四台VMware虚机组成的Hadoop集群.2. 每台机器配置如下:(1)15K RPM SAS 100GB(2)Intel(R) Xeon(R) E5-2620 v2 @ 2.10GHz,双核双CPU(3)8G内存,8GSwap(4)10000Mb/s虚拟网卡 三.软件环境 1. Linux:CentOS release 6.4,核心2.6.32-358.el

MemSQL、SQLFire、Oracle XE性能对比测试

1.软件版本 MemSQL 3.1 Pivotal SQLFire 1.1.2 Oracle 11g XE 2.测试环境 宿主机 OS:Windows 7 64位 专业版 CPU:i7-3770 3.4GHz 内存:16G 硬盘:大于800G VMware虚拟机 OS:CentOS 6.3 64位 内存:16G 其中MemSQL运行于虚拟机,SQLFire和Oracle直接运行于宿主机 SQLFire只开启一个server member 3.DDL MemSQL DROP TABLE t_mai