前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >云硬盘性能测试

云硬盘性能测试

原创
作者头像
苏欣
发布于 2019-10-10 09:43:41
发布于 2019-10-10 09:43:41
12.1K10
代码可运行
举报
运行总次数:0
代码可运行

云硬盘是一种高可用、高可靠、低成本、可定制化的网络块存储,可作为云服务器的独立可扩展硬盘使用。它提供数据块级别的数据存储,采用三副本的分布式机制,为云服务器提供数据可靠性保证。云硬盘提供以下 SSD 云硬盘高性能云硬盘普通云硬盘三种云硬盘类型,不同的硬盘类型、性能、特点和价格均不同。

  • SSD 云硬盘:SSD 云硬盘是基于全 NVMe SSD 存储介质,采用三副本的分布式机制,提供低时延、高随机 IOPS、高吞吐量的 I/O 能力及数据安全性高达99.9999999%的高性能存储。SSD 云硬盘适用于对 I/O 性能有较高要求的场景。
  • 高性能云硬盘:高性能云硬盘是腾讯云推出的混合型存储类型,通过 Cache 机制提供接近固态存储的高性能存储能力,同时采用三副本的分布式机制保障数据可靠性。高性能云硬盘适用于高数据可靠性要求、普通中度性能要求的中小型应用和 MySQLSQL Server等中小型关系数据库应用的场景。
  • 普通云硬盘:普通云硬盘是腾讯云提供的上一代云硬盘类型,适用于数据不经常访问的低 I/O 负载的业务场景。采用磁介质作为存储介质,采用三副本的分布式机制实现高可靠的数据存储。

SSD 云硬盘高性能云硬盘普通云硬盘的性能指标分别为:

SSD 云硬盘

高性能云硬盘

普通云硬盘

随机 IOPS

最大随机 IOPS = 1800 + 存储容量(GB)× 30且最大随机 IOPS 不超过26000

最大随机 IOPS = 1800 + 存储容量(GB)× 8且最大随机 IOPS 不超过6000

提供10GB - 16000GB的规格选择,以及数百随机 IOPS 性能

吞吐量(MB/s)

最大吞吐量 = 120 + 存储容量(GB)× 0.2且最大吞吐量不超过260MB/s

最大吞吐量 = 100 + 存储容量(GB)× 0.15且最大吞吐量不超过150MB/s

支持50MB/s的 I/O 吞吐性能

时延

<3ms

<4ms

-

云硬盘性能测试

由于不同应用程序的工作负载不同,若未提供足够的 I/O 请求来充分利用云硬盘时,可能无法达到云硬盘的最大性能。 一般使用以下指标衡量云硬盘的性能:

  • IOPS:每秒读/写次数,单位为次(计数)。存储设备的底层驱动类型决定了不同的 IOPS。
  • 吞吐量:每秒的读写数据量,单位为MB/s。
  • 时延:I/O 操作的发送时间到接收确认所经过的时间,单位为秒。

测试工具

FIO 是测试磁盘性能的工具,用来对硬件进行压力测试和验证,本文以 FIO 为例。 使用 FIO 时,建议配合使用 libaio 的 I/O 引擎进行测试。请您自行安装 FIO 和 libaio。

警告:

  • 请不要在系统盘上进行 FIO 测试,避免损坏系统重要文件
  • 为避免底层文件系统元数据损坏导致数据损坏,请不要在业务数据盘上进行测试。
  • 请确保/etc/fstab文件配置项中没有被测硬盘的挂载配置,否则将导致云服务器启动失败。

测试对象建议

  • 建议在空闲的、未保存重要数据的硬盘上进行 FIO 测试,并在测试完后重新制作被测硬盘的文件系统。
  • 测试硬盘性能时,建议直接测试裸数据盘(如 /dev/vdb)。
  • 测试文件系统性能时,推荐指定具体文件测试(如 /data/file)。

测试示例

不同场景的测试公式基本一致,只有 rw、iodepth 和 bs(block size)三个参数的区别。例如,每个工作负载适合最佳 iodepth 不同,取决于您的特定应用程序对于 IOPS 和延迟的敏感程度。

参数说明:

参数名

说明

取值样例

bs

每次请求的块大小。取值包括4k,8k,16k等。

4k

ioengine

I/O 引擎。推荐使用 Linux 的异步 I/O 引擎。

libaio

iodepth

请求的 I/O 队列深度。

1

direct

指定 direct 模式。True(1)表示指定 O_DIRECT 标识符,忽略 I/O 缓存,数据直写。False(0)表示不指定 O_DIRECT 标识符。默认为 True(1)。

