腾讯云硬盘性能指标及测试方法介绍

性能指标
衡量云硬盘产品的性能指标主要包括IOPS、吞吐量和访问时延。
IOPS(Input/Output Operations per Second)
IOPS指每秒能处理的I/O个数,表示云硬盘处理读写(输出/输入)的能力,单位为次。如果您需要部署事务密集型应用,例如数据库类应用等典型场景,需要关注IOPS性能。其中,只有挂载到I/O优化的云主机时,SSD云盘才能获得期望的IOPS性能。 常用的IOPS指标包括顺序操作和随机操作,如下表所示。

指标

描述

数据访问方式

总IOPS

每秒执行的I/O操作总次数

对硬盘存储位置的不连续访问和连续访问

随机读IOPS

每秒执行的随机读I/O操作的平均次数

对硬盘存储位置的不连续访问

随机写IOPS

每秒执行的随机写I/O操作的平均次数

顺序读IOPS

每秒执行的顺序读I/O操作的平均次数

对硬盘存储位置的连续访问

顺序写IOPS

每秒执行的顺序写I/O操作的平均次数

吞吐量(Throughput)
吞吐量是指单位时间内可以成功传输的数据数量,单位为MB/s。如果您需要部署大量顺序读写的应用,例如Hadoop离线计算型业务等典型场景,需要关注吞吐量。
访问时延(Latency)
访问时延是指块存储处理一个I/O需要的时间,单位为s、ms或者μs。过高的时延会导致应用性能下降或报错。
如果您的应用对高时延比较敏感,例如数据库应用,建议您使用高性能型云盘类产品。
如果您的应用偏重数据吞吐能力,对时延相对不太敏感,例如Hadoop离线计算等吞吐密集型应用,建议您使用容量型或者性能优化型类产品。

容量(Capacity)
容量是指存储空间大小,单位为TiB、GiB、MiB或者KiB。云硬盘容量按照二进制单位计算,表示1024进位的数据大小,例如,1GiB=1024MiB。
容量无法衡量云硬盘性能,但对于存储设备而言,不同的容量能达到的性能不同。容量越大,存储设备的数据处理能力越强。相同类型云硬盘产品的单位容量的I/O性能均一致,但云盘性能随容量增长而线性增长,直至达到该类型云硬盘的单盘性能

云硬盘性能指标

参数

容量型云硬盘

性能型

性能优化型云硬盘

高性能型云硬盘

单盘最大容量

32TB

4TB

32TB

32TB

单盘最大IOPS

2200

3000

5000

20000

单盘最大吞吐量(MB/s)

150

150

180

350

单路径随机写访问时延

5-10ms

3-5ms

1-3ms

0.5-2ms

*单盘最大IOPS性能计算公式 

IOPS=2200

IOPS=min{1000 + 6 * 容量,3000}

IOPS=min{1800+8*容量,5000}

IOPS=min{2000+30*容量,20000}

*单盘最大吞吐量性能计算公式 

吞吐量=150MBps

吞吐量=min{80 + 0.1 * 容量,180}MBps

吞吐量=min{110+0.15*容量,180}MBps

吞吐量=min{120+0.5*容量,350}MBps

数据可靠性

99.9999999%

99.9999%

99.9999999%

99.9999999%

典型应用场景

满足企业大容量块存储的办公需求,适用于大容量、读写速率要求不高的应用场景

MySQL、Oracle、SQL Server等中小型关系数据库应用

MySQL、中大型开发测试应用场景

 

满足MySQL、SQL Server等中大型关系数据库应用,提供较高IOPS和吞吐性能

 

单盘性能说明:

以单块高性能型云硬盘最大IOPS计算公式为例:起步2000,每GiB增长30,上限为20000。

以单块高性能型云硬盘最大吞吐量计算公式为例:起步120MB/s,每GiB增长0.5MB/s,上限为350MB/s。

腾讯硬盘性能测试
本节主要介绍在Linux实例中使用FIO工具测试云硬盘性能,包括IOPS,吞吐量
您已经创建了待测试的云硬盘,并将云硬盘挂载到云主机上
由于不同测试工具有性能误差,云硬盘产品测试工具建议使用FIO。
若使用FIO工具进行裸盘测试,不建议在已创建文件系统的磁盘上测试,因为FIO性能测试裸盘会破坏文件系统。如果需要,请在测试开始前对磁盘数据进行备份,防止造成数据丢失。
本文为Linux系统下采用FIO工具的测试,以此作为云硬盘产品性能指标参考。Linux系统和Windows系统都推荐使用FIO工具测试云硬盘性能。
操作步骤
1. 连接云主机,切换为root用户
2. 安装FIO性能测试工具;
 yum install libaio -y
 yum install libaio-devel -y
yum install fio -y

 3. 确认云硬盘是否已经4KB对齐。
 fdisk -lu
 返回的结果中,若Start值能被8整除则是4KB对齐。否则,请完成4KB对齐后再继续性能测试。
Device     Boot Start      End  Id System
 /dev/vda1  *     2048 58598521   83 Linux

4. 运行以下命令测试云硬盘性能。
随机写IOPS
 fio -direct=1 -iodepth=128 -rw=randwrite -ioengine=libaio -bs=4k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=/tmp/fiotest -name=Rand_Write_IOPS_Test
随机读IOPS
 fio -direct=1 -iodepth=128 -rw=randread -ioengine=libaio -bs=4k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=/tmp/fiotest -name=Rand_Read_IOPS_Test
顺序写吞吐量
 fio -direct=1 -iodepth=64 -rw=write -ioengine=libaio -bs=1024k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=/tmp/fiotest -name=Write_BW_Test
 顺序读吞吐量
fio -direct=1 -iodepth=64 -rw=read -ioengine=libaio -bs=1024k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=/tmp/fiotest -name=Read_BW_Test

参数

说明

Direct

表示数据写是否经过缓存,0表示经过缓存,1表示不经过缓存

Iodepth

表示测试时的每个线程的IO队列深度,即每个线程的IO并发数

Rw

表示测试时的IO读写模式

read

顺序读

write

顺序写

randread

随机读

randwrite

随机写

randrw

混合随机读和写

ioengine

定义fio如何下发IO请求,通常有同步IO和异步IO:

l 同步IO一次只能发出一个IO请求,等待内核完成后才返回。这样对于单个线程IO队列深度总是小于1,但是可以透过多个线程并发执行来解决。通常会用16~32个线程同时工作把IO队列深度塞满。

l 异步IO则通常使用libaio这样的方式一次提交一批IO 请求,然后等待一批的完成,减少交互的次数,会更有效率。

 

bs

表示单次I/O的块文件大小

size

表示测试文件的大小

numjobs

表示测试线程数

runtime

表示测试时长

group_reporting

表示测试结果里汇总每个进程的统计信息,而非以不同job汇总展示信息。

filename

表示测试文件的名称

name

表示该测试任务名称,可随意定义

标签