原创

云硬盘性能测试

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

  • SSD 云硬盘:SSD 云硬盘是基于全 NVMe SSD 存储介质,采用三副本的分布式机制,提供低时延、高随机 IOPS、高吞吐量的 I/O 能力及数据安全性高达99.9999999%的高性能存储。SSD 云硬盘适用于对 I/O 性能有较高要求的场景。
  • 高性能云硬盘:高性能云硬盘是腾讯云推出的混合型存储类型,通过 Cache 机制提供接近固态存储的高性能存储能力,同时采用三副本的分布式机制保障数据可靠性。高性能云硬盘适用于高数据可靠性要求、普通中度性能要求的中小型应用和 MySQL、SQL 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:随机读/写测试,能反映硬盘的时延性能

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

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

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

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

执行以下命令,测试高性能云硬盘的随机混合读写时延性能。

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:顺序读/写测试,能反映硬盘的吞吐性能

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

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

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

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。

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

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

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性能

测试结果指标介绍

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= 磁盘利用率

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

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • wwwyh992099com请拨18687679495_银河国际云硬盘性能测试

    云硬盘是一种高可用、高可靠、低成本、可定制化的网络块存储,可作为云服务器的独立可扩展硬盘使用。它提供数据块级别的数据存储,采用三副本的分布式机制,为云服务器提供...

    用户7106032
  • 评测云硬盘读写性能

    通过讲解如何优雅扩容云硬盘,我们了解了云盘连接到服务器上的具体操作过程。那么,如何进一步了解已挂载硬盘的实际性能呢?你或许会疑惑,测试硬盘性能,为什么不能用Li...

    溪歪歪
  • 使用diskbenchmark测试硬盘性能

    颇忒脱
  • AS SSD Benchmark(固态硬盘性能测试)

    AS SSD Benchmark 是一款 SSD 固态硬盘测试工具,可测试固态硬盘(SSD)的性能。该工具包含六个综合和三复制测试。专门用于 SSD (固态硬盘...

    萌海无涯
  • hdparm 命令使用;关闭硬盘 HDD cache; 硬盘读写性能测试;

    最新需要使用硬盘做一些测试,需要使用到hdparm工具,并进行了解,并进行简要记录;

    xuyaowen
  • Linux使用hdparm命令来测试SSD硬盘性能

    青阳
  • 测试硬盘速度

    -t perform device read timings #不使用预先的数据缓冲, 标示了Linux下没有任何文件系统开销时磁盘可以支持多快的连续数...

    胡齐
  • 主板硬件性能测试

    项目需要使用的主板有很多性能需要经过测试之后才能用于开发使用,因此将Linux上一些常用的tools移植进板子进行测试。

    jianghaibobo
  • Linux 中使用 Fio 测评硬盘性能

    Fio(Flexible I/O Tester) 是一款由 Jens Axboe 开发的用于测评和压力/硬件验证的自由开源的软件。它支持 19 种不同类型的 I...

    Debian中国
  • dd硬盘读写性能常用的两种测试命令

    先解释下什么是dd命令,dd是 Linux/UNIX 比较有用的命令之一,是用来指定块进行拷贝,并在拷贝的时候指定转换。

    天天向上_82634
  • dd命令测试硬盘

    dd bs=64k count=4k if=/dev/zero of=test oflag=dsync(这种方法是最严格的,可以模拟数据库的插入操作,所以很慢,...

    用户1168904
  • Sysbench测试云MySQL性能

    最近看到一个网友在问(请问一下,每天3~4W次的读写,用什么样子的配置比较好,麻烦推荐一个配置,谢谢 MySQL5.7的.)看着应该是一个比较简单的场景,不过笔...

    研究僧
  • 磁盘文件读性能测试

     Timing buffered disk reads: 2454 MB in  3.00 seconds = 817.84 MB/sec

    一见
  • 云端测试和性能测试实战

    随着越来越多的应用程序开始采用云端部署的方式,包括微软 Azure、谷歌云、亚马逊 AWS 或者国内的阿里云、腾讯云等, 怎样确保在本地正常工作的生产代码(Pr...

    小老鼠
  • HDD机械硬盘的性能

    注:事实上还有一个传输时间(同样位于公式的分母),即完成传输所请求的数据所需要的时间,它取决于数据传输率,其值等于数据大小除以数据传输率。由于主流的SAS、SA...

    斯武丶风晴
  • 云与性能测试 | 洞见

    近年来,随着云计算技术的发展和各种诸如AWS、GCP、阿里云等云平台的日趋成熟,越来越多的的用户选择把系统搭建在云端,因此云测试的概念随即产生。云测试看字面意思...

    ThoughtWorks
  • 【在线分享】腾讯云高性能云硬盘入门与实战

    腾讯云技术社区特别邀请到了负责云硬盘CBS产品经理和研发工程师进行在线分享,为大家全面地介绍云硬盘服务的具体情况,同时分享一些云硬盘使用的最佳实践。

    云加社区
  • 硬盘IO性能估算入门

    IO是输入输出指令,操作系统向存储控制器下发一个读或者写数据的操作指令,控制器下发地址和数据给存储设备,并返回结果给存储控制器,最后到达操作系统。操作系统的一个...

    莫晓东do
  • Windows磁盘性能压测(1)-DiskSpd

    有关Windows磁盘性能压测,笔者还是强烈推荐使用微软自己开源的压测工具DiskSpd。当然,如果要使用其他磁盘性能压测工具也是可以的,比如:IOMeter(...

    雷龙

扫码关注云+社区

领取腾讯云代金券