1

rw

读写模式。取值包括顺序读(read)、顺序写(write)、随机读(randread)、随机写(randwrite)、混合随机读写(randrw)和混合顺序读写(rw,readwrite)。

read

time_based

指定采用时间模式。无需设置该参数值,只要 FIO 基于时间来运行。

N/A

runtime

指定测试时长,即 FIO 运行时长。

600

refill_buffers

FIO 将在每次提交时重新填充 I/O 缓冲区。默认设置是仅在初始时填充并重用该数据。

N/A

norandommap

在进行随机 I/O 时,FIO 将覆盖文件的每个块。若给出此参数,则将选择新的偏移量而不查看 I/O 历史记录。

N/A

randrepeat

随机序列是否可重复,True(1)表示随机序列可重复,False(0)表示随机序列不可重复。默认为 True(1)。

0

group_reporting

多个 job 并发时,打印整个 group 的统计值。

N/A

name

job 的名称。

fio-read

size

I/O 测试的寻址空间。

100GB

filename

测试对象,即待测试的磁盘设备名称。

/dev/sdb

常见用例如下:

bs = 4k iodepth = 1:随机读/写测试,能反映硬盘的时延性能

执行以下命令,测试硬盘的随机读时延。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
fio -bs=4k -ioengine=libaio -iodepth=1 -direct=1 -rw=randread -time_based -runtime=600  -refill_buffers -norandommap -randrepeat=0 -group_reporting -name=fio-randread-lat --size=10G -filename=/dev/vdb
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
fio -bs=4k -ioengine=libaio -iodepth=1 -direct=1 -rw=randwrite -time_based -runtime=600  -refill_buffers -norandommap -randrepeat=0 -group_reporting -name=fio-randwrite-lat --size=10G -filename=/dev/vdb
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
fio --bs=4k --ioengine=libaio --iodepth=1 --direct=1 --rw=randrw --time_based --runtime=100 --refill_buffers --norandommap --randrepeat=0 --group_reporting --name=fio-read --size=1G --filename=/dev/vdb 
高性能云盘随机读写的延迟测试结果
高性能云盘随机读写的延迟测试结果

bs = 128k iodepth = 32:顺序读/写测试,能反映硬盘的吞吐性能

执行以下命令,测试硬盘的顺序读吞吐带宽。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
fio -bs=128k -ioengine=libaio -iodepth=32 -direct=1 -rw=read -time_based -runtime=600  -refill_buffers -norandommap -randrepeat=0 -group_reporting -name=fio-read-throughput --size=10G -filename=/dev/vdb

执行以下命令,测试硬盘的顺序写吞吐带宽。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
fio -bs=128k -ioengine=libaio -iodepth=32 -direct=1 -rw=write -time_based -runtime=600  -refill_buffers -norandommap -randrepeat=0 -group_reporting -name=fio-write-throughput --size=10G -filename=/dev/vdb

fio -bs=128k -ioengine=libaio -iodepth=32 -direct=1 -rw=write -time_based -runtime=100 -refill_buffers -norandommap -randrepeat=0 -group_reporting -name=fio-write-throughput --size=1G -filename=/dev/vdb

高性能云盘顺序读吞吐性能测试结果
高性能云盘顺序读吞吐性能测试结果

bs = 4k iodepth = 32:随机读/写测试,能反映硬盘的 IOPS 性能

执行以下命令,测试硬盘的随机读 IOPS。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
fio -bs=4k -ioengine=libaio -iodepth=32 -direct=1 -rw=randread -time_based -runtime=600  -refill_buffers -norandommap -randrepeat=0 -group_reporting -name=fio-randread-iops --size=10G -filename=/dev/vdb
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
fio -bs=4k -ioengine=libaio -iodepth=32 -direct=1 -rw=randwrite -time_based -runtime=600  -refill_buffers -norandommap -randrepeat=0 -group_reporting -name=fio-randwrite-iops --size=10G -filename=/dev/vdb

测试高性能云硬盘的随机写 IOPS 性能。如下图所示:

fio -bs=4k -ioengine=libaio -iodepth=32-direct=1-rw=randwrite -time_based -runtime=100-refill_buffers -norandommap -randrepeat=0-group_reporting -name=fio-randwrite-iops --size=1G -filename=/dev/vdb

高性能云盘随机写IOPS性能
高性能云盘随机写IOPS性能

测试结果指标介绍

io= 执行了多少M的IO

bw= 平均IO带宽

iops=   IOPS

runt= 线程运行时间

slat 提交延迟

clat 完成延迟

lat响应时间

bw 带宽

cpu利用率

IO depths=io队列

IO submit=单个IO提交要提交的IO数

IO complete= Like the above submit number, but for completions instead.

IO issued= The number of read/write requests issued, and how many

of them were short.

IO latencies=IO完延迟的分布

io= 总共执行了多少size的IO

aggrb= group总带宽

minb= 最小.平均带宽.

maxb= 最大平均带宽.

mint= group中线程的最短运行时间.

maxt= group中线程的最长运行时间.

ios= 所有group总共执行的IO数.

merge= 总共发生的IO合并数.

ticks= Number of ticks we kept the disk busy.

io_queue= 花费在队列上的总共时间.

util= 磁盘利用率

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
1 条评论
热度
最新
写的不错!学到东西了!
写的不错!学到东西了!
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
Windows磁盘性能压测(2)-Fio
有关Windows磁盘性能压测,笔者还是强烈推荐使用微软自己开源的压测工具DiskSpd。当然,如果要使用其他磁盘性能压测工具也是可以的,比如:IOMeter(老牌经典)、FIO(更适合Linux)等。
雷龙
2021/06/17
10.9K5
Windows磁盘性能压测(2)-Fio
FIO使用场景总结
https://help.aliyun.com/document_detail/147897.html
mingjie
2022/05/12
6290
磁盘性能测试
fio --name=RR --filename=/dev/sda --ioengine=libaio --direct=1 --thread=1 --numjobs=1 --iodepth=128 --rw=randread --bs=4k --runtime=5m --time_based=1 --group_reporting >> 4k_rand_read.log
风起--追风
2023/12/04
4190
Linux下 fio磁盘压测笔记
参考博客: http://lilinji.blog.51cto.com/5441000/1569623
保持热爱奔赴山海
2019/09/18
7.4K0
Linux下 fio磁盘压测笔记
Fio工具详解【强大的IO性能压测工具】
​ 是否使用 direct io,测试过程不使用OS 自带的buffer,使测试磁盘的结果更真实。Linux读写的时候,内核维护了缓存,数据先写到缓存,后面在后台写到SSD。读的时候也优先读缓存里的数据。这样速度可以加快,但是一旦掉电,缓存里的数据就没有了。所以有一种模式叫做direct io,跳过缓存,直接读写SSD。
233333
2023/09/03
3.9K0
如何快速对磁盘的性能进行压力测试
介绍:FIO是测试IOPS的非常好的工具,用来对硬件进行压力测试和验证,支持多种不同的I/O引擎,包括:sync,mmap, libaio, posixaio, SG v3, splice, null, network, syslet, guasi, solarisaio 等等
Linux运维技术之路
2022/06/07
2.3K0
如何快速对磁盘的性能进行压力测试
windows磁盘压测工具
磁盘压测工具理论上都有损坏文件系统的可能,如果盘里有数据,压测前一定先做快照,压测完毕后回滚快照还原回去,确保不因压测磁盘丢数据。
Windows技术交流
2021/11/29
2.4K0
Linux 中使用 Fio 测评硬盘性能
Fio(Flexible I/O Tester) 是一款由 Jens Axboe 开发的用于测评和压力/硬件验证的自由开源的软件。它支持 19 种不同类型的 I/O 引擎 (sync、mmap、libaio、posixaio、SG v3、splice、null、network、 syslet、guasi、solarisaio,以及更多), I/O 优先级(针对较新的 Linux 内核),I/O 速度,fork 的任务或线程任务等等。它能够在块设备和文件上工作。
Debian中国
2018/12/21
3.5K0
腾讯云 CBS 性能测试用例参考
2、fio测试建议在空闲的、未保存重要数据的硬盘上进行,并在测试完后重新制作文件系统。请不要在业务数据硬盘上测试,避免底层文件系统元数据损坏导致数据损坏。
腾讯云计算产品团队
2018/07/02
5.1K0
Greenplum性能分析
http://tapd.oa.com/Greenplum/markdown_wikis/view/#1010134541008425443
洛杉矶
2020/10/22
1.5K0
工具| IO测试fio详解
FIO是一款开源的 I/O 压力测试工具,主要是用来测试磁盘的IO性能。它可以支持多种不同的I/O引擎。
用户1278550
2021/11/26
8K0
【不知所云】腾讯云云硬盘性能概览
腾讯云云服务器:https://curl.qcloud.com/U9i22oWO 腾讯云云硬盘:https://console.cloud.tencent.com/cvm/cbs 在大家购买云服务器时,会对服务器进行配置,例如实例选项,硬盘大小,但是大家是否有去关注过云硬盘的选型呢?如下表所示,腾讯云云硬盘共有5个规格,按性能比较,从低到高分别为:高性能云硬盘、通用型 SSD 云硬盘、SSD 云硬盘、增强型 SSD 云硬盘、极速型 SSD 云硬盘
指剑
2024/01/10
5110
【不知所云】腾讯云云硬盘性能概览
主板硬件性能测试
项目需要使用的主板有很多性能需要经过测试之后才能用于开发使用,因此将Linux上一些常用的tools移植进板子进行测试。
jianghaibobo
2019/09/11
4.3K0
主板硬件性能测试
如何在 Linux 中使用 Fio 来测评硬盘性能
Fio(Flexible I/O Tester) 是一款由 Jens Axboe 开发的用于测评和压力/硬件验证的自由开源的软件。
用户8639654
2021/10/21
2K0
IO测试工具之fio详解
目前主流的第三方IO测试工具有fio、iometer和Orion,这三种工具各有千秋。
jwangkun
2021/12/23
12.8K0
linux 磁盘IO测试工具:fio (同时简要介绍dd工具测试)
FIO是测试IOPS的非常好的工具,用来对硬件进行压力测试和验证。磁盘IO是检查磁盘性能的重要指标,可以按照负载情况分成照顺序读写,随机读写两大类。
西湖醋鱼
2020/12/30
6.8K0
云盘文件系统比较:Ext4、XFS和Btrfs
在上一篇云硬盘性能分析的教程中,为大家介绍了如何评测云硬盘的读写性能。但是,我们使用硬盘,从来不是直接读写裸设备,而是通过文件系统来管理和访问硬盘上地文件。不少朋友询问,文件系统该如何对比,又该如何选择呢?
溪歪歪
2021/01/03
13.2K6
云盘文件系统比较:Ext4、XFS和Btrfs
从传统运维到云运维演进历程之软件定义存储(四)
前面系列已经讲完了硬件选型、部署、调优,在上线之前呢需要进行性能存储测试,本章主要讲述下测试Ceph的几种常用工具,以及测试方法。
DevinGeng
2019/04/09
1.7K0
从传统运维到云运维演进历程之软件定义存储(四)
ceph分布式存储-集群容量评估
cpu型号: Intel(R) Xeon(R) CPU E5-2630 v4 @ 2.20GHz cpu核数: 40 硬盘: hdd
Lucien168
2020/07/20
2.2K0
fio基础7
; -- end job file -- Here we have no global section, as we only have one job defined anyway. We want to use async io here, with a depth of4foreach file. We also increased the buffer size used to32KB and define numjobs to4to fork 4 identical jobs. The result is4 processes each randomly writing to their own 64MB file. Instead ofusing the above job file, you could have given the parameters on the command line. For this case, you would specify: $ fio --name=random-writers --ioengine=libaio --iodepth=4 --rw=randwrite --bs=32k --direct=0 --size=64m --numjobs=4When fio is utilized as a basis ofany reasonably large test suite, it might be desirable toshare a setof standardized settings across multiple job files. Instead of copy/pasting such settings, anysection may pull in an external .fio file with'includefilename' directive, asin the following example: ;-- start job file including.fio -- [global] filename=/tmp/test filesize=1m include glob-include.fio [test] rw=randread bs=4k time_based=1 runtime=10 include test-include.fio ; -- end job file including.fio -- ; -- start job file glob-include.fio -- thread=1 group_reporting=1 ; -- end job file glob-include.fio -- ; -- start job file test-include.fio -- ioengine=libaio iodepth=4 ; -- end job file test-include.fio -- Settings pulled into a section apply to that section only (except global section). Include directives may be nested in that any included file may contain further include directive(s). Include files may not contain [] sections. 4.1 Environment variables ------------------------- fio also supports environment variable expansion in job files. Any sub-string of the form "${VARNAME}" as part of an option value (in other words, on the right of the `='),willbeexpandedtothevalueoftheenvironmentvariablecalledVARNAME.Ifnosuchenvironmentvariableisdefined,orVARNAMEistheemptystring,theemptystringwillbesubstituted.Asanexample,let's look at a sample fio invocation and job file: $ SIZE=64m NUMJOBS=4 fio jobfile.fio ; -- start job file -- [random-writers] rw=randwr
franket
2022/04/24
4650
相关推荐
Windows磁盘性能压测(2)-Fio
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验